Am 12.08.2011 23:27, schrieb Stuart Marks:
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@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
Thanks, it now builds like a charm.
-- Sebastian