From f8dec3e87fc147b7fa926b6687772fc15cf3203d Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 30 Nov 2022 10:21:51 +0100 Subject: Single pass text replacement (#34180) --- lib/spack/spack/relocate.py | 65 +++++++++++++++++++--------------------- lib/spack/spack/test/relocate.py | 57 +++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 34 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index 97812bdb5c..f7231a9b34 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -441,25 +441,6 @@ def needs_text_relocation(m_type, m_subtype): return m_type == "text" -def _replace_prefix_text(filename, compiled_prefixes): - """Replace all the occurrences of the old install prefix with a - new install prefix in text files that are utf-8 encoded. - - Args: - filename (str): target text file (utf-8 encoded) - compiled_prefixes (OrderedDict): OrderedDictionary where the keys are - precompiled regex of the old prefixes and the values are the new - prefixes (uft-8 encoded) - """ - with open(filename, "rb+") as f: - data = f.read() - f.seek(0) - for orig_prefix_rexp, new_bytes in compiled_prefixes.items(): - data = orig_prefix_rexp.sub(new_bytes, data) - f.write(data) - f.truncate() - - def apply_binary_replacements(f, prefix_to_prefix, suffix_safety_size=7): """ Given a file opened in rb+ mode, apply the string replacements as @@ -816,10 +797,32 @@ def utf8_path_to_binary_regex(prefix): return re.compile(b"(?