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

Erik Joelsson erik.joelsson at oracle.com
Wed Oct 25 08:38:51 UTC 2017


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




More information about the build-dev mailing list