aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xpackaging/run-in-docker43
2 files changed, 29 insertions, 15 deletions
diff --git a/.gitignore b/.gitignore
index dcf6b220..924d020b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,7 @@ nosetests.xml
*.sw?
\#*#
.#*
+*.log
docs/*.1
docs/*.5
diff --git a/packaging/run-in-docker b/packaging/run-in-docker
index 9fdaf2fc..9a3a2ef4 100755
--- a/packaging/run-in-docker
+++ b/packaging/run-in-docker
@@ -10,13 +10,14 @@ debian_tag="${DEBIAN_TAG:-sid}"
usage() {
cat << EOF
-Usage: $(basename ${this}) [OPTION]... [ACTION]
-Run tests or create package in a docker container
+Usage: $(basename "${this}") [OPTION]... [ACTION]
+Run tests or create package in a podman (or docker) container
Options:
-h print this usage and exit
-C PROJECT_DIR change to PROJECT_DIR (default: ${project_dir})
-t DEBIAN_TAG debian release tag (default: ${debian_tag})
+ -c CONTAINER_CMD container runner command (default: podman)
Actions:
help print this usage and exit
@@ -31,10 +32,11 @@ EOF
die() { { echo "ERROR: ${@}"; usage; } >&2; exit 1; }
# convenience wrapper
-docker_build() {
- docker build \
- --force-rm=${DOCKER_BUILD_FORCE_RM:-false} \
- --no-cache=${DOCKER_BUILD_NO_CACHE:-false} \
+# shellcheck disable=SC2068 # re-splitting command arguments intentional
+container_build() {
+ ${container_cmd} build \
+ --force-rm="${DOCKER_BUILD_FORCE_RM:-false}" \
+ --no-cache="${DOCKER_BUILD_NO_CACHE:-false}" \
${@}
}
@@ -55,7 +57,7 @@ ${this##${PWD}/}
.git*
EOF
) >${project_dir}/.dockerignore
- docker_build \
+ container_build \
--pull=${DOCKER_BUILD_PULL:-false} \
--build-arg=FROM_IMAGE=debian:${debian_tag} \
-t gbp-base:${debian_tag} -f- ${project_dir} <<'EOF'
@@ -80,7 +82,8 @@ EOF
gbp_test() {
base_build
for L in C.UTF-8 C; do
- docker run --rm -ie"TEST_LOCALE=${L}" gbp-base:${debian_tag} sh <<'EOF'
+ ${container_cmd} run --rm -ie"TEST_LOCALE=${L}" \
+ "gbp-base:${debian_tag}" sh <<'EOF'
set -euvx
make all+net
make -C docs
@@ -91,16 +94,16 @@ EOF
# create debian package artifacts, copy to host
gbp_package() {
base_build
- docker_build \
- --build-arg=FROM_IMAGE=gbp-base:${debian_tag} \
- -t gbp-package:${debian_tag} -f- ${project_dir} <<'EOF'
+ container_build \
+ --build-arg="FROM_IMAGE=gbp-base:${debian_tag}" \
+ -t "gbp-package:${debian_tag}" -f- "${project_dir}" <<'EOF'
arg FROM_IMAGE
from ${FROM_IMAGE}
run dpkg-buildpackage -j$(nproc) -sa -us -uc
EOF
- docker run --rm -iu0:0 \
- --mount type=bind,source="${PWD}",target=/mnt/host-volume \
- gbp-package:${debian_tag} sh <<EOF
+ ${container_cmd} run --rm -iu0:0 \
+ --mount="type=bind,source=${PWD},target=/mnt/host-volume" \
+ "gbp-package:${debian_tag}" sh <<EOF
set -euvx
find .. -maxdepth 1 -mindepth 1 -type f \
-exec chown -v $(id -u):$(id -g) {} + \
@@ -108,17 +111,27 @@ find .. -maxdepth 1 -mindepth 1 -type f \
EOF
}
-while getopts ":hC:t:" opt; do
+while getopts ":hC:t:c:" opt; do
case $opt in
h) usage; exit 0;;
C) project_dir="$(readlink -e ${OPTARG})"
[ -d "${project_dir}" ] || die "bad project dir ${OPTARG}";;
t) debian_tag="${OPTARG}";;
+ c) container_cmd="${OPTARG}";;
:) die "missing argument: -${OPTARG}";;
\?) die "bad option: -${OPTARG}";;
esac
done
+# Set default container command
+container_cmd="${container_cmd:-podman}"
+
+# Set default container command value if none set
+case "${container_cmd}" in
+ docker|podman) ;;
+ *) die "container command is expected to be one of 'docker' or 'podman'" ;;
+esac
+
shift $((${OPTIND} - 1))
case "${1:-test}" in
'help') usage; exit 0;;