diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 8af369b1d17d..7e55f0db2aac 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -562,6 +562,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. # @@ -574,7 +578,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]"