autoPatchelfHook: fix precise dependency ignorance
This commit fixes precise dependency ignorance by converting the environment variable `autoPatchelfIgnoreMissingDeps` into a bash array `ignoreMissingDepsArray`, passing `"${ignoreMissingDepsArray[@]}"` instead of `"${autoPatchelfIgnoreMissingDeps[@]}"` to the python script. The original implementation does not work when `autoPatchelfIgnoreMissingDeps` contains multiple dependency names. Because it mistakenly passes `"${autoPatchelfIgnoreMissingDeps[@]}"` to the python script. According to the Nix manual (https://nixos.org/manual/nix/stable/expressions/derivations.html), lists of strings are concatenated into whitespace-separated strings, then passed to the builder as environment variables. So, if `autoPatchelfIgnoreMissingDeps = [ "dep1" "dep2" "dep3" ]`, `"${autoPatchelfIgnoreMissingDeps[@]}"` will be expanded to a single argument `"dep1 dep2 dep3"`, which is not the intended behavior, because the python script takes the long argument as a dependency name. With this commit, `"${ignoreMissingDepsArray[@]}"` will be expanded to three arguments `"dep1" "dep2" "dep3"` arguments as expected, fixing the issue.
This commit is contained in:
parent
831a344b8b
commit
bedc267a78
1 changed files with 4 additions and 3 deletions
|
@ -53,17 +53,18 @@ autoPatchelf() {
|
|||
esac
|
||||
done
|
||||
|
||||
if [ "${autoPatchelfIgnoreMissingDeps[*]}" == "1" ]; then
|
||||
local ignoreMissingDepsArray=($autoPatchelfIgnoreMissingDeps)
|
||||
if [ "$autoPatchelfIgnoreMissingDeps" == "1" ]; then
|
||||
echo "autoPatchelf: WARNING: setting 'autoPatchelfIgnoreMissingDeps" \
|
||||
"= true;' is deprecated and will be removed in a future release." \
|
||||
"Use 'autoPatchelfIgnoreMissingDeps = [ \"*\" ];' instead." >&2
|
||||
autoPatchelfIgnoreMissingDeps=( "*" )
|
||||
ignoreMissingDepsArray=( "*" )
|
||||
fi
|
||||
|
||||
local runtimeDependenciesArray=($runtimeDependencies)
|
||||
@pythonInterpreter@ @autoPatchelfScript@ \
|
||||
${norecurse:+--no-recurse} \
|
||||
--ignore-missing "${autoPatchelfIgnoreMissingDeps[@]}" \
|
||||
--ignore-missing "${ignoreMissingDepsArray[@]}" \
|
||||
--paths "$@" \
|
||||
--libs "${autoPatchelfLibs[@]}" \
|
||||
"${extraAutoPatchelfLibs[@]}" \
|
||||
|
|
Loading…
Reference in a new issue