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