diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/nix-pack-closure.in | 7 | ||||
-rw-r--r-- | scripts/nix-unpack-closure.in | 9 |
2 files changed, 16 insertions, 0 deletions
diff --git a/scripts/nix-pack-closure.in b/scripts/nix-pack-closure.in index 6c0e85d2a69a..bc58097e25c1 100644 --- a/scripts/nix-pack-closure.in +++ b/scripts/nix-pack-closure.in @@ -21,6 +21,7 @@ mkdir "$tmpDir/contents", 0777 or die; mkdir "$tmpDir/references", 0777 or die; mkdir "$tmpDir/derivers", 0777 or die; +open TOPLEVEL, ">$tmpDir/top-level" or die; my %storePaths; @@ -29,6 +30,12 @@ my %storePaths; while (@ARGV) { my $storePath = shift @ARGV; + # $storePath might be a symlink to the store, so resolve it. + $storePath = (`$binDir/nix-store --query --resolve '$storePath'` + or die "cannot resolve `$storePath'"); + chomp $storePath; + print TOPLEVEL $storePath, "\n"; + # Get the closure of this path. my $pid = open(READ, "$binDir/nix-store --query --requisites '$storePath'|") or die; diff --git a/scripts/nix-unpack-closure.in b/scripts/nix-unpack-closure.in index 89e7aa24d5cb..2b60bb4851dd 100644 --- a/scripts/nix-unpack-closure.in +++ b/scripts/nix-unpack-closure.in @@ -77,3 +77,12 @@ closedir(DIR) or die; # Register the invalid paths as valid. system("nix-store --register-validity <'$tmpDir/validity'") == 0 or die "nix-store --register-validity failed"; + + +# Show the top-level paths so that something useful can be done with +# them, e.g., passing them to `nix-env -i'. +if (-e "$tmpDir/unpacked/top-level") { + open TOPLEVEL, "<$tmpDir/unpacked/top-level" or die; + while (<TOPLEVEL>) { print "$_"; } + close TOPLEVEL; +} |