Fix for 6888888 breaks the build

Kelly O'Hair Kelly.Ohair at Sun.COM
Fri Oct 16 22:06:39 UTC 2009


Tim Bell wrote:
>> Andrew John Hughes wrote:
> (snip!)
>>> I think there's still an issue here that makes this patch worth
>>> pushing.   The 6888888 fix didn't cause the bug, but merely made it
>>> visible to a lot more people.  So 6889255 will only hide it again.
>>> The build uses JAVA_TOOLS_DIR for javac, javah and javadoc:
>>>
>>>   # If no explicit tools, use boot tools (add VM flags in this case)
>>>   JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
>>>                   $(JAVACFLAGS)
>>>   JAVAH_CMD     = $(JAVA_TOOLS_DIR)/javah \
>>>                   $(JAVAHFLAGS)
>>>   JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
>>>
>>>
>>> but only when LANGTOOLS_DIST is not defined.  Normally, langtools is
>>> built first so LANGTOOLS_DIST is defined.  What your fix for 6888888
>>> did was cause the setting for JAVAH to get used in all cases and, as
>>> JAVA_TOOLS_DIR defaults to ALT_JDK_IMPORT_PATH rather than BOOTDIR
>>> this fails in many cases as the user sets ALT_BOOTDIR not
>>> ALT_JDK_IMPORT_PATH.
>>>
>>> In jdk_generic_profile, it seems ALT_JDK_IMPORT_PATH is set to
>>> ${jdk_instances}/${importjdk} if it exists.  On Solaris,
>>> ${jdk_instances} is set to /usr/jdk/instances which probably explains
>>> why Sun engineers building on Solaris may not see this bug either.
>>> ${jdk_instances} is set to /opt/java on GNU/Linux, whereas distros
>>> tend to have standardised on /usr/lib/jvm.  It's simply "C:" on
>>> Windows.  As mentioned on IRC, release engineering are setting
>>> ALT_JDK_IMPORT_PATH explicitly so also would never see this bug.
>>>
>>> As we presumably want the tools from the bootstrap JDK, and not from
>>> 'the import JDK to be used to get hotspot VM if not built', I suggest
>>> we switch to BOOTDIR by default by applying this patch.
>>>   
> 
> Jonathan Gibbons wrote:
> 
>> This probably explains problems I've reported informally to Kelly a
>> while back, but never got around to formally investigating.     FWIW,
>> this fix does not interfere with the fix for 6889255 coming up, and this
>> fix seems like a good idea to me.
> 
> OK - I filed a new bug report:
>  6892021 "Build tools from ALT_JDK_IMPORT_PATH versus BOOTDIR"
> with a pointer to this email thread.
> 
> Kelly - do you have an opinion on this?

The goal was that a full jdk build would never need a ALT_JDK_IMPORT_PATH
at all. And all class files would have been created by the LANGTOOLS_DIST
compiler (hotspot was a special case, using the ALT_BOOTDIR to compile).
But no class files would ever be created by the javac in ALT_BOOTDIR.

ALT_JDK_IMPORT_PATH was supposed to only come into play when someone
was doing what I called a 'partial build', and it provided the missing
pieces, including a jdk7 flavored javac compiler.

The other tools were less well defined in their use.
The jar tool in ALT_BOOTDIR is always used to build jars as I recall.

The javah and javadoc story I'm not so sure about. I thought they would
have followed the same rules as javac.

Not sure my ramblings are helping here....  :^(

-kto

> 
> Thanks-
> 
> Tim



More information about the build-dev mailing list