aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/build-support/buildenv/builder.pl
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/build-support/buildenv/builder.pl')
-rwxr-xr-xnixpkgs/pkgs/build-support/buildenv/builder.pl16
1 files changed, 15 insertions, 1 deletions
diff --git a/nixpkgs/pkgs/build-support/buildenv/builder.pl b/nixpkgs/pkgs/build-support/buildenv/builder.pl
index b699d762d29..fc6ffce735c 100755
--- a/nixpkgs/pkgs/build-support/buildenv/builder.pl
+++ b/nixpkgs/pkgs/build-support/buildenv/builder.pl
@@ -26,6 +26,19 @@ sub isInPathsToLink {
return 0;
}
+# Returns whether a path in one of the linked packages may contain
+# files in one of the elements of pathsToLink.
+sub hasPathsToLink {
+ my $path = shift;
+ foreach my $elem (@pathsToLink) {
+ return 1 if
+ $path eq "" ||
+ (substr($elem, 0, length($path)) eq $path
+ && (($path eq $elem) || (substr($elem, length($path), 1) eq "/")));
+ }
+ return 0;
+}
+
# Similar to `lib.isStorePath`
sub isStorePath {
my $path = shift;
@@ -103,7 +116,8 @@ sub findFiles {
$relName =~ /info\/dir/ ||
( $relName =~ /^\/share\/mime\// && !( $relName =~ /^\/share\/mime\/packages/ ) ) ||
$baseName eq "perllocal.pod" ||
- $baseName eq "log";
+ $baseName eq "log" ||
+ ! (hasPathsToLink($relName) || isInPathsToLink($relName));
my ($oldTarget, $oldPriority) = @{$symlinks{$relName} // [undef, undef]};