about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-01-18 23:13:09 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-01-18 23:13:09 +0000
commitcd880aa2ccabecd1a258b39b987160f0e86fd52d (patch)
tree9fc6f2a4ef76b8f729a1f96d353e6e17b84e0e8e
parent0e8bac37d5e7823efbc2d1bb54c77e0603f44661 (diff)
downloadglibc-cd880aa2ccabecd1a258b39b987160f0e86fd52d.tar.gz
glibc-cd880aa2ccabecd1a258b39b987160f0e86fd52d.tar.xz
glibc-cd880aa2ccabecd1a258b39b987160f0e86fd52d.zip
Avoid parallel GCC install in build-many-glibcs.py.
A recent build-many-glibcs.py build
<https://sourceware.org/ml/libc-testresults/2017-q1/msg00067.html> ran
into what proves to be an old known bug
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42980> with parallel
install of GCC (one which as discussed there might require automake
changes to fix).  This patch makes build-many-glibcs.py avoid such
intermittent failures from parallel install by using -j1 for GCC make
install (the code in question also applies to binutils make install,
but it doesn't seem worth trying to avoid -j1 there; the builds and
installs of different toolchains are still fully parallel with each
other, this is only about the case when there are few enough of those
that multiple jobs can get used within a single make install).

	* scripts/build-many-glibcs.py (Config.build_cross_tool): Use -j1
	for make install.
-rw-r--r--ChangeLog5
-rwxr-xr-xscripts/build-many-glibcs.py12
2 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c9a6d804db..9961dc420e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-18  Joseph Myers  <joseph@codesourcery.com>
+
+	* scripts/build-many-glibcs.py (Config.build_cross_tool): Use -j1
+	for make install.
+
 2017-01-18  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
 	* po/bg.po: Merge from Translation Project.
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index d27e70b8bd..d2947e676b 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -1173,7 +1173,17 @@ class Config(object):
             cfg_cmd.extend(extra_opts)
         cmdlist.add_command('configure', cfg_cmd)
         cmdlist.add_command('build', ['make'])
-        cmdlist.add_command('install', ['make', 'install'])
+        # Parallel "make install" for GCC has race conditions that can
+        # cause it to fail; see
+        # <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42980>.  Such
+        # problems are not known for binutils, but doing the
+        # installation in parallel within a particular toolchain build
+        # (as opposed to installation of one toolchain from
+        # build-many-glibcs.py running in parallel to the installation
+        # of other toolchains being built) is not known to be
+        # significantly beneficial, so it is simplest just to disable
+        # parallel install for cross tools here.
+        cmdlist.add_command('install', ['make', '-j1', 'install'])
         cmdlist.cleanup_dir()
         cmdlist.pop_subdesc()