From fe46e15998073b3f2ba8290e8d498d0a112b96ad Mon Sep 17 00:00:00 2001 From: Thomas Nowotny Date: Fri, 23 Jul 2021 09:42:08 +0100 Subject: [PATCH 1/2] Use symbolic links in /tmp to get around path names that contain spaces and create havoc in Makefiles. Solves issue #424. --- bin/genn-buildmodel.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/bin/genn-buildmodel.sh b/bin/genn-buildmodel.sh index 8b6f1b8ee9..0c3b06b189 100755 --- a/bin/genn-buildmodel.sh +++ b/bin/genn-buildmodel.sh @@ -52,13 +52,20 @@ done if [[ -z "$MODEL" ]]; then genn_error $LINENO 2 "no model file given" fi -pushd $OUT_PATH > /dev/null -OUT_PATH="$PWD" + +# Use pushd to get an absolute path and symbolic links in /tmp to avoid problems +# with spaces in the path names +pushd "$OUT_PATH" > /dev/null +OUT_PATH=/tmp/genn_outpath$RANDOM +ln -s "$PWD" $OUT_PATH popd > /dev/null pushd $(dirname $MODEL) > /dev/null -MACROS="MODEL=$PWD/$(basename $MODEL) GENERATOR_PATH=$OUT_PATH BUILD_MODEL_INCLUDE=$BUILD_MODEL_INCLUDE CXX_STANDARD=$CXX_STANDARD" +MODEL_PATH=/tmp/genn_modelpath$RANDOM +ln -s "$PWD" $MODEL_PATH +MACROS="MODEL=$MODEL_PATH/$(basename $MODEL) GENERATOR_PATH=$OUT_PATH BUILD_MODEL_INCLUDE=$BUILD_MODEL_INCLUDE CXX_STANDARD=$CXX_STANDARD" GENERATOR=./generator popd > /dev/null + if [[ -n "$DEBUG" ]]; then MACROS="$MACROS DEBUG=1"; GENERATOR="$GENERATOR"_debug @@ -91,4 +98,8 @@ else "$GENERATOR" "$BASEDIR/../" "$OUT_PATH" "$FORCE_REBUILD" fi +# Remove the symbolic links in tmp to clean up +rm $OUT_PATH +rm $MODEL_PATH + echo "model build complete" From 5580f2fc8384225b8100afec4acf3636b05da293 Mon Sep 17 00:00:00 2001 From: Thomas Nowotny Date: Fri, 23 Jul 2021 17:22:24 +0100 Subject: [PATCH 2/2] Changed to using mktemp to create file names for the symlinks in /tmp /tmp is specified specifically as a location as the default location on Mac looks quite horrible which I feel could lead to confusion when displayed in the make command lines. -u is necessary as we want to create a symlink, not a regular file. --- bin/genn-buildmodel.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/genn-buildmodel.sh b/bin/genn-buildmodel.sh index 0c3b06b189..d85614cce7 100755 --- a/bin/genn-buildmodel.sh +++ b/bin/genn-buildmodel.sh @@ -56,11 +56,11 @@ fi # Use pushd to get an absolute path and symbolic links in /tmp to avoid problems # with spaces in the path names pushd "$OUT_PATH" > /dev/null -OUT_PATH=/tmp/genn_outpath$RANDOM +OUT_PATH=$(mktemp -u /tmp/genn.XXXXXXXX) ln -s "$PWD" $OUT_PATH popd > /dev/null pushd $(dirname $MODEL) > /dev/null -MODEL_PATH=/tmp/genn_modelpath$RANDOM +MODEL_PATH=$(mktemp -u /tmp/genn.XXXXXXXX) ln -s "$PWD" $MODEL_PATH MACROS="MODEL=$MODEL_PATH/$(basename $MODEL) GENERATOR_PATH=$OUT_PATH BUILD_MODEL_INCLUDE=$BUILD_MODEL_INCLUDE CXX_STANDARD=$CXX_STANDARD" GENERATOR=./generator