issues with jdk/make/modules/modularize.sh

Mandy Chung Mandy.Chung at Sun.COM
Tue Jan 19 14:38:34 PST 2010


Jonathan Gibbons wrote:
>  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.
>
Jon,

I'm working on merging the modules build makefile changes in TL with the 
jigsaw modules build.  modularize.sh and imagine.sh will go away.

I have changed the makefile to compile all module-info.java files in one 
javac invocation in my repo.  As this is new javac functionality, I 
didn't run into the problem you described above in my repo.  
modularize.sh invokes jmod to install the module library.  I wonder if 
this issue is related to the invocaton to jmod in creating the module 
library.

Mandy

> 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