-Xbootclasspath/p in the JDK build
Jonathan Gibbons
jonathan.gibbons at oracle.com
Mon Apr 5 18:27:56 PDT 2010
Aaaargh.
The restrictions on bootclasspath are going to be an issue for building
JDK, because -Xbootclasspath/p is used in various places in the build
itself. In particular, this will be a problem when we set
SKIP_BOOT_CYCLE=false, because the first time round, the BOOT_DIR will
be set to JDK 6, and -Xbootclasspath/p can be used; the second time
round, the BOOTDIR will be the newly built JDK 7, and -Xbootclasspath/p
might not be available.
Here are places where I know -Xbootclasspath/p is used in the build.
1. In the langtools build.xml file.
The langtools build uses the BOOT_DIR javac to compile the new javac
classes, then immediately uses those classes on the bootclasspath to
recompile javac again, for use in the final product. This ensures that
the javac in the final JDK is built with the latest sources (and not
built with the BOOT_DIR javac.) Both the interim javac and the final
javac are made available to the downstream parts of the build.
2. In the jdk Makefiles
The interim javac referred to in the previous section is used to compile
most of the classes in the other repositories. This is done by setting
JAVAC_CMD to use the BOOT_DIR javac with the newly compiled javac
classes on the bootclasspath.
There are 3 ways forward that I can see.
1. Support -Xbootclasspath/p: This is arguably simpler than supporting
plain -Xbootclasspath.
2. Leave javac, javadoc, javah to run in JVM legacy mode so that
-Xbootclasspath/p: continues to work for these tools. The latest
versions of these tools are all used in the build using BOOT_DIR and
-Xbootclasspath.
3. Figure out rules to examine BOOT_DIR and decide if -Xbootclasspath is
going to be available, or if we need to build a temporary module library
for use with the -L option. Note this will require us to address the
issues with -L that I raised in [1].
In any case, if this has not already been implemented, I would recommend
that the launcher should reject (give an error) options like
-Xbootclasspath if it is not going to accept them. Silently ignoring the
options if they are not applicable is almost certainly the wrong thing
to do.
-- Jon
[1] http://mail.openjdk.java.net/pipermail/jigsaw-dev/2010-April/000756.html
More information about the jigsaw-dev
mailing list