[kteam-tools][PATCH v2] cranky-test-build: Make the positional arg 'arch' an optional arg
Juerg Haefliger
juerg.haefliger at canonical.com
Thu Apr 26 13:15:27 UTC 2018
This feels more natural :-) Also, change the default (no arch specified) to
only build the current host architecture, rather than all supported
architectures. Introduce the special arch 'all' to build all supported
architectures.
Signed-off-by: Juerg Haefliger <juergh at canonical.com>
---
cranky/cranky-test-build | 51 ++++++++++++++++++++++------------------
1 file changed, 28 insertions(+), 23 deletions(-)
diff --git a/cranky/cranky-test-build b/cranky/cranky-test-build
index 68d69b86739d..45a31c7eef2f 100755
--- a/cranky/cranky-test-build
+++ b/cranky/cranky-test-build
@@ -16,30 +16,33 @@ function out()
function usage()
{
cat <<EOF
-usage: cranky-test-build [-h] [-c COMMIT] -t [TARGET] host [arch [arch ...]]
+usage: cranky-test-build [-h] [-c COMMIT] [-t TARGET] [-a ARCH[,ARCH,...]] HOST
Build kernel binary packages using Kamal's git-build-kernel build script.
Positional arguments:
- host build host (kathleen, gloin, tangerine, ...)
- arch kernel architecture to build. If not specified, build all architecures
- as listed under debian.master/config/.
+ HOST Build host (kathleen, gloin, tangerine, ...).
Optional arguments:
- -c, --commit COMMIT build from commit COMMIT instead of HEAD
- -t, --target TARGET build target TARGET instead of <arch>-binary
- -h, --help show this help message and exit
+ -a, --arch ARCH[,ARCH,...] Comma-separated list of kernel architectures to
+ build. If not specified, defaults to the host
+ architecture. If the special architecture 'all'
+ is used, build all architectures listed under
+ debian.master/config/.
+ -c, --commit COMMIT Build from commit COMMIT instead of 'HEAD'.
+ -t, --target TARGET Build target TARGET instead of 'binary'.
+ -h, --help Show this help message and exit.
Examples:
- Build packages for a single architecture from the current commit:
- $ cranky-test-build kathleen amd64
+ Build binary packages for the host architecture from the current commit:
+ $ cranky-test-build kathleen
Build packages for all supported architectures:
- $ cranky-test-build kathleen
+ $ cranky-test-build -a all kathleen
Build binary packages of kernel flavor 'generic' from branch 'testing' for
architecture ppc64el:
- $ cranky-test-build -c testing -t binary-generic kathleen ppc64el
+ $ cranky-test-build -c testing -t binary-generic -a ppc64el kathleen
Current limitations:
1) The username on the build host must be identical to the username on the
@@ -56,12 +59,16 @@ EOF
}
host=
-arches=
+arches=($(dpkg-architecture -q DEB_HOST_ARCH))
commit=HEAD
target=binary
while [ "${#}" -gt 0 ] ; do
case "${1}" in
+ -a|--arch)
+ shift
+ IFS=',' read -r -a arches <<< "${1}"
+ ;;
-c|--commit)
shift
commit=${1}
@@ -74,12 +81,10 @@ while [ "${#}" -gt 0 ] ; do
target=${1}
;;
*)
- if [ -z "${host}" ] ; then
- host=${1}
- else
- arches=${*}
- break
+ if [ -n "${host}" ] ; then
+ usage
fi
+ host=${1}
;;
esac
shift
@@ -106,13 +111,13 @@ if ! [ -e "${changelog}" ] ; then
exit 1
fi
-if [ -z "${arches}" ] ; then
+if [ "${arches[0]}" = "all" ] ; then
# shellcheck disable=SC2012
- arches=$(ls -d debian.master/config/*/ | sed -e 's,/$,,' -e 's,.*/,,' | \
- tr '\n' ' ')
+ read -r -a arches <<< "$(ls -1d debian.master/config/*/ | \
+ sed -e 's,/$,,' -e 's,.*/,,' | tr '\n' ' ')"
else
# Verify that the specified arch(es) is/are valid
- for arch in ${arches} ; do
+ for arch in "${arches[@]}" ; do
if ! [ -d "debian.master/config/${arch}" ] ; then
echo "Error: Unsupported arch '${arch}'"
exit 1
@@ -128,7 +133,7 @@ fi
echo "Build host: ${host}"
echo "Build series: ${series}"
-echo "Build arches: ${arches}"
+echo "Build arches: ${arches[*]}"
echo "Build commit: $(git log --format='%h ("%s")' "${commit}" -1)"
# Verify we can talk to the host
@@ -178,7 +183,7 @@ git branch "${BUILD_BRANCH}" "${commit}"
trap out EXIT INT TERM HUP
# Finally cycle through the arches and do the builds
-for arch in ${arches} ; do
+for arch in "${arches[@]}" ; do
echo "Info: Doing a test build for arch '${arch}', target '${target}'"
git push --force "${host}" "${BUILD_BRANCH}:${arch}-${target}" || true
done
--
2.17.0
More information about the kernel-team
mailing list