From 4c78cc0155369286688bba421d5d8f5713401cc0 Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Fri, 23 Oct 2020 23:29:49 -0700 Subject: [PATCH] finish killing off the ".conf" file that was really just more code --- bin/kaleidoscope-builder | 58 ++++++++++++++++++++++++++++++++++- etc/kaleidoscope-builder.conf | 50 ------------------------------ 2 files changed, 57 insertions(+), 51 deletions(-) delete mode 100644 etc/kaleidoscope-builder.conf diff --git a/bin/kaleidoscope-builder b/bin/kaleidoscope-builder index e3fc4e3b..b3fda72b 100755 --- a/bin/kaleidoscope-builder +++ b/bin/kaleidoscope-builder @@ -29,6 +29,40 @@ uname_S=$(uname -s 2>/dev/null || echo not) uname_O=$(uname -o 2>/dev/null || echo not) } + +adjust_for_virtual_build() { + if [ "${uname_S}" = "FreeBSD" ]; then + : "${COMPILER_PATH:=/usr/local/bin/}" + else + : "${COMPILER_PATH:=/usr/bin/}" + fi + + COMPILER_PREFIX="" +} + +adjust_for_cygwin() { + # The Windows arduino-builder.exe doesn't understand being told to exec against Cygwin symlinks + CCACHE_NOT_SUPPORTED=1 + + # It's important that all of these be underneath /cygdrive/c so they can be converted to Windows paths that the + # Windows Arduino binaries can understand. + : "${TMPDIR:=/cygdrive/c/Users/${USER}/AppData/Local/Temp}" + + # We need to prevent Windows executables from being passed parameters that are absolute paths, since they won't + # be interpretable when of the form /cygdrive/c/foo. To work around this, we set the common path root variables + # to use relative paths instead of absolute paths, since those have mostly platform-agnostic behavior. + # + # Note that this trick requires that all of these paths exist on the same drive letter as the current directory, + # since otherwise even the relative paths would include Cygwin-specific components. So... + if [[ $(realpath --relative-base=/cygdrive/c .) == /* ]]; then + echo "kaleidoscope-builder's Cygwin support is currently limited to running from within /cygdrive/c" + exit 1 + fi + + TMPDIR="$(realpath --relative-to=./ ${TMPDIR})" +} + + absolute_filename() { echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" } @@ -39,7 +73,6 @@ read_conf_files() { "${HOME}/.kaleidoscope-builder.conf" \ "$(pwd)/.kaleidoscope-builder.conf" \ "$(pwd)/kaleidoscope-builder.conf" \ - "${KALEIDOSCOPE_DIR}/etc/kaleidoscope-builder.conf"; do if [ -e "${conf_file}" ]; then # shellcheck disable=SC1090 . "${conf_file}" @@ -801,6 +834,29 @@ else ARDUINO_VERBOSE="--quiet" fi + + + +: "${BOARD:=model01}" + +if [[ -z "${ARCH}" && -n "${FQBN}" ]]; then + ARCH=$(echo "${FQBN}" | sed -n -e 's/^[^:]\+:\([^:]\+\).*/\1/p') +fi + +: "${ARCH:=avr}" +: "${FQBN:=keyboardio:${ARCH}:${BOARD}}" + +if [ "${ARCH}" = "virtual" ]; then + adjust_for_virtual_build +fi + +if [ "${uname_O}" = "Cygwin" ]; then + adjust_for_cygwin +fi + + + + ## Parse the command-line ## - anything that has a =, is an env var ## - from the remaining stuff, the first one is the Library/Sketch diff --git a/etc/kaleidoscope-builder.conf b/etc/kaleidoscope-builder.conf deleted file mode 100644 index 650d3b11..00000000 --- a/etc/kaleidoscope-builder.conf +++ /dev/null @@ -1,50 +0,0 @@ -# -*- shell-script -*- - -######## -######## Keyboard hardware definitions -######## - -: "${BOARD:=model01}" - -if [[ -z "${ARCH}" && -n "${FQBN}" ]]; then - ARCH=$(echo "${FQBN}" | sed -n -e 's/^[^:]\+:\([^:]\+\).*/\1/p') -fi - -: "${ARCH:=avr}" - -if [ "${ARCH}" = "virtual" ]; then - : "${FQBN:=keyboardio:virtual:${BOARD}}" - if [ "${uname_S}" = "FreeBSD" ]; then - : "${COMPILER_PATH:=/usr/local/bin/}" - else - : "${COMPILER_PATH:=/usr/bin/}" - fi - - COMPILER_PREFIX="" -fi - -: "${FQBN:=keyboardio:${ARCH}:${BOARD}}" - -if [ "${uname_O}" = "Cygwin" ]; then - # The Windows arduino-builder.exe doesn't understand being told to exec against Cygwin symlinks - CCACHE_NOT_SUPPORTED=1 - - # - # It's important that all of these be underneath /cygdrive/c so they can be converted to Windows paths that the - # Windows Arduino binaries can understand. - : "${TMPDIR:=/cygdrive/c/Users/${USER}/AppData/Local/Temp}" - - # We need to prevent Windows executables from being passed parameters that are absolute paths, since they won't - # be interpretable when of the form /cygdrive/c/foo. To work around this, we set the common path root variables - # to use relative paths instead of absolute paths, since those have mostly platform-agnostic behavior. - # - # Note that this trick requires that all of these paths exist on the same drive letter as the current directory, - # since otherwise even the relative paths would include Cygwin-specific components. So... - if [[ $(realpath --relative-base=/cygdrive/c .) == /* ]]; then - echo "kaleidoscope-builder's Cygwin support is currently limited to running from within /cygdrive/c" - exit 1 - fi - - TMPDIR="$(realpath --relative-to=./ ${TMPDIR})" - -fi