From b0633406cb70e0e4ae3470a6b49e32b38d99ac16 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Mon, 23 Dec 2019 17:16:16 +0100 Subject: [PATCH] python.pkgs.wrapPython: fix makeWrapperArgs When `makeWrapperArgs` is a Bash array, we only passed the first item to `wrapProgram`. We need to use `"${makeWrapperArgs[@]}"` to extract all the items. But that breaks the common string case so we need to handle that case separately. --- pkgs/development/interpreters/python/wrap.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/python/wrap.sh b/pkgs/development/interpreters/python/wrap.sh index b2d65422db4..4def461c938 100644 --- a/pkgs/development/interpreters/python/wrap.sh +++ b/pkgs/development/interpreters/python/wrap.sh @@ -78,7 +78,16 @@ wrapPythonProgramsIn() { # Add any additional arguments provided by makeWrapperArgs # argument to buildPythonPackage. - local -a user_args="($makeWrapperArgs)" + local -a user_args + # We need to support both the case when makeWrapperArgs + # is an array and a IFS-separated string. + # TODO: remove the string branch when __structuredAttrs are used. + if [[ "$(declare -p makeWrapperArgs)" =~ ^'declare -a makeWrapperArgs=' ]]; then + user_args=("${makeWrapperArgs[@]}") + else + user_args="($makeWrapperArgs)" + fi + local -a wrapProgramArgs=("${wrap_args[@]}" "${user_args[@]}") wrapProgram "${wrapProgramArgs[@]}" fi