about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-11-26 23:52:43 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-11-26 23:52:43 +0000
commit2bd0bfcc6857f1fde2bd9716dc103333ebaa6807 (patch)
treebedae6f1f308aa3f37c50bedb8291c01497e0685
parentaffec03b713c82c43a5b025dddc21bde3334f41e (diff)
downloadglibc-2bd0bfcc6857f1fde2bd9716dc103333ebaa6807.tar.gz
glibc-2bd0bfcc6857f1fde2bd9716dc103333ebaa6807.tar.xz
glibc-2bd0bfcc6857f1fde2bd9716dc103333ebaa6807.zip
Touch more glibc source files in build-many-glibcs.py.
build-many-glibcs.py currently copies the source tree to avoid issues
with parallel builds trying to write into it.  This copying can result
in occasional spurious build failures from bots, when a "git gc" is in
progress that changes .git contents while copying is taking place, and
it would also be desirable to avoid the need to copy to save on disk
space, I/O and memory used in build-many-glibcs.py builds.

In preparation for removing the copying, this patch arranges for
build-many-glibcs.py to touch more files on checkout so their
timestamps do not result in make attempting to rebuild them.  Before
actually removing the copying, I intend to do further tests to ensure
I haven't missed any other such makefile dependencies.

This is of course without prejudice to possibly moving more of these
files to being generated in the build directory rather than being
checked in at all, where that can be done using build tools already
required for the build.  For sysdeps files (installed and otherwise)
it would be necessary to make sure this does not affect the search
ordering, for headers used in the build it would be necessary to
ensure they are generated early enough, and for errlist.c there may be
dual licensing reasons for keeping it checked in.

Tested that a checkout with build-many-glibcs.py does touch the
expected files and that a glibcs build for aarch64-linux-gnu succeeds.

	* scripts/build-many-glibcs.py (Context.fix_glibc_timestamps):
	Touch additional files.
-rw-r--r--ChangeLog5
-rwxr-xr-xscripts/build-many-glibcs.py14
2 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 84ddd68d7d..c4dae980a2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-26  Joseph Myers  <joseph@codesourcery.com>
+
+	* scripts/build-many-glibcs.py (Context.fix_glibc_timestamps):
+	Touch additional files.
+
 2018-11-26  Florian Weimer  <fweimer@redhat.com>
 
 	[BZ #23907]
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 1bf8ee1d2b..376382d4a4 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -841,6 +841,20 @@ class Context(object):
         # Ensure that builds do not try to regenerate generated files
         # in the source tree.
         srcdir = self.component_srcdir('glibc')
+        # These files have Makefile dependencies to regenerate them in
+        # the source tree that may be active during a normal build.
+        # Some other files have such dependencies but do not need to
+        # be touched because nothing in a build depends on the files
+        # in question.
+        for f in ('locale/C-translit.h', 'posix/ptestcases.h',
+                  'posix/testcases.h', 'sysdeps/gnu/errlist.c',
+                  'sysdeps/mach/hurd/bits/errno.h',
+                  'sysdeps/sparc/sparc32/rem.S',
+                  'sysdeps/sparc/sparc32/sdiv.S',
+                  'sysdeps/sparc/sparc32/udiv.S',
+                  'sysdeps/sparc/sparc32/urem.S'):
+            to_touch = os.path.join(srcdir, f)
+            subprocess.run(['touch', '-c', to_touch], check=True)
         for dirpath, dirnames, filenames in os.walk(srcdir):
             for f in filenames:
                 if (f == 'configure' or