Problems with --with-override and gensrc targets

Mikael Gerdin mikael.gerdin at oracle.com
Wed Nov 4 08:46:13 UTC 2015


Hi Magnus,

On 2015-11-03 18:23, Magnus Ihse Bursie wrote:
> On 2015-11-02 15:41, Mikael Gerdin wrote:
>> Hi build-devs,
>>
>> I was trying to do a fancy setup with multiple different hotspot
>> directories in a single source tree to create some builds for
>> performance measurements.
>>
>> I used the configure flag --with-override-hotspot=hotspot-foo
>> and when I attempted a "make images" I get the following error:
>>
>> $ make CONF=override-foo images
>> Building configuration 'override-foo' (matching CONF=override-foo)
>> Compiling 5 files for BUILD_GENMODULESLIST
>> Building configuration 'override-foo' (matching CONF=override-foo)
>> Building target 'images' in configuration 'override-foo'
>> Compiling 8 files for BUILD_TOOLS_LANGTOOLS
>> Compiling 14 files for BUILD_JVMCI_OPTIONS
>> Compiling 3 files for BUILD_JVMCI_SERVICE
>> Error: Could not find or load main class com.sun.tools.javac.Main
>> Error: Could not find or load main class com.sun.tools.javac.Main
>> Gensrc-jdk.vm.ci.gmk:39: recipe for target
>> '/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_options/_the.BUILD_JVMCI_OPTIONS_batch'
>> failed
>> make[3]: ***
>> [/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_options/_the.BUILD_JVMCI_OPTIONS_batch]
>> Error 1
>> make[3]: *** Waiting for unfinished jobs....
>> Gensrc-jdk.vm.ci.gmk:48: recipe for target
>> '/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_service/_the.BUILD_JVMCI_SERVICE_batch'
>> failed
>> make[3]: ***
>> [/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_service/_the.BUILD_JVMCI_SERVICE_batch]
>> Error 1
>> make/Main.gmk:103: recipe for target 'jdk.vm.ci-gensrc-hotspot-foo'
>> failed
>>
>> From what I gather the problem is that the hotspot directory name is
>> encoded in the make target name: 'jdk.vm.ci-gensrc-hotspot-foo' but in
>> make/Main.gmk the dependencies are set up as follows:
>>
>> HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
>> $(HOTSPOT_GENSRC_TARGETS): interim-langtools
>>
>> but since 'jdk.vm.ci-gensrc-hotspot-foo' does not match the
>> %-gensrc-hotspot filter no dependency is created on interim-langtools
>> and the build fails because it can't find the javac main class.
>>
>> I had a stab at fixing it by the following change:
>> diff -r 1697e1f12275 make/Main.gmk
>> --- a/make/Main.gmk
>> +++ b/make/Main.gmk
>> @@ -110,7 +110,7 @@
>>  JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
>>  LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools,
>> $(GENSRC_TARGETS))
>>  CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
>> -HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
>> +HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-$(shell basename
>> $(HOTSPOT_TOPDIR)), $(GENSRC_TARGETS))
>>
>> but I suspect that a more complete change would involve the other
>> --with-override-foo flags and perhaps avoiding using the shell to get
>> the directory part of HOTSPOT_TOPDIR
>>
>> I guess nobody has used the --with-override flags for a while :)
>
> I didn't think anyone used them at all. They have not been tested or
> actively supported for ages, and I've been thinking about removing them
> for quite some time. I thought everyone in Hotspot worked with complete
> forests these days.

My idea was to do something like:
jdk9/hs-rt/hotspot
jdk9/hs-rt/hotspot-experiment1
jdk9/hs-rt/hotspot-experiment2

and getting binaries which can resolve the sources in a debugger for all 
the builds without pushing and popping patches.

I could just as well do (and I do that now)
jdk9/hs-rt/hotspot
jdk9/hs-rt-experiment1/hotspot
jdk9/hs-rt-experiment2/hotspot

It's not a big issue, I just wanted to try the flag.

>
> Is this functionality you'd like to see us revive (and keep)?

No, I'm fine with it going away since it's been broken without anyone 
complaining for what appears to be a long time.

/Mikael

>
> /Magnus
>
>>
>> /Mikael
>




More information about the build-dev mailing list