package/mono: fix install with parallel builds
Due to a race in the 'install' utility, installing the same file twice in parallel often results in one of the install calls to fail. Ensure proper ordering of conflicting rules. Fixes: http://autobuild.buildroot.org/results/c32/c3288c5d1fb94474f14a4a889e76135878d403bc/ http://autobuild.buildroot.org/results/f70/f708e89f613ec0b42cdf49ccbef39b02f4a271fb/ http://autobuild.buildroot.org/results/3cb/3cb99e5c5672cbaa2a86020129a05dfde47cdb8f/ ... Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Angelo Compagnucci <angelo.compagnucci@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
01dfbb48c5
commit
f28af78265
40
package/mono/0003-fix-parallel-install.patch
Normal file
40
package/mono/0003-fix-parallel-install.patch
Normal file
@ -0,0 +1,40 @@
|
||||
mcs: fix installation with parallel make
|
||||
|
||||
In mcs/ the install of xbuild_12 and xbuild_14 will end-up installing
|
||||
the same files:
|
||||
${NETFRAMEWORK_DIR}/v2.0/RedistList/FrameworkList.xml
|
||||
${NETFRAMEWORK_DIR}/v3.0/RedistList/FrameworkList.xml
|
||||
${NETFRAMEWORK_DIR}/v3.5/RedistList/FrameworkList.xml
|
||||
${NETFRAMEWORK_DIR}/v4.0/Profile/Client/RedistList/FrameworkList.xml
|
||||
${NETFRAMEWORK_DIR}/v4.0/RedistList/FrameworkList.xml
|
||||
${NETFRAMEWORK_DIR}/v4.5.1/RedistList/FrameworkList.xml
|
||||
${NETFRAMEWORK_DIR}/v4.5/RedistList/FrameworkList.xml
|
||||
|
||||
This is because there is no atomicity when installing each file, and
|
||||
xbuild_12 and xbuild_14 may well run in parallel, each trying to install
|
||||
each of those files; but the 'install' utility will first check if the
|
||||
target file exists or not, and behaves differently if it does than if it
|
||||
does not, thus leading to build failures like so:
|
||||
http://autobuild.buildroot.org/results/c32/c3288c5d1fb94474f14a4a889e76135878d403bc/build-end.log
|
||||
|
||||
So, ensure ordering of the install of xbuild_12 and xbuild_14 (the
|
||||
ordering is completely arbitrary, either way gives the same installed
|
||||
files).
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
|
||||
Cc: Angelo Compagnucci <angelo.compagnucci@gmail.com>
|
||||
|
||||
diff -durN host-mono-4.0.0.orig/mcs/Makefile host-mono-4.0.0/mcs/Makefile
|
||||
--- host-mono-4.0.0.orig/mcs/Makefile 2015-04-09 16:55:53.000000000 +0200
|
||||
+++ host-mono-4.0.0/mcs/Makefile 2015-05-16 17:25:44.475542483 +0200
|
||||
@@ -43,6 +43,10 @@
|
||||
profile-do--%:
|
||||
$(MAKE) PROFILE=$(subst --, ,$*)
|
||||
|
||||
+# xbuild_12 and xbuild_14 will try to install the same files, so they need
|
||||
+# to be ordered
|
||||
+profile-do--xbuild_14--install: profile-do--xbuild_12--install
|
||||
+
|
||||
# We don't want to run the tests in parallel. We want behaviour like -k.
|
||||
profiles-do--run-test:
|
||||
ret=:; $(foreach p,$(PROFILES), { $(MAKE) PROFILE=$(p) run-test || ret=false; }; ) $$ret
|
Loading…
Reference in New Issue
Block a user