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

Erik Joelsson erik.joelsson at oracle.com
Mon Jun 11 19:07:56 UTC 2018


On 2018-06-11 11:09, Magnus Ihse Bursie wrote:
>
>
> 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?
>
I'm thinking in the code, to remind us in the future when we edit in 
these areas.

/Erik
> /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