echo "${name} - Builds the petitboot programs using a pb-builder container." >&2
echo "Usage: ${name} [flags]" >&2
echo "Option flags:" >&2
- echo " -c --check - Run 'make check'." >&2
- echo " -d --dry-run - Do not run docker commands." >&2
- echo " -h --help - Show this help and exit." >&2
- echo " -t --tag - Print Docker tag to stdout and exit." >&2
- echo " -v --verbose - Verbose execution." >&2
+ echo " -c --check - Run 'make check'." >&2
+ 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
echo "Environment:" >&2
- echo " DOCKER_TAG - Default: '${DOCKER_TAG}'" >&2
+ 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="cdhtv"
-long_opts="check,dry-run,help,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}" -- "$@")
usage=1
shift
;;
+ -i | --interactive)
+ interactive=1
+ shift
+ ;;
+ -m | --make-command)
+ shift
+ makecmd=${1}
+ shift
+ ;;
+ -o | --configure-opts)
+ shift
+ configure_opts=${1}
+ shift
+ ;;
-t | --tag)
tag=1
shift
exit 0
fi
-docker_args="--rm \
- -u $(id -u):$(id -g) \
+docker_base_args="\
+ --rm \
-v /etc/group:/etc/group:ro \
-v /etc/passwd:/etc/passwd:ro \
-v ${TOP_DIR}:/opt/pb \
-w /opt/pb \
"
-if [[ -n "$verbose}" ]]; then
+docker_user_args="-u $(id -u):$(id -g)"
+
+if [[ -n "${interactive}" ]]; then
+ cd "${TOP_DIR}"
+ docker_args="${docker_base_args} --privileged"
+ run_cmd "docker run -it ${docker_args} ${DOCKER_TAG} /bin/bash"
+ exit
+fi
+
+if [[ -n "${verbose}" ]]; then
bash_debug="-x"
fi
docker_extra="true"
fi
+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 && ./configure --with-ncurses && make && ${docker_extra}'"
+ -c './bootstrap && ${flags} ./configure ${configure_opts[@]} && ${makecmd} && ${docker_extra}'"