We have a Containerfile in tree now that is used for CI, but it's not completely self evident, how to use it locally. Add a simple script that mounts the current working directory into the container and calls its arguments inside. Example building MAKEALL (Some configs will expectedly fail due to size or firmware constraints): ./scripts/container.sh ./MAKEALL Example starting a shell: ./scripts/container.sh /bin/bash Signed-off-by: Ahmad Fatoum <ahmad@xxxxxx> --- scripts/container.sh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 scripts/container.sh diff --git a/scripts/container.sh b/scripts/container.sh new file mode 100755 index 000000000000..4ddee7d0a90c --- /dev/null +++ b/scripts/container.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only + +CONTAINER=${CONTAINER:-ghcr.io/barebox/barebox/barebox-ci:latest} +KCONFIG_ADD="$test/kconfig/disable_target_tools.kconf KCONFIG_ADD" + +while getopts "c:uh" opt; do + case "$opt" in + h) + echo "usage: $0 [-c CONTAINER] [command...]" + echo "This script mounts the working directory into a container" + echo "and runs the specified command inside or /bin/bash if no" + echo "command was specified." + echo "OPTIONS:" + echo " -c <container> container image to use (default: $CONTAINER)" + echo " -u pull container image updates" + echo " -h This help text" + + exit 0 + ;; + u) + update=1 + ;; + c) + CONTAINER="$OPTARG" + ;; + esac +done + +shift $((OPTIND-1)) + +[ -n "$update" ] && podman pull "$CONTAINER" + +pwd_real=$(realpath $PWD) + +exec podman run -it -v "$PWD:$PWD:z" -v "$pwd_real:$pwd_real:z" --rm \ + -e TERM -e ARCH -e CONFIG -e JOBS -e LOGDIR -e REGEX \ + -e KCONFIG_ADD -w "$PWD" --userns=keep-id \ + -- "$CONTAINER" "${@:-/bin/bash}" -- 2.40.1