From 3d408f06f22049c94a295c501852876f4f4e5e36 Mon Sep 17 00:00:00 2001 From: Samuel Mendoza-Jonas Date: Wed, 29 Aug 2018 15:30:36 +1000 Subject: [PATCH] docker: Allow CC and make command to be customised Allow CC to be passed through to change the default compiler, and also allow the invocation of 'make' to be customised. An example use case of this is to set CC=/usr/bin/clang and use --make-command 'scan-build make' to build Petitboot with the clang static analyzer. Signed-off-by: Samuel Mendoza-Jonas --- docker/Dockerfile.builder | 2 ++ docker/build-pb | 19 +++++++++++++++---- docker/builder-include | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile.builder b/docker/Dockerfile.builder index 4bf89d3..321629f 100644 --- a/docker/Dockerfile.builder +++ b/docker/Dockerfile.builder @@ -12,6 +12,8 @@ RUN apt-get update && apt-get install -y \ autoconf \ autopoint \ bison \ + clang \ + clang-tools \ flex \ gettext \ gcc \ diff --git a/docker/build-pb b/docker/build-pb index 1d87fb4..6229550 100755 --- a/docker/build-pb +++ b/docker/build-pb @@ -16,6 +16,7 @@ usage () { echo " -d --dry-run - Do not run docker commands." >&2 echo " -h --help - Show this help and exit." >&2 echo " -i --interactive - Run an interactive pb-builder container." >&2 + echo " -m --make-command - Set a specific command to be called for 'make'.">&2 echo " -o --configure-opts - Extra arguments for configure." >&2 echo " -t --tag - Print Docker tag to stdout and exit." >&2 echo " -v --verbose - Verbose execution." >&2 @@ -23,13 +24,14 @@ usage () { echo " DOCKER_TAG - Default: '${DOCKER_TAG}'" >&2 echo " CFLAGS - Default: '${CFLAGS}'" >&2 echo " LDFLAGS - Default: '${LDFLAGS}'" >&2 + echo " CC - Default: '${CC}'" >&2 echo "Examples:" >&2 echo " ${name} -vc" echo " ${name} -v" } -short_opts="cdhio:tv" -long_opts="check,dry-run,help,interactive,configure-opts:,tag,verbose" +short_opts="cdhim:o:tv" +long_opts="check,dry-run,help,interactive,make-command:,configure-opts:,tag,verbose" opts=$(getopt --options ${short_opts} --long ${long_opts} -n "${name}" -- "$@") @@ -58,6 +60,11 @@ while true ; do interactive=1 shift ;; + -m | --make-command) + shift + makecmd=${1} + shift + ;; -o | --configure-opts) shift configure_opts=${1} @@ -120,10 +127,14 @@ else docker_extra="true" fi -flags="CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS}" +if [[ -z "${makecmd}" ]]; then + makecmd="make" +fi + +flags="CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} CC=${CC}" cd "${TOP_DIR}" docker_args="${docker_base_args} ${docker_user_args}" run_cmd "docker run ${docker_args} ${DOCKER_TAG} /bin/bash \ -e ${bash_debug} \ - -c './bootstrap && ${flags} ./configure ${configure_opts[@]} && make && ${docker_extra}'" + -c './bootstrap && ${flags} ./configure ${configure_opts[@]} && ${makecmd} && ${docker_extra}'" diff --git a/docker/builder-include b/docker/builder-include index fe88e90..7f56dc2 100644 --- a/docker/builder-include +++ b/docker/builder-include @@ -51,7 +51,7 @@ show_tag () { echo "${DOCKER_TAG}" } -: ${VERSION:="4"} +: ${VERSION:="5"} : ${ARCH_TAG:="$(arch_tag)"} : ${DOCKER_NAME:="pb-builder"} : ${DOCKER_TAG:="${DOCKER_NAME}:${VERSION}${ARCH_TAG}"} -- 2.39.2