From e036e2522d99cd279e4bd675089fcdbc75696957 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Mon, 25 Feb 2019 13:44:28 +0000 Subject: [PATCH] docs/cookbook/c/allconfig.do: avoid need for '&' backgrounding. Instead of running a bunch of separate rc_include statements in the background, which causes unpredictable ordering of log output and prevents -j from controlling parallelism, let's do a single redo-ifchange for all of them (the slow part) followed by sequentially checking the results (the fast part). --- docs/cookbook/c/allconfig.do | 41 +++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/docs/cookbook/c/allconfig.do b/docs/cookbook/c/allconfig.do index 807a1c9..466c175 100644 --- a/docs/cookbook/c/allconfig.do +++ b/docs/cookbook/c/allconfig.do @@ -8,24 +8,35 @@ config() { ( cd "$dir" && ../configure --host="$arch" "$@" && - ( set --; - . ./redoconf.rc && - rc_include rc/CC.rc && - [ -n "$HAVE_CC" ] - ) && echo "$dir" - ) || (echo "Skipping arch '$arch' $*" >&2) + ) } -for d in $(cat arches); do - if [ "$d" = "native" ]; then - arch="" - else - arch="$d" - fi - config "out.$d" "$arch" & - config "out.$d.static" "$arch" "--enable-static" & - config "out.$d.opt" "$arch" "--enable-optimization" & +dirs=$( + for d in $(cat arches); do + if [ "$d" = "native" ]; then + arch="" + else + arch="$d" + fi + config "out.$d" "$arch" + config "out.$d.static" "$arch" "--enable-static" + config "out.$d.opt" "$arch" "--enable-optimization" + done +) + +for dir in $dirs; do + echo "$dir/rc/CC.rc" +done | xargs redo-ifchange + +for dir in $dirs; do + ( cd "$dir" && + set --; + . ./redoconf.rc && + rc_include rc/CC.rc && + [ -n "$HAVE_CC" ] && + echo "$dir" + ) || (echo "Skipping $dir' - no working C compiler." >&2) done >$3 wait