buildenv: paths to link resolving to the same absolute path is not a conflict

When building an environment if two paths conflict but one or both are
symbolic links and they resolve to the same real path, the conflict is
discarded because the contents of both paths are the same. One of them
is chosen and there is no need to recur into them in order to build
deeper symbolic links.
This commit is contained in:
José Romildo Malaquias 2020-06-09 22:27:05 -03:00
parent 168846fa8e
commit 4a1ef63c55

View File

@ -129,6 +129,15 @@ sub findFiles {
return; return;
} }
# If target already exists and both targets resolves to the same path, skip
if (defined $oldTarget && $oldTarget ne "" && abs_path($target) eq abs_path($oldTarget)) {
# Prefer the target that is not a symlink, if any
if (-l $oldTarget && ! -l $target) {
$symlinks{$relName} = [$target, $priority];
}
return;
}
# If target already exists as a symlink to a file (not a # If target already exists as a symlink to a file (not a
# directory) in a higher-priority package, skip. # directory) in a higher-priority package, skip.
if (defined $oldTarget && $priority > $oldPriority && $oldTarget ne "" && ! -d $oldTarget) { if (defined $oldTarget && $priority > $oldPriority && $oldTarget ne "" && ! -d $oldTarget) {