summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2023-05-29 13:14:24 +0200
committerGitHub <noreply@github.com>2023-05-29 13:14:24 +0200
commit8790efbcfe67779309276c3d68d7533b2f802fa0 (patch)
tree56f4712d5725c9da05463eb2da87d8ea1c28e694 /lib
parent212b1edb6b87a915521a3a8dccddc796816b4d0c (diff)
downloadspack-8790efbcfe67779309276c3d68d7533b2f802fa0.tar.gz
spack-8790efbcfe67779309276c3d68d7533b2f802fa0.tar.bz2
spack-8790efbcfe67779309276c3d68d7533b2f802fa0.tar.xz
spack-8790efbcfe67779309276c3d68d7533b2f802fa0.zip
Remove patchelf self-relocation (#33834)
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/relocate.py12
-rw-r--r--lib/spack/spack/test/relocate.py32
2 files changed, 1 insertions, 43 deletions
diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py
index c81fdb91ba..eaab4b7b03 100644
--- a/lib/spack/spack/relocate.py
+++ b/lib/spack/spack/relocate.py
@@ -6,7 +6,6 @@ import collections
import itertools
import os
import re
-import shutil
from collections import OrderedDict
import macholib.mach_o
@@ -356,13 +355,7 @@ def _set_elf_rpaths(target, rpaths):
# Join the paths using ':' as a separator
rpaths_str = ":".join(rpaths)
- # If we're relocating patchelf itself, make a copy and use it
- bak_path = None
- if target.endswith("/bin/patchelf"):
- bak_path = target + ".bak"
- shutil.copy(target, bak_path)
-
- patchelf, output = executable.Executable(bak_path or _patchelf()), None
+ patchelf, output = executable.Executable(_patchelf()), None
try:
# TODO: revisit the use of --force-rpath as it might be conditional
# TODO: if we want to support setting RUNPATH from binary packages
@@ -371,9 +364,6 @@ def _set_elf_rpaths(target, rpaths):
except executable.ProcessError as e:
msg = "patchelf --force-rpath --set-rpath {0} failed with error {1}"
tty.warn(msg.format(target, e))
- finally:
- if bak_path and os.path.exists(bak_path):
- os.remove(bak_path)
return output
diff --git a/lib/spack/spack/test/relocate.py b/lib/spack/spack/test/relocate.py
index 86f83102eb..1b14ad9fbb 100644
--- a/lib/spack/spack/test/relocate.py
+++ b/lib/spack/spack/test/relocate.py
@@ -173,14 +173,6 @@ def test_ensure_binary_is_relocatable(source_file, is_relocatable):
assert relocatable == is_relocatable
-@pytest.mark.requires_executables("patchelf", "strings", "file")
-@skip_unless_linux
-def test_patchelf_is_relocatable():
- patchelf = os.path.realpath(spack.relocate._patchelf())
- assert llnl.util.filesystem.is_exe(patchelf)
- spack.relocate.ensure_binary_is_relocatable(patchelf)
-
-
@skip_unless_linux
def test_ensure_binary_is_relocatable_errors(tmpdir):
# The file passed in as argument must exist...
@@ -241,30 +233,6 @@ def test_normalize_relative_paths(start_path, relative_paths, expected):
assert normalized == expected
-def test_set_elf_rpaths(mock_patchelf):
- # Try to relocate a mock version of patchelf and check
- # the call made to patchelf itself
- patchelf = mock_patchelf("echo $@")
- rpaths = ["/usr/lib", "/usr/lib64", "/opt/local/lib"]
- output = spack.relocate._set_elf_rpaths(patchelf, rpaths)
-
- # Assert that the arguments of the call to patchelf are as expected
- assert "--force-rpath" in output
- assert "--set-rpath " + ":".join(rpaths) in output
- assert patchelf in output
-
-
-@skip_unless_linux
-def test_set_elf_rpaths_warning(mock_patchelf):
- # Mock a failing patchelf command and ensure it warns users
- patchelf = mock_patchelf("exit 1")
- rpaths = ["/usr/lib", "/usr/lib64", "/opt/local/lib"]
- # To avoid using capfd in order to check if the warning was triggered
- # here we just check that output is not set
- output = spack.relocate._set_elf_rpaths(patchelf, rpaths)
- assert output is None
-
-
@pytest.mark.requires_executables("patchelf", "strings", "file", "gcc")
@skip_unless_linux
def test_relocate_text_bin(binary_with_rpaths, prefix_like):