diff --git a/doc/manual/manual.xml b/doc/manual/manual.xml
index 090a92ce6..95f806860 100644
--- a/doc/manual/manual.xml
+++ b/doc/manual/manual.xml
@@ -21,17 +21,11 @@
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
+ 2004-2012Eelco Dolstra
- August 2010
+ January 2012
diff --git a/doc/manual/nix-build.xml b/doc/manual/nix-build.xml
index 23c0b2304..465635f67 100644
--- a/doc/manual/nix-build.xml
+++ b/doc/manual/nix-build.xml
@@ -28,8 +28,8 @@
attrPath
- drvlink
+
@@ -83,26 +83,25 @@ except for and /
-
-
- Add a symlink in the current directory to the
- store derivation produced by nix-instantiate.
- The symlink is called derivation (which is
- numbered in the case of multiple derivations). The derivation is
- a root of the garbage collector until the symlink is deleted or
- renamed.
-
-
-
drvlink
- Change the name of the symlink to the derivation
- created when is used from
- derivation to
- drvlink.
+ Add a symlink named
+ drvlink to the store derivation
+ produced by nix-instantiate. The derivation is
+ a root of the garbage collector until the symlink is deleted or
+ renamed. If there are multiple derivations, numbers are suffixed
+ to drvlink to distinguish between
+ them.
+
+
+ Shorthand for
+ ./derivation.
+
+
+
Do not create a symlink to the output path. Note
@@ -116,8 +115,7 @@ except for and /
outlinkChange the name of the symlink to the output path
- created unless is used from
- result to
+ created from result to
outlink.
diff --git a/scripts/nix-build.in b/scripts/nix-build.in
index a4615e4bd..5cbcd1139 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.