aboutsummaryrefslogtreecommitdiff
path: root/lldb
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2024-06-17 14:52:40 -0700
committerJonas Devlieghere <jonas@devlieghere.com>2024-06-17 15:15:28 -0700
commit0041582b6ca137ad04e26985a87a1ae45fb0f0bb (patch)
treec16ff1cb6798ba168df0ab3468072cb4ae855dba /lldb
parent68fc8dffe4669fed1f7eb88e6770509505f9960a (diff)
downloadllvm-0041582b6ca137ad04e26985a87a1ae45fb0f0bb.zip
llvm-0041582b6ca137ad04e26985a87a1ae45fb0f0bb.tar.gz
llvm-0041582b6ca137ad04e26985a87a1ae45fb0f0bb.tar.bz2
[lldb] Fix Python interpreter workaround (attempt #2)
On macOS, to make DYLD_INSERT_LIBRARIES and the Python shim work together, we have a workaroud that copies the "real" Python interpreter into the build directory. This doesn't work when running in a virtual environment, as the copied interpreter cannot find the packages installed in the virtual environment relative to itself. Address this issue by copying the Python interpreter into the virtual environment's `bin` folder, rather than the build folder, when the test suite detects that it's being run inside a virtual environment. I'm not thrilled about this solution because it puts a file outside the build directory. However, given virtual environments are considered disposable, this seems reasonable.
Diffstat (limited to 'lldb')
-rw-r--r--lldb/test/API/lit.cfg.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/lldb/test/API/lit.cfg.py b/lldb/test/API/lit.cfg.py
index 48c5f49..6d45508 100644
--- a/lldb/test/API/lit.cfg.py
+++ b/lldb/test/API/lit.cfg.py
@@ -63,13 +63,14 @@ def find_python_interpreter():
if "DYLD_INSERT_LIBRARIES" not in config.environment:
return None
- # If we're running in a virtual environment, we already have a copy of the
- # Python executable.
+ # If we're running in a virtual environment, we have to copy Python into
+ # the virtual environment for it to work.
if sys.prefix != sys.base_prefix:
- return None
+ copied_python = os.path.join(sys.prefix, "bin", "copied-python")
+ else:
+ copied_python = os.path.join(config.lldb_build_directory, "copied-python")
# Avoid doing any work if we already copied the binary.
- copied_python = os.path.join(config.lldb_build_directory, "copied-python")
if os.path.isfile(copied_python):
return copied_python