Build succeeds even if JDK source file fails to compile
Mandy Chung
mandy.chung at oracle.com
Fri Dec 16 18:12:37 UTC 2011
On 12/16/2011 9:26 AM, Kelly O'Hair wrote:
> You are correct. This changeset was wrong.
>
Chris - good find.
> Mandy was asking me about this a while back
That was Wednesday - not long ago. jigsaw build has a similar issue:
http://hg.openjdk.java.net/jigsaw/jigsaw/jdk/diff/459b6cbb0de7/make/common/Rules.gmk
that I have fixed. I didn't get the chance to check on jdk8/tl yet.
Mandy
> and I was also noticing the problem with a recent
> problem Maurizio was having doing boot cycle builds on Linux, where javac failed, make did not stop,
> and merrily crashed later in javah. :^(
>
> -kto
>
> On Dec 16, 2011, at 6:13 AM, Chris Hegarty wrote:
>
>> I filed CR 7122235 for this issue.
>>
>> Forcing a compile time error of a JDK class by inserting some bad code is just ignored and the build continues, and appears to complete successfully.
>>
>> I believe the changes for CR 7116322 "enhance javac make rule with a little bit of instrumentation", caused this problem.
>>
>> Changeset for 7116322:
>> http://hg.openjdk.java.net/jdk8/tl/jdk/rev/43a630f11af6
>>
>> After the javac cmd is run there is a simple echo to indicate 'javac finished'. I am not a makefile expert, but I think the makefiles are checking the return code for this directive/rule and now will always see the successful return code of the echo, so it will never fail.
>>
>> Example:
>>
>> # Running javac: 18 files; in /export2/Users/chris/repos/jdk8/tl/buildFail/make/com/sun/net/ssl
>> /java/re/jdk/1.8.0/promoted/latest/binaries/solaris-i586/bin/javac -J-XX:ThreadStackSize=768 -J-XX:-PrintVMOptions -J-XX:+UnlockDiagnosticVMOptions -J-XX:-LogVMOutput -J-client -J-Xmx512m -J-Xms512m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -g -Werror -Xlint:all,-deprecation -Xlint:all -Xlint:-path -source 7 -target 7 -encoding ascii -Xbootclasspath:../../../../../build/solaris-i586/classes -sourcepath ../../../../../src/closed/solaris/classes:../../../../../src/closed/share/classes:../../../../../build/solaris-i586/gensrc:../../../../../src/solaris/classes:../../../../../src/share/classes -d ../../../../../build/solaris-i586/classes @../../../../../build/solaris-i586/tmp/sun/com.sun.net.ssl/.classes.list.filtered
>> ../../../../../src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java:438: error: missing return statement
>> }
>> ^
>> Note: Some input files use or override a deprecated API.
>> Note: Recompile with -Xlint:deprecation for details.
>> 1 error
>> # javac finished
>> make381[3]: Leaving directory `/export2/Users/chris/repos/jdk8/tl/buildFail/make/com/sun/net/ssl'
>> make381[3]: Entering directory `/export2/Users/chris/repos/jdk8/tl/buildFail/make/com/sun/jarsigner'
>> make381[3]: Leaving directory `/export2/Users/chris/repos/jdk8/tl/buildFail/make/com/sun/jarsigner'
>> make381[3]: Entering directory `/export2/Users/chris/repos/jdk8/tl/buildFail/make/com/sun/image'
>>
>> -Chris.
More information about the build-dev
mailing list