RFR: JDK-8189376 Unsorted $(wildcard) causes instable module-deps.gmk

Tim Bell tim.bell at oracle.com
Wed Oct 25 15:23:02 UTC 2017


Looks good to me as well.

/Tim

On 10/25/17 01:38, Erik Joelsson wrote:
> Looks good.
>
> /Erik
>
>
> On 2017-10-25 10:09, Magnus Ihse Bursie wrote:
>> We have implicitly assumed that subsequent calls to $(wildcard) will
>> return the same (sorted) order of files during a single build
>> operation. This is not guaranteed since GNU make 3.82, but will be the
>> case in practice on most systems due the the filesystem being used.
>>
>> It turned out that if the order was different, FindAllModuleInfos
>> returned different strings which in turn caused module-deps.gmk to be
>> re-generated at any time during the build, causing race conditions.
>>
>> The bug analysis and patch is contributed by Martin Buchholz.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8189376
>> Patch inline:
>> diff --git a/make/common/Modules.gmk b/make/common/Modules.gmk
>> --- a/make/common/Modules.gmk
>> +++ b/make/common/Modules.gmk
>> @@ -249,10 +249,10 @@
>>  # configuration.
>>  # Param 1 - Module to find for, set to * for finding all
>>  FindAllModuleInfos = \
>> -    $(wildcard \
>> +    $(sort $(wildcard \
>>          $(foreach sub, $(SRC_SUBDIRS), \
>>            $(patsubst %,%/$(strip $1)/$(sub)/module-info.java,
>> $(TOP_SRC_DIRS))) \
>> -        $(patsubst %,%/$(strip $1)/module-info.java,
>> $(IMPORT_MODULES_SRC)))
>> +        $(patsubst %,%/$(strip $1)/module-info.java,
>> $(IMPORT_MODULES_SRC))))
>>
>>  # Find module-info.java files in the specific source dir
>>  # Param 1 - Src dir to find module-info.java files in





More information about the build-dev mailing list