You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.5 KiB
78 lines
2.5 KiB
#! /bin/sh
|
|
## -*- mode: sh -*-
|
|
set -e
|
|
|
|
uname_S=$(uname -s 2>/dev/null || echo not)
|
|
|
|
# If we're running in a terminal and want interactive docker
|
|
# Specifically "is there a STDIN file descriptor"
|
|
if [ -t 0 ]; then
|
|
: "${DOCKER_RUN_INTERACTIVE_OPTS:=--tty --interactive}"
|
|
fi
|
|
|
|
|
|
|
|
if [ "${uname_S}" = "Darwin" ]; then
|
|
# This stops macos from copying resource forks into thigns like tar
|
|
export COPYFILE_DISABLE=true
|
|
else
|
|
ARDUINO_LOCAL_LIB_PATH="${ARDUINO_LOCAL_LIB_PATH:-${HOME}/Arduino}"
|
|
fi
|
|
|
|
|
|
if [ ! -d ./.arduino/user/hardware ]; then
|
|
echo "Running tests in Docker requires that your Arduino environment be installed in .arduino inside the top-level Kaleidoscope directory. To set this up, run 'make setup'"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
|
|
XFER_DIR="$(pwd)/.docker_xfer"
|
|
mkdir -p "${XFER_DIR}"
|
|
|
|
if [ -z "$_NO_SYNC_KALEIDOSCOPE" ]; then
|
|
|
|
echo "Preparing Kaleidoscope..."
|
|
|
|
|
|
echo "The bundle is coming from ${ARDUINO_DIRECTORIES_USER}/hardware/keyboardio"
|
|
tar -cf "${XFER_DIR}/kaleidoscope.tar" \
|
|
--exclude .arduino/data \
|
|
--exclude .arduino/downloads \
|
|
--exclude .arduino/user/hardware/keyboardio/avr/libraries/Kaleidoscope \
|
|
--exclude .arduino/user/hardware/keyboardio/gd32/libraries/Kaleidoscope \
|
|
--exclude bin/arduino-cli \
|
|
--exclude .docker_xfer \
|
|
--exclude .git \
|
|
--exclude _build \
|
|
--exclude testing/googletest/build \
|
|
.
|
|
|
|
fi
|
|
|
|
if [ -z "$DOCKER_LIVE_KALEIDOSCOPE_DIR" ]; then
|
|
_KALEIDOSCOPE_MOUNT="type=tmpfs,destination=/kaleidoscope:exec"
|
|
else
|
|
echo "Kaleidoscope is mounted read/write inside docker"
|
|
_KALEIDOSCOPE_MOUNT="type=bind,source=$(pwd),destination=/kaleidoscope,consistency=cached"
|
|
fi
|
|
|
|
|
|
echo "Building the docker image. This could take a few minutes."
|
|
docker build -q -t kaleidoscope/docker etc
|
|
# We do want word splitting since there are multiple options here
|
|
# shellcheck disable=SC2086
|
|
docker run --rm $DOCKER_RUN_INTERACTIVE_OPTS \
|
|
--mount ${_KALEIDOSCOPE_MOUNT} \
|
|
--mount type=bind,source="${XFER_DIR}",destination=/kaleidoscope-src,consistency=delegated,readonly \
|
|
--mount type=volume,source=kaleidoscope-persist,destination=/kaleidoscope-persist,consistency=delegated \
|
|
--mount type=volume,source=kaleidoscope-googletest-build,destination=/kaleidoscope/testing/googletest/build,consistency=delegated \
|
|
--mount type=volume,source=kaleidoscope-build,destination=/kaleidoscope/_build,consistency=delegated \
|
|
--env ARDUINO_DIRECTORIES_DATA=/arduino-cli/data \
|
|
--env ARDUINO_DIRECTORIES_USER=/kaleidoscope/.arduino/user/ \
|
|
--env _NO_SYNC_KALEIDOSCOPE=${_NO_SYNC_KALEIDOSCOPE} \
|
|
kaleidoscope/docker "$*"
|
|
|
|
|
|
exit 0
|