Skip to content

Commit

Permalink
[lldb] Fix Python interpreter workaround (attempt #2)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
JDevlieghere committed Jun 17, 2024
1 parent 68fc8df commit 0041582
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions lldb/test/API/lit.cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 0041582

Please sign in to comment.