issues with jdk/make/modules/modularize.sh
Jonathan Gibbons
Jonathan.Gibbons at Sun.COM
Tue Jan 19 14:50:56 PST 2010
On 01/19/2010 02:38 PM, Mandy Chung wrote:
>
> 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
>
Mandy,
I'm referring to my latest version of javac, that I have yet to push to
a public forest. However, if modularize.sh will go away soon, I won't
worry about it too much.
-- Jon
More information about the jigsaw-dev
mailing list