utils/docker-run: allow running with Podman

Podman is command line compatible with Docker, there's no need to
require contributors to install Docker to run checks before sending
patches.

The additional "--userns=keep-id" option is necessary because unlike
Docker Podman creates a user namespace for containers by
default. Without keep-id the repository and pre-existing output files
belong to root inside the container namespace, breaking writes,
certain Git safety checks, and possibly all access (if the user is
using a strict umask).

Signed-off-by: Fiona Klute <fiona.klute+wiwa@gmx.de>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
Fiona Klute
2024-05-31 12:44:25 +02:00
committed by Yann E. MORIN
parent b574b0b9e6
commit 9a629f5129

View File

@@ -29,6 +29,16 @@ declare -a mountpoints=(
"$(pwd)"
)
if command -v docker >/dev/null; then
DOCKER="docker"
elif command -v podman >/dev/null; then
DOCKER="podman"
docker_opts+=( --userns=keep-id )
else
echo "ERROR: Neither docker nor podman available!" >&2
exit 1
fi
# curl lists (and recognises and uses) other types of *_proxy variables,
# but only those make sense for Buildroot:
for env in all_proxy http_proxy https_proxy ftp_proxy no_proxy; do
@@ -84,4 +94,4 @@ if tty -s; then
docker_opts+=( -t )
fi
exec docker run "${docker_opts[@]}" "${IMAGE}" "${@}"
exec ${DOCKER} run "${docker_opts[@]}" "${IMAGE}" "${@}"