From b1919b15d5090214c57f0ece688fa70ae704fa66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Tue, 24 Sep 2019 11:05:29 +0200
Subject: [PATCH] Windows package: fix race condition when extracting MSYS2
 archives

Those archives contain 3 hidden files, which always have the same name. This
can make the parallel build fail when several packages are unpacked at the same
time. Hence, we just skip these files when unpacking.
---
 .gitignore            |  3 ---
 windows/deps/Makefile | 10 ++++++----
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
index c07dfd0e6..50f372be4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -123,9 +123,6 @@ doc/internals/ltxpng
 # Windows
 !/windows/Makefile
 !/windows/deps/Makefile
-windows/deps/.BUILDINFO
-windows/deps/.MTREE
-windows/deps/.PKGINFO
 windows/deps/lib32/
 windows/deps/lib64/
 windows/deps/lib32-msys2/
diff --git a/windows/deps/Makefile b/windows/deps/Makefile
index 1bc45301c..d59ad0636 100644
--- a/windows/deps/Makefile
+++ b/windows/deps/Makefile
@@ -220,26 +220,28 @@ clean-matlab:
 
 msys2: lib32-msys2 lib64-msys2 mingw32 mingw64
 
+MSYS2_EXCLUDES := --exclude .MTREE --exclude .BUILDINFO --exclude .PKGINFO
+
 lib32-msys2: tarballs/mingw-w64-i686-boost-$(MINGW32_BOOST_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-gsl-$(MINGW32_GSL_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-openblas-$(MINGW32_OPENBLAS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-matio-$(MINGW32_MATIO_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-zlib-$(MINGW32_ZLIB_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-hdf5-$(MINGW32_HDF5_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-szip-$(MINGW32_SZIP_VERSION)-any.pkg.tar.xz
 	rm -rf $@
 	mkdir $@
-	for f in $^; do tar xf $$f --directory $@ --strip-components 1; done
+	for f in $^; do tar xf $$f --directory $@ --strip-components 1 $(MSYS2_EXCLUDES); done
 	touch $@
 
 lib64-msys2: tarballs/mingw-w64-x86_64-boost-$(MINGW64_BOOST_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-gsl-$(MINGW64_GSL_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-openblas-$(MINGW64_OPENBLAS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-matio-$(MINGW64_MATIO_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-zlib-$(MINGW64_ZLIB_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-hdf5-$(MINGW64_HDF5_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-szip-$(MINGW64_SZIP_VERSION)-any.pkg.tar.xz
 	rm -rf $@
 	mkdir $@
-	for f in $^; do tar xf $$f --directory $@ --strip-components 1; done
+	for f in $^; do tar xf $$f --directory $@ --strip-components 1 $(MSYS2_EXCLUDES); done
 	touch $@
 
 mingw32: tarballs/mingw-w64-i686-gcc-$(MINGW32_GCC_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-gmp-$(MINGW32_GMP_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-binutils-$(MINGW32_BINUTILS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-headers-git-$(MINGW32_HEADERS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-crt-git-$(MINGW32_CRT_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-winpthreads-git-$(MINGW32_WINPTHREADS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-libwinpthread-git-$(MINGW32_LIBWINPTHREAD_VERSION)-any.pkg.tar.xz
 	rm -rf $@
-	for f in $^; do tar xf $$f; done
+	for f in $^; do tar xf $$f $(MSYS2_EXCLUDES); done
 	touch $@
 
 mingw64: tarballs/mingw-w64-x86_64-gcc-$(MINGW64_GCC_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-gmp-$(MINGW64_GMP_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-binutils-$(MINGW64_BINUTILS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-headers-git-$(MINGW64_HEADERS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-crt-git-$(MINGW64_CRT_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-winpthreads-git-$(MINGW64_WINPTHREADS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-libwinpthread-git-$(MINGW64_LIBWINPTHREAD_VERSION)-any.pkg.tar.xz
 	rm -rf $@
-	for f in $^; do tar xf $$f; done
+	for f in $^; do tar xf $$f $(MSYS2_EXCLUDES); done
 	touch $@
 
 tarballs/mingw-w64-i686-%-any.pkg.tar.xz:
-- 
GitLab