* Absolute path to rm (NIX-51).
* Don't hardcore /nix/bin and /nix/store.
This commit is contained in:
parent
0623359fbc
commit
1b804f88e4
2 changed files with 5 additions and 5 deletions
|
@ -17,7 +17,7 @@ $binDir = "@bindir@" unless defined $binDir;
|
||||||
my $tmpDir;
|
my $tmpDir;
|
||||||
do { $tmpDir = tmpnam(); }
|
do { $tmpDir = tmpnam(); }
|
||||||
until mkdir $tmpDir, 0777;
|
until mkdir $tmpDir, 0777;
|
||||||
END { system "rm -rf '$tmpDir'"; }
|
END { system "@coreutils@/rm -rf '$tmpDir'"; }
|
||||||
mkdir "$tmpDir/contents", 0777 or die;
|
mkdir "$tmpDir/contents", 0777 or die;
|
||||||
mkdir "$tmpDir/references", 0777 or die;
|
mkdir "$tmpDir/references", 0777 or die;
|
||||||
mkdir "$tmpDir/derivers", 0777 or die;
|
mkdir "$tmpDir/derivers", 0777 or die;
|
||||||
|
|
|
@ -15,7 +15,7 @@ $binDir = "@bindir@" unless defined $binDir;
|
||||||
my $tmpDir;
|
my $tmpDir;
|
||||||
do { $tmpDir = tmpnam(); }
|
do { $tmpDir = tmpnam(); }
|
||||||
until mkdir $tmpDir, 0777;
|
until mkdir $tmpDir, 0777;
|
||||||
END { system "rm -rf '$tmpDir'"; }
|
END { system "@coreutils@/rm -rf '$tmpDir'"; }
|
||||||
|
|
||||||
|
|
||||||
# Unpack the NAR archive on standard input.
|
# Unpack the NAR archive on standard input.
|
||||||
|
@ -34,15 +34,15 @@ opendir(DIR, "$tmpDir/unpacked/contents") or die "cannot open directory: $!";
|
||||||
foreach my $name (sort(readdir DIR)) {
|
foreach my $name (sort(readdir DIR)) {
|
||||||
next if $name eq "." or $name eq "..";
|
next if $name eq "." or $name eq "..";
|
||||||
|
|
||||||
my $storePath = "/nix/store/$name"; # !!!
|
my $storePath = "@storedir@/$name"; # !!!
|
||||||
|
|
||||||
# !!! this really isn't a good validity check!
|
# !!! this really isn't a good validity check!
|
||||||
system "/nix/bin/nix-store --check-validity '$storePath' 2> /dev/null";
|
system "$binDir/nix-store --check-validity '$storePath' 2> /dev/null";
|
||||||
if ($? != 0) {
|
if ($? != 0) {
|
||||||
print STDERR "unpacking `$storePath'...\n";
|
print STDERR "unpacking `$storePath'...\n";
|
||||||
|
|
||||||
# !!! race
|
# !!! race
|
||||||
system("rm -rf '$storePath'") == 0
|
system("@coreutils@/rm -rf '$storePath'") == 0
|
||||||
or die "cannot remove `$storePath': $?";
|
or die "cannot remove `$storePath': $?";
|
||||||
|
|
||||||
system("$binDir/nix-store --restore '$storePath' < '$tmpDir/unpacked/contents/$name'") == 0
|
system("$binDir/nix-store --restore '$storePath' < '$tmpDir/unpacked/contents/$name'") == 0
|
||||||
|
|
Loading…
Reference in a new issue