diff options
author | Vladimír Čunát <v@cunat.cz> | 2021-07-11 16:02:17 +0200 |
---|---|---|
committer | Vladimír Čunát <v@cunat.cz> | 2021-07-16 10:00:29 +0200 |
commit | 6f239d7309690153b181479735d9a254dfa2fcc3 (patch) | |
tree | 01d72db565360854dc9fefe5d8d1796bde5e3a7a /pkgs/stdenv/generic | |
parent | 3ea417e47f70a6b8e668afe340e137b517cc8d82 (diff) | |
download | nixpkgs-6f239d7309690153b181479735d9a254dfa2fcc3.tar nixpkgs-6f239d7309690153b181479735d9a254dfa2fcc3.tar.gz nixpkgs-6f239d7309690153b181479735d9a254dfa2fcc3.tar.bz2 nixpkgs-6f239d7309690153b181479735d9a254dfa2fcc3.tar.lz nixpkgs-6f239d7309690153b181479735d9a254dfa2fcc3.tar.xz nixpkgs-6f239d7309690153b181479735d9a254dfa2fcc3.tar.zst nixpkgs-6f239d7309690153b181479735d9a254dfa2fcc3.zip |
Revert "setup.sh: fatal: This word should yield a string, but it contains an array"
This reverts commit bf99a819a16089a8df03cc06262f06b31dfb683c. It caused regressions in some packages; see: https://github.com/NixOS/nixpkgs/commit/bf99a819a160
Diffstat (limited to 'pkgs/stdenv/generic')
-rw-r--r-- | pkgs/stdenv/generic/setup.sh | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 3515439337c..4ae561fbca0 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -368,13 +368,16 @@ findInputs() { local var="${!varRef}" unset -v varVar varRef - # var is a reference to an array and can sometimes be undefined - # so checking the array with "${!var}[@]" does not work - # check if $pkgs is in the var ref array - # TODO(@Ericson2314): Restore using associative array - if [[ "${var}[*]" = *" $pkg "* ]]; then - return 0 - fi + # TODO(@Ericson2314): Restore using associative array once Darwin + # nix-shell doesn't use impure bash. This should replace the O(n) + # case with an O(1) hash map lookup, assuming bash is implemented + # well :D. + local varSlice="${var}[*]" + # ${..-} to hack around old bash empty array problem + case "${!varSlice-}" in + *" $pkg "*) return 0 ;; + esac + unset -v varSlice eval "$var"'+=("$pkg")' |