summaryrefslogtreecommitdiffstats
path: root/pkgs/stdenv/generic
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2019-01-27 18:22:41 -0500
committerGitHub <noreply@github.com>2019-01-27 18:22:41 -0500
commitd54fbbebbb5195d6dea3b7cf6185c90554b4d6c2 (patch)
treee16913005949e95d84320d8a876b3de74170ca8b /pkgs/stdenv/generic
parent8657f25239fe62abce06347f110d043e2d303968 (diff)
parent9172c1eee2e376ef9070d1db0586471c52397242 (diff)
Merge pull request #49552 from matthewbauer/setup-dedupe
setup.sh: avoid running the same hook twice
Diffstat (limited to 'pkgs/stdenv/generic')
-rw-r--r--pkgs/stdenv/generic/setup.sh8
1 files changed, 8 insertions, 0 deletions
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index 0f63693e09e7..8dff35578071 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -558,6 +558,10 @@ _addToEnv() {
(( "$depHostOffset" <= "$depTargetOffset" )) || continue
local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"
if [[ -z "${strictDeps-}" ]]; then
+
+ # Keep track of which packages we have visited before.
+ local visitedPkgs=""
+
# Apply environment hooks to all packages during native
# compilation to ease the transition.
#
@@ -570,7 +574,11 @@ _addToEnv() {
${pkgsHostTarget+"${pkgsHostTarget[@]}"} \
${pkgsTargetTarget+"${pkgsTargetTarget[@]}"}
do
+ if [[ "$visitedPkgs" = *"$pkg"* ]]; then
+ continue
+ fi
runHook "${!hookRef}" "$pkg"
+ visitedPkgs+=" $pkg"
done
else
local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"