about summary refs log tree commit diff
path: root/scripts/nix-build.in
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2012-01-13T23·35+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2012-01-13T23·35+0000
commit2a3f4110c54a10ebee67403a699cb8f951fca858 (patch)
tree18ea78ef7fa2733d3dbcb406a1029518913eff33 /scripts/nix-build.in
parent7ae763e16b2a2524f50487ea7422e5412a080004 (diff)
* nix-build: put the temporary derivation symlink in a temporary
  directory rather than the current directory.
* nix-build: --drv-link now implies --add-drv-link.

Diffstat (limited to 'scripts/nix-build.in')
-rwxr-xr-xscripts/nix-build.in37
1 files changed, 9 insertions, 28 deletions
diff --git a/scripts/nix-build.in b/scripts/nix-build.in
index a4615e4bdb72..5cbcd113966f 100755
--- a/scripts/nix-build.in
+++ b/scripts/nix-build.in
@@ -2,14 +2,9 @@
 
 use strict;
 use Nix::Config;
+use File::Temp qw(tempdir);
 
 
-my $addDrvLink = 0;
-my $addOutLink = 1;
-
-my $outLink;
-my $drvLink;
-
 my $dryRun = 0;
 my $verbose = 0;
 
@@ -18,17 +13,14 @@ my @buildArgs = ();
 my @exprs = ();
 
 
-END {
-    foreach my $fn (glob ".nix-build-tmp-*") {
-        unlink $fn;
-    }
-}
+my $tmpDir = tempdir("nix-build.XXXXXX", CLEANUP => 1, TMPDIR => 1)
+    or die "cannot create a temporary directory";
 
-sub intHandler {
-    exit 1;
-}
+my $outLink = "./result";
+my $drvLink = "$tmpDir/derivation";
 
-$SIG{'INT'} = 'intHandler';
+# Ensure that the $tmpDir is deleted.
+$SIG{'INT'} = sub { exit 1 };
 
 
 for (my $n = 0; $n < scalar @ARGV; $n++) {
@@ -56,11 +48,11 @@ EOF
     }
 
     elsif ($arg eq "--add-drv-link") {
-        $addDrvLink = 1;
+        $drvLink = "./derivation";
     }
 
     elsif ($arg eq "--no-out-link" or $arg eq "--no-link") {
-        $addOutLink = 0;
+        $outLink = "$tmpDir/result";
     }
 
     elsif ($arg eq "--drv-link") {
@@ -139,17 +131,6 @@ EOF
 @exprs = ("./default.nix") if scalar @exprs == 0;
 
 
-if (!defined $drvLink) {
-    $drvLink = "derivation";
-    $drvLink = ".nix-build-tmp-" . $drvLink if !$addDrvLink;
-}
-
-if (!defined $outLink) {
-    $outLink = "result";
-    $outLink = ".nix-build-tmp-" . $outLink if !$addOutLink;
-}
-
-
 foreach my $expr (@exprs) {
 
     # Instantiate.