summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2022-03-17 15:18:28 +0100
committerGitHub <noreply@github.com>2022-03-17 08:18:28 -0600
commit55544950e2578a7ca8e041f12b3ef9a06eed3064 (patch)
tree2f776efd9f19ce0dd9f83706d10648a302d79413 /lib
parent3544b0274f9df39b42f8f4270aac8f9a2460d7ff (diff)
downloadspack-55544950e2578a7ca8e041f12b3ef9a06eed3064.tar.gz
spack-55544950e2578a7ca8e041f12b3ef9a06eed3064.tar.bz2
spack-55544950e2578a7ca8e041f12b3ef9a06eed3064.tar.xz
spack-55544950e2578a7ca8e041f12b3ef9a06eed3064.zip
PackageViewMixin: fix symlinks conflict issue (#29515)
`stat`'ing a file in the dst dir is the wrong thing to do, you should `lstat` to capture broken symlinks.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/package.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index dc989679d8..addbdf4e84 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -449,7 +449,7 @@ class PackageViewMixin(object):
Alternative implementations may allow some of the files to exist in
the view (in this case they would be omitted from the results).
"""
- return set(dst for dst in merge_map.values() if os.path.exists(dst))
+ return set(dst for dst in merge_map.values() if os.path.lexists(dst))
def add_files_to_view(self, view, merge_map):
"""Given a map of package files to destination paths in the view, add
@@ -458,7 +458,7 @@ class PackageViewMixin(object):
linked into the view already include the file.
"""
for src, dst in merge_map.items():
- if not os.path.exists(dst):
+ if not os.path.lexists(dst):
view.link(src, dst, spec=self.spec)
def remove_files_from_view(self, view, merge_map):