From 28919e5bfa23111e099f91b7edcc5828a9d451b3 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 16 Apr 2016 00:51:41 +0100 Subject: [PATCH] wrapPythonPrograms: preserve quoted strings from makeWrapperArgs Currently, if a user tries to to set a variable that contains spaces, it will be broken up before being passed to wrapProgram. This commit resolves that by converting makeWrapperArgs to an array that preserves any quoted elements using bash's parser. --- pkgs/development/python-modules/generic/wrap.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/generic/wrap.sh b/pkgs/development/python-modules/generic/wrap.sh index fa6a4d0102f..5d8e2e98673 100644 --- a/pkgs/development/python-modules/generic/wrap.sh +++ b/pkgs/development/python-modules/generic/wrap.sh @@ -44,16 +44,15 @@ wrapPythonProgramsIn() { # wrapProgram creates the executable shell script described # above. The script will set PYTHONPATH and PATH variables.! # (see pkgs/build-support/setup-hooks/make-wrapper.sh) - local wrap_args="$f \ - --prefix PYTHONPATH ':' $program_PYTHONPATH \ - --prefix PATH ':' $program_PATH:$dir/bin" + local -a wrap_args=("$f" + --prefix PYTHONPATH ':' "$program_PYTHONPATH" + --prefix PATH ':' "$program_PATH:$dir/bin") # Add any additional arguments provided by makeWrapperArgs # argument to buildPythonPackage. - for arg in $makeWrapperArgs; do - wrap_args="$wrap_args $arg" - done - wrapProgram $wrap_args + local -a user_args="($makeWrapperArgs)" + local -a wrapProgramArgs=("${wrap_args[@]}" "${user_args[@]}") + wrapProgram "${wrapProgramArgs[@]}" fi fi done