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 | |
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.
-rw-r--r-- | doc/manual/manual.xml | 10 | ||||
-rw-r--r-- | doc/manual/nix-build.xml | 30 | ||||
-rwxr-xr-x | scripts/nix-build.in | 37 |
3 files changed, 25 insertions, 52 deletions
diff --git a/doc/manual/manual.xml b/doc/manual/manual.xml index 090a92ce6b3e..95f80686008d 100644 --- a/doc/manual/manual.xml +++ b/doc/manual/manual.xml @@ -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> diff --git a/doc/manual/nix-build.xml b/doc/manual/nix-build.xml index 23c0b23041c6..465635f67125 100644 --- a/doc/manual/nix-build.xml +++ b/doc/manual/nix-build.xml @@ -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 @@ except for <option>--arg</option> and <option>--attr</option> / <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 @@ except for <option>--arg</option> and <option>--attr</option> / <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> 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. |