Build inside jdk dir of openjdk8 forest doen't not work
Stuart Marks
stuart.marks at oracle.com
Fri Aug 12 21:27:43 UTC 2011
We've run into this before; this is quite irritating. The bug is logged as
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6668018
Basically you can't do a jdk-subrepo-only build within a forest where you've
already done a full forest build. Attempting to do otherwise confuses the build
system and results in errors such as you see. [*]
There is a build system rewrite in the works, so we're hoping this problem goes
away when that happens.
I think what most of us do is to do full forest builds in a dedicated full
forest, and to do jdk-repo-only builds in a standalone jdk repo (not part of
the full forest). Note that when you do a jdk-repo-only build you have to set
ALT_JDK_IMPORT_PATH to point to a fully built JDK (e.g., one that you've
downloaded, or one that you've built in a separate forest).
There's a workaround given in the bug report, which is
$ cd jdk
$ touch `hg manifest`
$ cd make
$ make clean; make
But of course this means that you end up rebuilding all of the jdk subrepo. Not
as bad as a full forest rebuild though.
s'marks
[*] The gory details as we understand them:
The problem seems to be that the presence of files from a full forest build
confuses the build system when you try to do a build of only the jdk subrepo.
There is a hypothesis that this has something to do with Makefiles' use of
VPATH, but nobody's taken the time to track this down fully. When you're
building in the jdk subrepo, it might be that files in the full forest build
output area TOP/build make the build system think that things like sunec.jar
are already built. However, a subsequent step that uses sunec.jar looks for
that file within TOP/jdk/build and fails to find it there. Touching all the
files in the jdk subrepo forces a rebuild of that stuff into TOP/jdk/build.
On 8/12/11 2:10 PM, Sebastian Sickelmann wrote:
> I am sorry i have counted the ../ wrong.
>
> It seems to be that sun/security/ec classes are not compiled
>
> It tried the following
> sebastian at sebastian-laptop:~/deve/openjdk8/jdk/make/sun/security$ make all
> Begin Processing SUBDIRS: ec other action util krb5 jgss pkcs11 jgss/wrapper
> smartcardio tools
> make[1]: Entering directory
> `/home/sebastian/deve/openjdk8/jdk/make/sun/security/ec'
> Building lib:../../../../build/linux-i586/lib/i386/libsunec.so
> Begin parallel compiles: /home/sebastian/deve/openjdk8/jdk/make/sun/security/ec
> make[2]: Entering directory
> `/home/sebastian/deve/openjdk8/jdk/make/sun/security/ec'
> make[2]:
> `../../../../build/linux-i586/tmp/sun/sun.security.ec/obj/.files_compiled' is
> up to date.
> make[2]: Leaving directory
> `/home/sebastian/deve/openjdk8/jdk/make/sun/security/ec'
> Done with parallel compiles:
> /home/sebastian/deve/openjdk8/jdk/make/sun/security/ec
> /bin/mkdir -p ../../../../build/linux-i586/tmp/sun/sun.security.ec/unsigned
> rm -f ../../../../build/linux-i586/tmp/sun/sun.security.ec/unsigned/sunec.jar
> /usr/lib/jvm/java-1.6.0-openjdk/bin/jar cf
> ../../../../build/linux-i586/tmp/sun/sun.security.ec/unsigned/sunec.jar -C
> ../../../../build/linux-i586/tmp/sun/sun.security.ec/classes sun/security/ec \
> -J-XX:-PrintVMOptions -J-XX:+UnlockDiagnosticVMOptions -J-XX:-LogVMOutput
> -J-client -J-Xmx512m -J-Xms512m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m
> ../../../../build/linux-i586/tmp/sun/sun.security.ec/classes/sun/security/ec :
> no such file or directory
> make[1]: ***
> [../../../../build/linux-i586/tmp/sun/sun.security.ec/unsigned/sunec.jar] Error 1
> make[1]: Leaving directory
> `/home/sebastian/deve/openjdk8/jdk/make/sun/security/ec'
> make: *** [all] Error 1
>
> Ok it doen't compile because .files_compiled is up to date.
> But after a clean it compiles only all the .c files but no .java file and so
> jar will fail.
>
> -- Sebastian
>
>
>
More information about the build-dev
mailing list