summaryrefslogtreecommitdiffstats
path: root/pkgs/build-support/buildenv
diff options
context:
space:
mode:
authorYury G. Kudryashov <urkud.urkud@gmail.com>2010-04-14 19:26:31 +0000
committerYury G. Kudryashov <urkud.urkud@gmail.com>2010-04-14 19:26:31 +0000
commit295af6ab173534e65c53fb4d2e4afff2fc8476c7 (patch)
tree8c70e23999b98177721750323e8b63d41787f679 /pkgs/build-support/buildenv
parentcd56e341de3dc15d52ed6e3900ed99628ac7c1c8 (diff)
Ignore fake collisions
svn path=/nixpkgs/trunk/; revision=21075
Diffstat (limited to 'pkgs/build-support/buildenv')
-rwxr-xr-xpkgs/build-support/buildenv/builder.pl19
1 files changed, 14 insertions, 5 deletions
diff --git a/pkgs/build-support/buildenv/builder.pl b/pkgs/build-support/buildenv/builder.pl
index 37eb21887fd0..856eca7b80be 100755
--- a/pkgs/build-support/buildenv/builder.pl
+++ b/pkgs/build-support/buildenv/builder.pl
@@ -1,7 +1,7 @@
#! @perl@ -w
use strict;
-use Cwd;
+use Cwd 'abs_path';
use IO::Handle;
use File::Path;
use File::Basename;
@@ -96,9 +96,17 @@ sub createLinks {
}
elsif (-l $dstFile) {
- if (!$ignoreCollisions) {
- my $target = readlink $dstFile;
- die "collission between `$srcFile' and `$target'";
+ my $oldTarget = readlink $dstFile;
+ my $oldTargetReal = abs_path $oldTarget;
+ my $newTarget = $srcFile;
+ my $newTargetReal = abs_path $newTarget;
+ unless ($newTargetReal eq $oldTargetReal) {
+ if ($ignoreCollisions) {
+ warn "collision between `$newTarget' and `$oldTarget'\n";
+ }
+ else {
+ die "collision between `$newTarget' and `$oldTarget'";
+ }
}
}
@@ -114,7 +122,7 @@ my %done;
my %postponed;
sub addPkg;
-sub addPkg {
+sub addPkg($;$) {
my $pkgDir = shift;
my $ignoreCollisions = shift;
@@ -131,6 +139,7 @@ sub addPkg {
close PROP;
my @propagated = split ' ', $propagated;
foreach my $p (@propagated) {
+ print "$pkgDir propagates $p\n";
$postponed{$p} = 1 unless defined $done{$p};
}
}