* 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue