diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2012-01-13T23·35+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2012-01-13T23·35+0000 |
commit | 2a3f4110c54a10ebee67403a699cb8f951fca858 (patch) | |
tree | 18ea78ef7fa2733d3dbcb406a1029518913eff33 /scripts | |
parent | 7ae763e16b2a2524f50487ea7422e5412a080004 (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')
-rwxr-xr-x | scripts/nix-build.in | 37 |
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. |