diff options
author | Julius Werner <jwerner@chromium.org> | 2017-03-20 15:33:23 -0700 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2017-03-28 22:10:15 +0200 |
commit | 893eda0cc5c8b70faf4f623c95dcf2b68f3cd0d3 (patch) | |
tree | d83f25db3e8187765493bf3dff2c6762fe566b83 | |
parent | 7952e283fb6dac19a10112199814c80619a28366 (diff) |
abuild: Treat command line for recursive invocations as bash array
This fix changes the $cmdline variable that is used for recursive
parallel abuild invocations through xargs from a string to a true bash
array (like $@). This allows bash to properly preserve and pass on
whitespace in parameters, like you get from invocations such as:
util/abuild/abuild -c 32 -t "MY_FIRST_BOARD MY_SECOND_BOARD"
Also add a mechanism to better spread CPUs across targets, since
otherwise we can leave a lot of CPUs idle if we're trying to build only
a few boards in parallel.
Change-Id: I76a1c6456ef8ab21286fdc1636d659a3b76bc5d7
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/18975
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
-rwxr-xr-x | util/abuild/abuild | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/util/abuild/abuild b/util/abuild/abuild index 93ceac50e9..95711a1b41 100755 --- a/util/abuild/abuild +++ b/util/abuild/abuild @@ -16,8 +16,8 @@ #set -x # Turn echo on.... -ABUILD_DATE="Dec 6, 2016" -ABUILD_VERSION="0.10.01" +ABUILD_DATE="Mar 28, 2017" +ABUILD_VERSION="0.10.02" TOP=$PWD @@ -581,8 +581,8 @@ test "$ROOT" = "" && ROOT=$( cd ../.. && pwd ) export PATH=$PATH:util/abuild getopt - > /dev/null 2>/dev/null || gcc -o util/abuild/getopt util/abuild/getopt.c -# command line for xargs parallelization. Thus overwrite -c X -cmdline="$* -c 1" +# Save command line for xargs parallelization. +cmdline=("$@") # parse parameters.. try to find out whether we're running GNU getopt getoptbrand="$(getopt -V)" @@ -735,6 +735,8 @@ build_targets() local ABSPATH local stime local etime + local num_targets + local cpus_per_target local targets=${*-$(get_mainboards)} # seed shared utils @@ -781,8 +783,9 @@ build_targets() rmdir "${scanbuild_out}tmp" fi rm -rf "$TARGET/temp" "$TMPCFG" - # shellcheck disable=SC2086 - echo $targets | xargs -P ${cpus:-0} -n 1 "$0" $cmdline -I -t + num_targets=$(wc -w <<<"$targets") + cpus_per_target=$(((${cpus:-1} + num_targets - 1) / num_targets)) + echo "$targets" | xargs -P ${cpus:-0} -n 1 "$0" "${cmdline[@]}" -I -c "$cpus_per_target" -t } fi |