Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit 39f8fb7

Browse files
author
Nicolas Cornu
authored
Accept space in mod path (#803)
1 parent 4ffe156 commit 39f8fb7

File tree

3 files changed

+22
-19
lines changed

3 files changed

+22
-19
lines changed

coreneuron/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ set_target_properties(
307307
# =============================================================================
308308
# create special-core with halfgap.mod for tests
309309
# =============================================================================
310-
set(modfile_directory "${CORENEURON_PROJECT_SOURCE_DIR}/tests/integration/ring_gap/mod")
310+
set(modfile_directory "${CORENEURON_PROJECT_SOURCE_DIR}/tests/integration/ring_gap/mod files")
311311
file(GLOB modfiles "${modfile_directory}/*.mod")
312312

313313
if(CORENRN_ENABLE_SHARED)

extra/nrnivmodl-core.in

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@ set -e
1515
unset PMI_RANK
1616

1717
# name of the script
18-
APP_NAME=$(basename $0)
18+
APP_NAME="$(basename "$0")"
1919

2020
# directory and parent directory of this script
21-
PARENT_DIR="$(dirname $BASH_SOURCE)/.."
21+
PARENT_DIR="$(dirname "$BASH_SOURCE")/.."
2222

2323
# prefer perl exe set by neuron wrappers in case of wheel
24-
PERL_EXE=${CORENRN_PERLEXE:-@PERL_EXECUTABLE@}
24+
PERL_EXE="${CORENRN_PERLEXE:-@PERL_EXECUTABLE@}"
2525
# in case of mac installer, wrapper is not used and hence
2626
# check if binary exist. otherwise, just rely on perl being
2727
# in default $PATH
28-
if [ ! -f "${PERL_EXE}" ]; then PERL_EXE=$(which perl); fi
28+
if [ ! -f "${PERL_EXE}" ]; then PERL_EXE="$(which perl)"; fi
2929

30-
ROOT_DIR=$(${PERL_EXE} -e "use Cwd 'abs_path'; print abs_path('$PARENT_DIR')")
30+
ROOT_DIR="$("${PERL_EXE}" -e "use Cwd 'abs_path'; print abs_path('$PARENT_DIR')")"
3131

3232
# default arguments : number of parallel builds and default mod file path
3333
PARALLEL_BUILDS=4
@@ -101,42 +101,45 @@ fi
101101

102102
# if defined mods dir be in $1
103103
if [ $# -eq 1 ]; then
104-
# Note: due to bug #712 makefile wont handle mod dir with spaces, so we let it fail here
105-
params_MODS_PATH=$1
104+
params_MODS_PATH="$1"
106105
fi
107106

107+
shopt -s nullglob
108108
# warn if no mod files provided
109-
if [ -d $params_MODS_PATH ]; then
110-
ls $params_MODS_PATH/*.mod &>/dev/null || echo "WARNING: No mod files found, compiling default ones only!"
109+
if [ -d "$params_MODS_PATH" ]; then
110+
files=( "$params_MODS_PATH"/*.mod )
111+
if [ ${#files} -eq 0 ]; then
112+
echo "WARNING: No mod files found in '$(realpath ${params_MODS_PATH})', compiling default ones only!"
113+
fi
111114
else
112115
echo "FATAL: Invalid mods directory: '$params_MODS_PATH'"
113116
exit 1
114117
fi
115118

116119
# temporary directory where mod files will be copied
117-
temp_mod_dir=@CMAKE_HOST_SYSTEM_PROCESSOR@/corenrn/mod2c
118-
mkdir -p $temp_mod_dir
120+
temp_mod_dir="@CMAKE_HOST_SYSTEM_PROCESSOR@/corenrn/mod2c"
121+
mkdir -p "$temp_mod_dir"
119122

120123
# copy mod files with include files. note that ${ROOT_DIR}/share
121124
# has inbuilt mod files and user provided mod files are in $params_MODS_PATH.
122125
set +e
123-
for mod_dir in ${ROOT_DIR}/share/modfile $params_MODS_PATH;
126+
for mod_dir in "${ROOT_DIR}/share/modfile" "$params_MODS_PATH" ;
124127
do
125128
# copy mod files and include files
126-
files=`ls $mod_dir/*.mod $mod_dir/*.inc $mod_dir/*.h* 2>/dev/null`
127-
for f in $files;
129+
files=( "$mod_dir/"*.mod "$mod_dir/"*.inc "$mod_dir/"*.h* )
130+
for f in "${files[@]}";
128131
do
129132
# copy mod files only if it's changed (to avoid rebuild)
130-
target_file_path=$temp_mod_dir/`basename $f`
131-
if ! diff -q $f $target_file_path &>/dev/null; then
132-
cp $f $target_file_path
133+
target_file_path="$temp_mod_dir/$(basename "$f")"
134+
if ! diff -q "$f" "$target_file_path" &>/dev/null; then
135+
cp "$f" "$target_file_path"
133136
fi
134137
done
135138
done
136139
set -e
137140

138141
# use new mod files directory for compilation
139-
params_MODS_PATH=$temp_mod_dir
142+
params_MODS_PATH="$temp_mod_dir"
140143

141144
# build params to make command
142145
make_params=("ROOT=${ROOT_DIR}")
File renamed without changes.

0 commit comments

Comments
 (0)