diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2017-07-10 11:59:14 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2017-07-10 13:32:13 -0400 |
commit | 3cb745d5a69018829ac15f7d5a508135f6bda123 (patch) | |
tree | b12220dc50d09a0dec9cd6a174a2032e0f28748c /pkgs/stdenv/generic/setup.sh | |
parent | f385e224e5962cc80026171249a230d7111cc9bf (diff) | |
download | nixlib-3cb745d5a69018829ac15f7d5a508135f6bda123.tar nixlib-3cb745d5a69018829ac15f7d5a508135f6bda123.tar.gz nixlib-3cb745d5a69018829ac15f7d5a508135f6bda123.tar.bz2 nixlib-3cb745d5a69018829ac15f7d5a508135f6bda123.tar.lz nixlib-3cb745d5a69018829ac15f7d5a508135f6bda123.tar.xz nixlib-3cb745d5a69018829ac15f7d5a508135f6bda123.tar.zst nixlib-3cb745d5a69018829ac15f7d5a508135f6bda123.zip |
stdenv: Store one package per line in nix-support/propagated-*
This makes those files a bit easier to read. Also, for what it's worth, it brings us one baby step closer to handling spaces in store paths. Also, I optimized handling of many transitive deps with read. Probably, not very beneficial, but nice to enforce the pkg-per-line structure. Doing so let me find much dubious code and fix it. Two misc notes: - `propagated-user-env-packages` also needed to be adjusted as sometimes it is copied to/from the propagated input files. - `local fd` should ensure that file descriptors aren't clobbered during recursion.
Diffstat (limited to 'pkgs/stdenv/generic/setup.sh')
-rw-r--r-- | pkgs/stdenv/generic/setup.sh | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index e5d2ba8682de..de94565ed6d7 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -215,6 +215,11 @@ isScript() { if [[ "$magic" =~ \#! ]]; then return 0; else return 1; fi } +# printf unfortunately will print a trailing newline regardless +printLines() { + [[ $# -gt 0 ]] || return 0 + printf '%s\n' "$@" +} ###################################################################### # Initialisation. @@ -300,9 +305,12 @@ findInputs() { fi if [ -f "$pkg/nix-support/$propagatedBuildInputsFile" ]; then - for i in $(cat "$pkg/nix-support/$propagatedBuildInputsFile"); do - findInputs "$i" $var $propagatedBuildInputsFile + local fd pkgNext + exec {fd}<"$pkg/nix-support/$propagatedBuildInputsFile" + while IFS= read -r -u $fd pkgNext; do + findInputs "$pkgNext" $var $propagatedBuildInputsFile done + exec {fd}<&- fi } @@ -794,17 +802,17 @@ fixupPhase() { fi if [ -n "$propagated" ]; then mkdir -p "${!outputDev}/nix-support" - echo "$propagated" > "${!outputDev}/nix-support/propagated-native-build-inputs" + printLines $propagated > "${!outputDev}/nix-support/propagated-native-build-inputs" fi else if [ -n "$propagatedBuildInputs" ]; then mkdir -p "${!outputDev}/nix-support" - echo "$propagatedBuildInputs" > "${!outputDev}/nix-support/propagated-build-inputs" + printLines $propagatedBuildInputs > "${!outputDev}/nix-support/propagated-build-inputs" fi if [ -n "$propagatedNativeBuildInputs" ]; then mkdir -p "${!outputDev}/nix-support" - echo "$propagatedNativeBuildInputs" > "${!outputDev}/nix-support/propagated-native-build-inputs" + printLines $propagatedNativeBuildInputs > "${!outputDev}/nix-support/propagated-native-build-inputs" fi fi @@ -817,7 +825,7 @@ fixupPhase() { if [ -n "$propagatedUserEnvPkgs" ]; then mkdir -p "${!outputBin}/nix-support" - echo "$propagatedUserEnvPkgs" > "${!outputBin}/nix-support/propagated-user-env-packages" + printLines $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages" fi runHook postFixup |