Author: eelco
Date: Fri Jan 13 23:35:07 2012
New Revision: 31526
URL: https://nixos.org/websvn/nix/?rev=31526&sc=1
Log:
* 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.
Modified:
nix/trunk/doc/manual/manual.xml
nix/trunk/doc/manual/nix-build.xml
nix/trunk/scripts/nix-build.in
Modified: nix/trunk/doc/manual/manual.xml
==============================================================================
--- nix/trunk/doc/manual/manual.xml Fri Jan 13 22:31:42 2012 (r31525)
+++ nix/trunk/doc/manual/manual.xml Fri Jan 13 23:35:07 2012 (r31526)
@@ -21,17 +21,11 @@
</author>
<copyright>
- <year>2004</year>
- <year>2005</year>
- <year>2006</year>
- <year>2007</year>
- <year>2008</year>
- <year>2009</year>
- <year>2010</year>
+ <year>2004-2012</year>
<holder>Eelco Dolstra</holder>
</copyright>
- <date>August 2010</date>
+ <date>January 2012</date>
</info>
Modified: nix/trunk/doc/manual/nix-build.xml
==============================================================================
--- nix/trunk/doc/manual/nix-build.xml Fri Jan 13 22:31:42 2012 (r31525)
+++ nix/trunk/doc/manual/nix-build.xml Fri Jan 13 23:35:07 2012 (r31526)
@@ -28,8 +28,8 @@
</group>
<replaceable>attrPath</replaceable>
</arg>
- <arg><option>--add-drv-link</option></arg>
<arg><option>--drv-link </option><replaceable>drvlink</replaceable></arg>
+ <arg><option>--add-drv-link</option></arg>
<arg><option>--no-out-link</option></arg>
<arg>
<group choice='req'>
@@ -83,24 +83,23 @@
<variablelist>
- <varlistentry><term><option>--add-drv-link</option></term>
+ <varlistentry><term><option>--drv-link</option>
<replaceable>drvlink</replaceable></term>
- <listitem><para>Add a symlink in the current directory to the
- store derivation produced by <command>nix-instantiate</command>.
- The symlink is called <filename>derivation</filename> (which is
- numbered in the case of multiple derivations). The derivation is
+ <listitem><para>Add a symlink named
+ <replaceable>drvlink</replaceable> to the store derivation
+ produced by <command>nix-instantiate</command>. The derivation is
a root of the garbage collector until the symlink is deleted or
- renamed.</para></listitem>
-
+ renamed. If there are multiple derivations, numbers are suffixed
+ to <replaceable>drvlink</replaceable> to distinguish between
+ them.</para></listitem>
+
</varlistentry>
- <varlistentry><term><option>--drv-link</option>
<replaceable>drvlink</replaceable></term>
+ <varlistentry><term><option>--add-drv-link</option></term>
- <listitem><para>Change the name of the symlink to the derivation
- created when <option>--add-drv-link</option> is used from
- <filename>derivation</filename> to
- <replaceable>drvlink</replaceable>.</para></listitem>
-
+ <listitem><para>Shorthand for <option>--drv-link</option>
+ <filename>./derivation</filename>.</para></listitem>
+
</varlistentry>
<varlistentry><term><option>--no-out-link</option></term>
@@ -116,8 +115,7 @@
<option>-o</option> <replaceable>outlink</replaceable></term>
<listitem><para>Change the name of the symlink to the output path
- created unless <option>--no-out-link</option> is used from
- <filename>result</filename> to
+ created from <filename>result</filename> to
<replaceable>outlink</replaceable>.</para></listitem>
</varlistentry>
Modified: nix/trunk/scripts/nix-build.in
==============================================================================
--- nix/trunk/scripts/nix-build.in Fri Jan 13 22:31:42 2012 (r31525)
+++ nix/trunk/scripts/nix-build.in Fri Jan 13 23:35:07 2012 (r31526)
@@ -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 @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 @@
}
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 @@
@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.
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits