From 27ca9458012caf8b556ce31fc7aaac571af878d2 Mon Sep 17 00:00:00 2001 From: Lawrence D'Anna Date: Thu, 2 Dec 2021 21:13:09 -0800 Subject: [PATCH] [lldb] add fallback for LLDB_PYTHON_RELATIVE_PATH Some pythons are configured to set platlib somewhere outside of their sys.prefix. It's important that we at least use some reasonable default for LLDB_PYTHON_RELATIVE_PATH even in that case, because even if the user overrides it on the cmake invocation, cmake will still be called without the override in order to build tablegen. Reviewed By: JDevlieghere, clayborg Differential Revision: https://reviews.llvm.org/D114973 --- lldb/bindings/python/get-python-config.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lldb/bindings/python/get-python-config.py b/lldb/bindings/python/get-python-config.py index 5b670d7..32d82a5 100755 --- a/lldb/bindings/python/get-python-config.py +++ b/lldb/bindings/python/get-python-config.py @@ -30,7 +30,17 @@ def main(): # 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)) + try: + print(relpath_nodots(sysconfig.get_path("platlib"), sys.prefix)) + except ValueError: + # Try to fall back to something reasonable if sysconfig's platlib + # is outside of sys.prefix + if os.name == 'posix': + print('lib/python%d.%d/site-packages' % sys.version_info[:2]) + elif os.name == 'nt': + print('Lib\\site-packages') + else: + raise elif args.variable_name == "LLDB_PYTHON_EXE_RELATIVE_PATH": tried = list() exe = sys.executable @@ -57,4 +67,4 @@ def main(): parser.error(f"unknown variable {args.variable_name}") if __name__ == '__main__': - main() \ No newline at end of file + main() -- 2.7.4