RFR: JDK-8204664 PrepareFailureLogs should be done after sequential make targets

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Mon Jun 11 18:09:12 UTC 2018



On 2018-06-11 17:42, Erik Joelsson wrote:
> Hello,
>
> Looks ok. Perhaps this warrants a comment somewhere about the failure 
> logs only working in parallel targets?

Do you mean a comment in the code, or in the build documentation?

/Magnus

>
> /Erik
>
>
> On 2018-06-11 01:50, Magnus Ihse Bursie wrote:
>> When running a compound make line such as "make reconfigure clean 
>> jdk-image test-image", make will first single out the "sequential" 
>> targets reconfigure and clean, and execute them single-threaded, in 
>> sequence, and then it will build the remaining targets in parallel. 
>> However, the macro PrepareFailureLogs was called before this 
>> sequential calling, meaning that the directories created by it will 
>> be destroyed moments after by the clean target. The result is that if 
>> there is a compile error, the build will exit with something along 
>> these lines:
>>
>> /bin/cp: cannot create regular file 
>> `/export/users/dh198349/jdk-dev2/build/linux-x64-debug/make-support/failure-logs/hotspot_variant-server_libjvm_objs_thread.o.log': 
>> No such file or directory
>> lib/CompileJvm.gmk:149: recipe for target 
>> '/export/users/dh198349/jdk-dev2/build/linux-x64-debug/hotspot/variant-server/libjvm/objs/thread.o' 
>> failed
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8204664
>> Patch inline:
>> diff --git a/make/Init.gmk b/make/Init.gmk
>> --- a/make/Init.gmk
>> +++ b/make/Init.gmk
>> @@ -298,7 +298,6 @@
>>    main: $(INIT_TARGETS)
>>          ifneq ($(SEQUENTIAL_TARGETS)$(PARALLEL_TARGETS), )
>>           $(call RotateLogFiles)
>> -         $(call PrepareFailureLogs)
>>           $(PRINTF) "Building $(TARGET_DESCRIPTION)\n" $(BUILD_LOG_PIPE)
>>            ifneq ($(SEQUENTIAL_TARGETS), )
>>              # Don't touch build output dir since we might be 
>> cleaning. That
>> @@ -308,6 +307,7 @@
>>                 $(SEQUENTIAL_TARGETS) )
>>            endif
>>            ifneq ($(PARALLEL_TARGETS), )
>> +           $(call PrepareFailureLogs)
>>             $(call StartGlobalTimer)
>>             $(call PrepareSmartJavac)
>>              # JOBS will only be empty for a bootcycle-images 
>> recursive call
>>
>> /Magnus
>




More information about the build-dev mailing list