diff options
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 \ |
