On 16 Dec 2011, at 20:56, Kelly O'Hair <kelly.oh...@oracle.com> wrote:
> Change looks good. +1 -Chris > > -kto > > On Dec 16, 2011, at 11:58 AM, Stuart Marks wrote: > >> Here's a fix I'm working on. I'm still doing test builds but I wanted to get >> this in front of people pretty quickly. >> >> The initial diagnosis was correct; adding an "echo" (or some other command) >> after the javac will prevent javac's failure code from reaching make and >> thus not stopping the build if there is an error. >> >> The fix is to use && instead of ; to separate the commands, i.e. >> >> javac && echo "# javac finished" >> >> If javac fails this will abort the commands chained with && and report the >> failure code back to make. >> >> Diff below. >> >> s'marks >> >> >> >> diff -r c647ebb3c4f7 make/common/Rules.gmk >> --- a/make/common/Rules.gmk Tue Dec 13 15:41:47 2011 -0800 >> +++ b/make/common/Rules.gmk Fri Dec 16 11:52:48 2011 -0800 >> @@ -239,7 +239,7 @@ >> $(CAT) $<.filtered; \ >> $(ECHO) "# Running javac: $$numfiles files; in $(CURDIR)"; \ >> $(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) >> @$<.filtered; \ >> - $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) >> @$<.filtered; \ >> + $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) >> @$<.filtered && \ >> $(ECHO) "# javac finished"; \ >> fi >> @$(java-vm-cleanup) >> >> >> On 12/16/11 10:12 AM, Mandy Chung wrote: >>> 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. >