From 4fbb23b89e5dad9378e9c250cb87581fb97e4690 Mon Sep 17 00:00:00 2001 From: Gregory Becker Date: Mon, 3 Apr 2023 16:07:32 -0700 Subject: [PATCH] fix relocation broken symlink, discovered in testing --- lib/spack/spack/filesystem_view.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/filesystem_view.py b/lib/spack/spack/filesystem_view.py index a2e758dd338..85dee0eda86 100644 --- a/lib/spack/spack/filesystem_view.py +++ b/lib/spack/spack/filesystem_view.py @@ -27,7 +27,7 @@ SingleMergeConflictError, SourceMergeVisitor, ) -from llnl.util.symlink import symlink +from llnl.util.symlink import islink, symlink from llnl.util.tty.color import colorize import spack.config @@ -63,7 +63,7 @@ def view_copy(src, dst, view, spec=None): Use spec and view to generate relocations """ - shutil.copy2(src, dst) + shutil.copy2(src, dst, follow_symlinks=False) if spec and not spec.external: # Not metadata, we have to relocate it @@ -95,6 +95,8 @@ def view_copy(src, dst, view, spec=None): if spack.relocate.is_binary(dst): spack.relocate.relocate_text_bin(binaries=[dst], prefixes=prefix_to_projection) + elif islink(dst): + spack.relocate.relocate_links(links=[dst], prefix_to_prefix=prefix_to_projection) else: prefix_to_projection[spack.store.layout.root] = root prefix_to_projection[orig_sbang] = new_sbang