* 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.
This commit is contained in:
		
							parent
							
								
									7ae763e16b
								
							
						
					
					
						commit
						2a3f4110c5
					
				
					 3 changed files with 27 additions and 54 deletions
				
			
		| 
						 | 
				
			
			@ -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>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,23 +83,22 @@ 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>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue