JDK8 Preliminary Repository Layout
Dr Andrew John Hughes
ahughes at redhat.com
Fri Mar 11 00:46:26 UTC 2011
On 19:27 Wed 09 Mar , Phil Race wrote:
> Andrew,
>
> Whilst almost everything you wrote is something I agree with (like getting
> jcheck out there, not adding additional build tools/complexity), the one
> thing I quite like right now comes up here I'd like to keep is the
> separate repos.
> Its not just hotspot, but I've been working on JDK for a long time now,
> since before there was a hotspot and last year I built hotspot for the
> first time,
> and even then only because I was working on the VS2010 compiler upgrade.
>
> So I like that hotspot and jaxp/jaxws can be pre-built and pulled from an
> import JDK in a way that doesn't slow down my builds, bloat the source
> I need to pull via hg etc etc.
>
Well HotSpot is one thing I think works well as a separate repository.
It allows us to have a stable branch for OpenJDK6 for example. The only
real thing that stops it being independent is the servicability agent,
which, IME, would be better held in the JDK. That would also mean that
the existing rules for building java classes could be used, rather than
reinventing it all in the HotSpot makefiles as at present.
Likewise, I think langtools works as a separate entity. The other three
(corba, jaxp, jaxws) only really exist separately because no-one on the
OpenJDK project takes care of them. JAXP and JAXWS get irregular build
drops, but I don't think I've seen anything more than build fixes for
CORBA. They would be less work if maintaining in the JDK directory
as they'd share the build infrastructure. They are hardly huge (unlike
HotSpot vs. JDK) and there are dependencies between the JDK and these.
I probably should provide some context. During this week, I've been
looking at getting OpenJDK bootstrapping well when OpenJDK is not the
bootstrap JDK (i.e. sun.* and com.sun.* classes are not available).
To cut a long story short, it's a week later and I'm still only at
HotSpot. So far, I've found dependencies in all but JAXP that mean
that the build has to be patched to reference other repositories
(mainly JDK but also langtools in one case). JAXWS has to be able to
find com.sun.net.httpserver, annotation/javadoc classes and the JAXP
classes, while CORBA needs the sun.tools stuff and HotSpot needs
com.sun.jdi for the servicability agent.
Now you may think this isn't relevant and expect people to just use
OpenJDK to build. Well, this also becomes a problem if one of these
APIs changes. You're building stuff in CORBA, JAXWS and HotSpot against
a different API than the one they will eventually run against, hiding
issues which could be exposed at build time until run time.
I've already run across one place where this is true. HotSpot builds
the servicability agent with -source 1.4 -target 1.4. Why? Because
of incompatibilies between its implementation and the com.sun.jdi
interfaces which require Comparable<T> not Comparable.
> Maybe this doesn't matter to people who want to pull a full forest but
> its great for those working on specific components. Which I believe is
> most developers.
>
It's hard to generalise, especially with an open source project. These
mailing lists show that there will be quite a few newbies who follow
the build guides and try downloading the entire forest. As was mentioned
elsewhere in this discussion, the tarballs would be better for this
scenario as you don't really need the repos unless you're going to create
a patch (and even then, there are ways to do that without them).
My concern isn't the pull, but simply what makes best sense in terms
of maintenance, both of the code and the build system. Having independent
repositories also means duplicate build code and cross-repo dependencies.
With HotSpot and langtools it makes sense as you have independent entities
(the VM and javac et. al.). I don't think it makes sense with code that
has to then be imported into the JDK build.
> -phil.
>
>
> On 3/9/2011 4:48 PM, Dr Andrew John Hughes wrote:
> > On 18:32 Tue 08 Mar , Kelly O'Hair wrote:
> >> First, if we talk about the mercurial forests, it has nothing to do with the Mercurial Forest Extension.
> >> What we really have is a set of nested repositories, sometimes called our "forest" of repositories.
> >>
> >> This email is just about the actual layout of the repositories for jdk8.
> >>
> >> The initial thinking at this time is that the openjdk8 open forest will look very much like openjdk7:
> >>
> >> openjdk8/
> >> corba/
> >> jaxp/
> >> jaxws/
> >> jdk/
> >> hotspot/
> >> langtools/
> >>
> >> 7 repositories total. Cloned from the openjdk7 repos so we will have all the openjdk7 history in the openjdk8 repositories.
> >>
> >> Just for discussion sake, not that you can see what is behind the closed curtains, we are considering changing
> >> the closed overlay a little, from the current jdk7 (bold is a closed repo):
> >>
> >> jdk7/
> >> corba/
> >> deploy/
> >> jaxp/
> >> jaxws/
> >> jdk/
> >> src/closed/
> >> test/closed
> >> make/closed/
> >> hotspot/
> >> src/closed/
> >> test/closed
> >> install/
> >> langtools/
> >> pubs/
> >>
> >> To something a little simplier like:
> >>
> >> jdk8/
> >> corba/
> >> deploy/
> >> jaxp/
> >> jaxws/
> >> jdk/
> >> closed/{src,test,make}
> >> hotspot/
> >> closed/{src,test,make}
> >> install/
> >> langtools/
> >> pubs/
> >>
> >> The existence of these closed repos should not be a surprise, and it should have no impact on the openjdk itself.
> >> We are just trying to consolidate and have fewer repositories. Just thought it might be of interest.
> >>
> > Not surprised. Also don't really care where you put them as I don't seem to have them either way ;-)
> >
> > What I would ask is do the projects get this as well? Specifially, I'd like an icedtea/jdk8 at the same time please.
> >
> >> But back to the openjdk8 forest.
> >>
> >> Other ideas were considered:
> >> * Folding jaxp/jaxws into the root or jdk8/jdk repo
> > Sounds good. jdk8/jdk would make more sense as jaxws depends on some classes that are in the jdk
> > tree (com.sun.net.httpserver) and we could then get rid of the Ant junk. It would be good to have
> > the code there too so we can once again track changes. The recent security issue was a nightmare
> > due to the unavailability of the source code.
> >
> >> * Separating out the jdk demos from the jdk repo to a separate "demos" repository
> > Makes sense. Having an option to disable them would be a good first step.
> >
> >> * Separating out the client (awt/swing/etc) code from the jdk repo into a separate repo
> > Why would we want to do this? IME, there are lots of interdependencies with the other code and
> > this would make the build a nightmare.
> >
> >> * Updating the corba sources changing it to an ant build
> > Please, no! These Ant builds are already a nightmare and an order of magniture harder to debug than
> > the Makefiles. Why you want to require a build system that requires an entire JDK setup (possibly
> > bringing another into the mix beyond the bootstrap JDK) is beyond me.
> >
> > What would make much more sense is to just add corba into the jdk tree. It actually requires sun.tools
> > classes to compile rmic anyway so it would make much more sense there.
> >
> > Hey, I'd just make it all one repository as they all interdepend on each other, but the HotSpot folks
> > probably wouldn't like that... ;-) Moving the HotSpot servicability agent into the JDK, where the
> > interfaces it uses lives, might be a good idea though. I'm currently working on a patch which fixes
> > up a mismatch between the HotSpot SA implementation and the interfaces in the JDK which has existed
> > for who knows how long (it's certainly in OpenJDK6)...
> >
> >> None of this seemed urgent to do out of the gate, or delay getting a preliminary jdk8 layout defined.
> >>
> > No, I agree with that. Splitting off OpenJDK8 already seems overdue.
> >
> >> I know there is some interest in pulling the actual jaxp/jaxws sources back into their repos, that will
> >> be discussed separately, we have multiple issues with that, but I am well aware of the pains that the
> >> source drop zip files have created.
> >>
> > The problem is less technical and more social; there is no obvious way to interact with the JAXP and JAXWS
> > side of things. We just get these zips of code with no idea of what changes are in there or why.
> >
> > Basically, they shouldn't work either like they do now or did before, but like everything else in OpenJDK
> > with visible commits. Hey, maybe we could even have some mailing list discussion if we're very lucky...
> >
> >> As always, we would like to get comments, or additional ideas.
> >>
> >> Separate topics:
> >> * Forest Extension and it's replacement
> > Do we really need one? Current status quo (get_source.sh) works fine.
> >
> >> * Mercurial server update to 1.8 or newer
> > I guess this is related to the forest issue.
> >
> >> * Build&Test system [1]
> >> * Open bug tracking system [2]
> >>
> > You missed off open sourcing that jcheck thing... that's the biggest problem I have with
> > the Mercurial server. :-)
> >
> >> -kto
> >>
> >> [1] http://mail.openjdk.java.net/pipermail/build-dev/2011-February/004112.html
> >> [2] http://mail.openjdk.java.net/pipermail/web-discuss/2011-March/000153.html
> >>
> >>
>
--
Andrew :)
Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)
Support Free Java!
Contribute to GNU Classpath and IcedTea
http://www.gnu.org/software/classpath
http://icedtea.classpath.org
PGP Key: F5862A37 (https://keys.indymedia.org/)
Fingerprint = EA30 D855 D50F 90CD F54D 0698 0713 C3ED F586 2A37
More information about the build-dev
mailing list