docker: Allow CC and make command to be customised
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>
Wed, 29 Aug 2018 05:30:36 +0000 (15:30 +1000)
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>
Fri, 31 Aug 2018 04:03:24 +0000 (14:03 +1000)
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 <sam@mendozajonas.com>
docker/Dockerfile.builder
docker/build-pb
docker/builder-include

index 4bf89d344610514b2ead538d9a84427cce197b19..321629fdedf22333a4057d839ca44e20de8b04c2 100644 (file)
@@ -12,6 +12,8 @@ RUN apt-get update && apt-get install -y \
        autoconf \
        autopoint \
        bison \
+       clang \
+       clang-tools \
        flex \
        gettext \
        gcc \
index 1d87fb421447ddce0cdb399d81d99afd03a370db..62295509f20b28b093e24bff939159c872b11041 100755 (executable)
@@ -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}'"
index fe88e9006736583a235d6261c20a69078628b895..7f56dc25ae500754c54a7e0f44a186ed97a18e95 100644 (file)
@@ -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}"}