forked from OSchip/llvm-project
[lldb] remove usage of distutils, fix python path on debian/ubuntu
distutils is deprecated and will be removed, so we shouldn't be using it. We were using it to compute LLDB_PYTHON_RELATIVE_PATH. Discussing a similar issue [at python.org](https://bugs.python.org/issue41282), Filipe Laíns said: If you are relying on the value of distutils.sysconfig.get_python_lib() as you shown in your system, you probably don't want to. That directory (dist-packages) should be for Debian provided packages only, so moving to sysconfig.get_path() would be a good thing, as it has the correct value for user installed packages on your system. So I propose using a relative path from `sys.prefix` to `sysconfig.get_path("platlib")` instead. On Mac and windows, this results in the same paths as we had before, which are `lib/python3.9/site-packages` and `Lib\site-packages`, respectively. On ubuntu however, this will change the path from `lib/python3/dist-packages` to `lib/python3.9/site-packages`. This change seems to be correct, as Filipe said above, `dist-packages` belongs to the distribution, not us. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D114106
This commit is contained in:
parent
95741660b4
commit
63270710f1
|
@ -32,9 +32,9 @@ endif()
|
|||
|
||||
if (LLDB_ENABLE_PYTHON)
|
||||
set(cachestring_LLDB_PYTHON_RELATIVE_PATH
|
||||
"Path where Python modules are installed, relative to install prefix")
|
||||
"Path where Python modules are installed, relative to LLDB's install prefix")
|
||||
set(cachestring_LLDB_PYTHON_EXE_RELATIVE_PATH
|
||||
"Path to python interpreter exectuable, relative to install prefix")
|
||||
"Path to python interpreter exectuable, relative to python's install prefix")
|
||||
set(cachestring_LLDB_PYTHON_EXT_SUFFIX
|
||||
"Filename extension for native code python modules")
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ import os
|
|||
import sys
|
||||
import argparse
|
||||
import sysconfig
|
||||
import distutils.sysconfig
|
||||
|
||||
|
||||
def relpath_nodots(path, base):
|
||||
|
@ -20,7 +19,18 @@ def main():
|
|||
parser.add_argument("variable_name")
|
||||
args = parser.parse_args()
|
||||
if args.variable_name == "LLDB_PYTHON_RELATIVE_PATH":
|
||||
print(distutils.sysconfig.get_python_lib(True, False, ''))
|
||||
# LLDB_PYTHON_RELATIVE_PATH is the relative path from lldb's prefix
|
||||
# to where lldb's python libraries will be installed.
|
||||
#
|
||||
# The way we're going to compute this is to take the relative path from
|
||||
# PYTHON'S prefix to where python libraries are supposed to be
|
||||
# installed.
|
||||
#
|
||||
# The result is if LLDB and python are give the same prefix, then
|
||||
# lldb's python lib will be put in the correct place for python to find it.
|
||||
# If not, you'll have to use lldb -P or lldb -print-script-interpreter-info
|
||||
# to figure out where it is.
|
||||
print(relpath_nodots(sysconfig.get_path("platlib"), sys.prefix))
|
||||
elif args.variable_name == "LLDB_PYTHON_EXE_RELATIVE_PATH":
|
||||
tried = list()
|
||||
exe = sys.executable
|
||||
|
|
Loading…
Reference in New Issue