[Lldb-commits] [PATCH] D114106: [lldb] remove usage of distutils, fix python path on debian/ubuntu
Lawrence D'Anna via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Nov 17 10:28:45 PST 2021
lawrence_danna created this revision.
lawrence_danna added reviewers: labath, jingham, JDevlieghere.
Herald added a subscriber: mgorny.
lawrence_danna requested review of this revision.
Herald added a project: LLDB.
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.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D114106
Files:
lldb/CMakeLists.txt
lldb/bindings/python/get-python-config.py
Index: lldb/bindings/python/get-python-config.py
===================================================================
--- lldb/bindings/python/get-python-config.py
+++ lldb/bindings/python/get-python-config.py
@@ -4,7 +4,6 @@
import sys
import argparse
import sysconfig
-import distutils.sysconfig
def relpath_nodots(path, base):
@@ -20,7 +19,18 @@
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
Index: lldb/CMakeLists.txt
===================================================================
--- lldb/CMakeLists.txt
+++ lldb/CMakeLists.txt
@@ -32,9 +32,9 @@
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")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D114106.387981.patch
Type: text/x-patch
Size: 2070 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20211117/bcdddcdc/attachment.bin>
More information about the lldb-commits
mailing list