issues with jdk/make/modules/modularize.sh
Jonathan Gibbons
Jonathan.Gibbons at Sun.COM
Tue Jan 19 13:52:03 PST 2010
The current jigsaw forest does not build with the latest javac that I
would like to put back.
The build fails like this:
> make[3]: Entering directory
> `/mnt/w/jjg/work/jigsaw/jigsaw.testbuild/jdk/make/modules'
> SRC=../../src/share/modules
> BIN=/mnt/w/jjg/work/jigsaw/jigsaw.testbuild/build/linux-amd64/bin
> CLASSES=/mnt/w/jjg/work/jigsaw/jigsaw.testbuild/build/linux-amd64/classes
> TMP=/mnt/w/jjg/work/jigsaw/jigsaw.testbuild/build/linux-amd64/tmp/jigsaw
> MLIB=/mnt/w/jjg/work/jigsaw/jigsaw.testbuild/build/linux-amd64/lib/modules
> \
> JIGSAW_TRACE=3 sh modularize.sh boot base awt swing tools
> -- jdk.boot
> error: module library not found:
> /mnt/w/jjg/work/jigsaw/jigsaw.testbuild/build/linux-amd64/lib/modules
> 1 error
In modularize.sh I see some lines of the form:
$BIN/javac -source 7 -d $MCLS -modulepath $SRC $SRC/$m/module-info.java
This line looks suspect, if only for putting what looks like a source
directory on the module path. It should probably be:
$BIN/javac -source 7 -d $MCLS -modulepath $MCLS -sourcepath $SRC
$SRC/$m/module-info.java
It's also not the best way to invoke javac -- once per source file,
using sourcepath, as compared to a single invocation for all relevant
module-info.java files.
Finally, this is the beginning of the iceberg of how to use javac to
bootstrap the module system into existence.
The error message from javac (module library not found) indicates that
javac is trying to do a normal "end user" compilation, involving the
default system module library. This is new functionality in this version
of javac.
The question is, how should we be handling this situation here?
-- Should we simply create (mkdir) an empty modules directory to keep
javac happy?
-- Or, should javac have an option to disable looking for the system
module library?
-- Or should javac not be looking for the system module library if it
can satisfy all references via the command line.
-- Or should javac be running in a special bootstrap mode that is used
for internal cases like this?
-- Jon
More information about the jigsaw-dev
mailing list