[PATCH] docker: Allow CC and make command to be customised

Samuel Mendoza-Jonas sam at mendozajonas.com
Tue Oct 2 14:39:26 AEST 2018


On Wed, 2018-08-29 at 15:30 +1000, Samuel Mendoza-Jonas wrote:
> 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 at mendozajonas.com>

Merged as 3d408f0

> ---
>  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 4bf89d34..321629fd 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 1d87fb42..62295509 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 fe88e900..7f56dc25 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}"}




More information about the Petitboot mailing list