Build-infra with jigsaw, progress update

Erik Joelsson erik.joelsson at oracle.com
Wed Jun 20 03:04:05 PDT 2012


Hello,

A progress update on the build-infra with jigsaw work. In short: I've 
managed to bootstrap build a minimal workjdk and using this I have 
compiled all java classes in langtools, corba, jaxp, jaxws and jdk in 
module mode in one go, using the code layout from the shuffle-scripts. 
Details follows.

The source is just in my local repo. It's dependant on the changes we 
pushed into jdk/build last week. It also needs the moduleinfo files 
which still haven't been pushed afaik. I would also like to clean it up 
some before being ready for consumption by the jigsaw forest. I can 
publish a webrev if anyone wants to try it out. Only tested on linux_x64 
so far, but probably works on 32bit too.

Here is a description of the currently implemented bootstrap order. I 
will experiment with some other approaches too. Feedback is welcome.

1. langtools-bootstrap
In langtools:
* Compile buildtools (stripprop and genstubs, this also includes an 
almost full compile of the langtools source since genstubs depends on 
it), target bootjdk
* Process properties and generate sources
* Generate stubs for module and jigsaw classes in jdk repo
* Compile langtools using the stubs, target bootjdk

2. hotspot
* Build hotspot (nothing new here)

3. jdk-base
* Generate sources in the jdk.base module
* Compile classes in jdk.base in legacy mode
* Import libraries and jars from hotspot
* Compile the native libraries in jdk.base (libzip, libjava, libjli, 
libverify, libfdlibm, libnio, libnet)
* Generate jvm.cfg and currency.data
* Compile launchers (not all are needed at this point, but no 
dependencies block compiling all of them)
* Construct the workjdk image (A separate image might not be needed, but 
it keeps things cleaner) Copies the libs above+libjvm, the needed 
launchers (java, javac, jmod and javadoc), the classes from jdk.base and 
langtools bootstrap into workjdk/classes, and finally a jigsaw library 
is created using jmod in workjdk/lib/modules.

4. corba-gensrc
* Generate sources in corba (IDL, properties...)

5. jdk-modules
* Generate the rest of the sources and data files in the jdk repo
* Use the workjdk javac to compile the newsrc and gensrc dirs of all 
repos except hotspot. "Compiling 15795 files in batch BUILD_JDK_ALL"

Still missing:
* Compiling the rest of the native libs (not hard, just a lot of 
redirecting the source to newsrc layout and fixing the shuffle scripts 
to include all those native files)
* Demos and Samples?
* Images creation.

Next I will look at compiling the other repos separately as I suspect 
his will be preferable.

/Erik




More information about the jigsaw-dev mailing list