Build succeeds even if JDK source file fails to compile

Chris Hegarty chris.hegarty at oracle.com
Fri Dec 16 14:13:51 UTC 2011


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