diff options
| author | Max Audron <audron@cocaine.farm> | 2021-02-28 05:59:42 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-28 15:59:42 +1100 |
| commit | e4d3ff2374142fe6431b68874f6604a471732fae (patch) | |
| tree | 7d2ee5ec0fcd7e901be3c46ad7afb94d7a6d2fc0 /util | |
| parent | bcbcb3d107a3d991044354129c06e77ce19bda27 (diff) | |
| download | qmk_firmware-e4d3ff2374142fe6431b68874f6604a471732fae.tar.gz qmk_firmware-e4d3ff2374142fe6431b68874f6604a471732fae.zip | |
Add support for using podman to util/docker_build.sh (#10819)
* add podman support to docker_build.sh script
* break out runtime into the RUNTIME variable
* allows RUNTIME to be set by the user
* decides on docker or podman if docker isn't avaible
* rewrote check for docker-machine to account only for docker runtime
* put --user arg into a variable only to be used with docker
this is not needed with podman as podman maps the containers root id
to the users id.
* add podman to getting_started_docker documentation
Diffstat (limited to 'util')
| -rwxr-xr-x | util/docker_build.sh | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/util/docker_build.sh b/util/docker_build.sh index bf13f5097..2b109be76 100755 --- a/util/docker_build.sh +++ b/util/docker_build.sh | |||
| @@ -17,12 +17,27 @@ done | |||
| 17 | if [ $# -gt 1 ]; then | 17 | if [ $# -gt 1 ]; then |
| 18 | errcho "$USAGE" | 18 | errcho "$USAGE" |
| 19 | exit 1 | 19 | exit 1 |
| 20 | elif ! command -v docker >/dev/null 2>&1; then | ||
| 21 | errcho "Error: docker not found" | ||
| 22 | errcho "See https://docs.docker.com/install/#supported-platforms for installation instructions" | ||
| 23 | exit 2 | ||
| 24 | fi | 20 | fi |
| 25 | 21 | ||
| 22 | # Allow $RUNTIME to be overriden by the user as an environment variable | ||
| 23 | # Else check if either docker or podman exit and set them as runtime | ||
| 24 | # if none are found error out | ||
| 25 | if [ -z "$RUNTIME" ]; then | ||
| 26 | if command -v docker >/dev/null 2>&1; then | ||
| 27 | RUNTIME="docker" | ||
| 28 | elif command -v podman >/dev/null 2>&1; then | ||
| 29 | RUNTIME="podman" | ||
| 30 | else | ||
| 31 | errcho "Error: no compatible container runtime found." | ||
| 32 | errcho "Either podman or docker are required." | ||
| 33 | errcho "See https://podman.io/getting-started/installation" | ||
| 34 | errcho "or https://docs.docker.com/install/#supported-platforms" | ||
| 35 | errcho "for installation instructions." | ||
| 36 | exit 2 | ||
| 37 | fi | ||
| 38 | fi | ||
| 39 | |||
| 40 | |||
| 26 | # Determine arguments | 41 | # Determine arguments |
| 27 | if [ $# -eq 0 ]; then | 42 | if [ $# -eq 0 ]; then |
| 28 | printf "keyboard=" && read -r keyboard | 43 | printf "keyboard=" && read -r keyboard |
| @@ -41,20 +56,26 @@ if [ -z "$keyboard" ]; then | |||
| 41 | keyboard=all | 56 | keyboard=all |
| 42 | fi | 57 | fi |
| 43 | if [ -n "$target" ]; then | 58 | if [ -n "$target" ]; then |
| 44 | if [ "$(uname)" = "Linux" ] || docker-machine active >/dev/null 2>&1; then | 59 | # IF we are using docker on non Linux and docker-machine isn't working print an error |
| 45 | usb_args="--privileged -v /dev:/dev" | 60 | # ELSE set usb_args |
| 46 | else | 61 | if [ ! "$(uname)" = "Linux" ] && [ "$RUNTIME" = "docker" ] && ! docker-machine active >/dev/null 2>&1; then |
| 47 | errcho "Error: target requires docker-machine to work on your platform" | 62 | errcho "Error: target requires docker-machine to work on your platform" |
| 48 | errcho "See http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos" | 63 | errcho "See http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos" |
| 49 | errcho "Consider flashing with QMK Toolbox (https://github.com/qmk/qmk_toolbox) instead" | 64 | errcho "Consider flashing with QMK Toolbox (https://github.com/qmk/qmk_toolbox) instead" |
| 50 | exit 3 | 65 | exit 3 |
| 66 | else | ||
| 67 | usb_args="--privileged -v /dev:/dev" | ||
| 51 | fi | 68 | fi |
| 52 | fi | 69 | fi |
| 53 | dir=$(pwd -W 2>/dev/null) || dir=$PWD # Use Windows path if on Windows | 70 | dir=$(pwd -W 2>/dev/null) || dir=$PWD # Use Windows path if on Windows |
| 54 | 71 | ||
| 72 | if [ "$RUNTIME" = "docker" ]; then | ||
| 73 | uid_arg="--user $(id -u):$(id -g)" | ||
| 74 | fi | ||
| 75 | |||
| 55 | # Run container and build firmware | 76 | # Run container and build firmware |
| 56 | docker run --rm -it $usb_args \ | 77 | "$RUNTIME" run --rm -it $usb_args \ |
| 57 | --user $(id -u):$(id -g) \ | 78 | $uid_arg \ |
| 58 | -w /qmk_firmware \ | 79 | -w /qmk_firmware \ |
| 59 | -v "$dir":/qmk_firmware \ | 80 | -v "$dir":/qmk_firmware \ |
| 60 | -e ALT_GET_KEYBOARDS=true \ | 81 | -e ALT_GET_KEYBOARDS=true \ |
