This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Add script to build many glibc configurations


On Fri, 18 Nov 2016, Zack Weinberg wrote:

> * Please don't delete the build tree unless configure, build, and
> check all succeed, so that one can dig into a failure beyond what's

That's --keep=failed.

> visible in the logs.  Add an option to preserve the build tree even if
> all three succeeded, to facilitate additional testing (for instance,
> an "installed stripped libraries are unchanged" test - if that fails
> one will want to go look at the object files).

That's --keep=all.

There's the question of what the best default is.  The current --keep=none 
default is oriented to the idea of a buildbot that may not want disk usage 
to explode after a commit that causes all builds to fail, and will need to 
delete the build directories anyway when starting the next build.

> * Please find some way of not needing to make a copy of the glibc
> source tree for each build configuration, so that one can make edits
> to .../src/glibc and immediately do incremental rebuilds in all
> failing configurations.

You'd need to fix bug 14121, then see if builds and testing with a 
read-only source directory work (and try to find any cases where Makefile 
dependencies mean something could get regenerated in the source directory 
and the checkout step doesn't currently fix the timestamps to avoid that).

> * Please make sure that command lines written to logfiles are properly
> quoted, so that they can be copied and pasted directly into a shell.
> (The problem case I know about is CC="x-y-z-gcc -mthis -mthat" on a
> configure command line, which currently gets written to the logfile
> without any quotes.)  (Python stdlib has a function `shlex.quote` that
> will help.)

Patch below committed.

Quote shell commands in logs from build-many-glibcs.py.

As requested in
<https://sourceware.org/ml/libc-alpha/2016-11/msg00664.html>, this
patch makes the commands recorded in build-many-glibcs.py quote words
so they can be cut-and-pasted back into a shell.  (Note that these
logs are generated by the wrapper script generated to run commands
with logs, hence the needs for quoting logic to be implemented in that
shell script.)

2016-11-18  Joseph Myers  <joseph@codesourcery.com>

	* scripts/build-many-glibcs.py (Context.write_files): Make wrapper
	script quote words in command output to log suitably for input to
	the shell.

diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index b0e0f5e..517dec4 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -423,7 +423,17 @@ class Context(object):
             'date > "$this_log"\n'
             'echo >> "$this_log"\n'
             'echo "Description: $desc" >> "$this_log"\n'
-            'echo "Command: $*" >> "$this_log"\n'
+            'printf "%s" "Command:" >> "$this_log"\n'
+            'for word in "$@"; do\n'
+            '  if expr "$word" : "[]+,./0-9@A-Z_a-z-]\\\\{1,\\\\}\\$" > /dev/null; then\n'
+            '    printf " %s" "$word"\n'
+            '  else\n'
+            '    printf " \'"\n'
+            '    printf "%s" "$word" | sed -e "s/\'/\'\\\\\\\\\'\'/"\n'
+            '    printf "\'"\n'
+            '  fi\n'
+            'done >> "$this_log"\n'
+            'echo >> "$this_log"\n'
             'echo "Directory: $dir" >> "$this_log"\n'
             'echo "Path addition: $path" >> "$this_log"\n'
             'echo >> "$this_log"\n'

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]