Build inside jdk dir of openjdk8 forest doen't not work

Stuart Marks stuart.marks at
Fri Aug 12 21:27:43 UTC 2011

We've run into this before; this is quite irritating. The bug is logged as

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.


[*] 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/
> 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/' 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/
> rm -f ../../../../build/linux-i586/tmp/sun/
> /usr/lib/jvm/java-1.6.0-openjdk/bin/jar cf
> ../../../../build/linux-i586/tmp/sun/ -C
> ../../../../build/linux-i586/tmp/sun/ 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/ :
> no such file or directory
> make[1]: ***
> [../../../../build/linux-i586/tmp/sun/] 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