From: Michael Jeanson Date: Wed, 14 Jun 2023 19:58:32 +0000 (-0400) Subject: fix: python agent: install on Debian python >= 3.10 X-Git-Tag: v2.13.7~10 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=245091df0d4f5a5862b4ff554fbcd476a681604b;p=lttng-ust.git fix: python agent: install on Debian python >= 3.10 Starting with Debian's Python 3.10, the default install scheme is 'posix_local' which is a Debian specific scheme based on 'posix_prefix' but with an added 'local' prefix. This is the default so users doing system wide manual installations of python modules end up in '/usr/local'. This interferes with our autotools based install which already defaults to '/usr/local' and expect a provided prefix to be used verbatim. Monkeypatch sysconfig to override this scheme and use 'posix_prefix' instead. Change-Id: I08fe77b6c8807515765e3ad0344aa6849e573b90 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- diff --git a/src/python-lttngust/setup.py.in b/src/python-lttngust/setup.py.in index c5ce059b..b11be1d9 100644 --- a/src/python-lttngust/setup.py.in +++ b/src/python-lttngust/setup.py.in @@ -12,6 +12,28 @@ if sys.version_info < (3, 12): else: from setuptools import setup, Extension +# Starting with Debian's Python 3.10, the default install scheme is +# 'posix_local' which is a Debian specific scheme based on 'posix_prefix' but +# with an added 'local' prefix. This is the default so users doing system wide +# manual installations of python modules end up in '/usr/local'. This +# interferes with our autotools based install which already defaults to +# '/usr/local' and expect a provided prefix to be used verbatim. +# +# Monkeypatch sysconfig to override this scheme and use 'posix_prefix' instead. +if sys.version_info >= (3, 10): + import sysconfig + + original_get_preferred_scheme = sysconfig.get_preferred_scheme + + def our_get_preferred_scheme(key): + scheme = original_get_preferred_scheme(key) + if scheme == "posix_local": + return "posix_prefix" + else: + return scheme + + sysconfig.get_preferred_scheme = our_get_preferred_scheme + PY_PATH_WARN_MSG = """ -------------------------------------WARNING------------------------------------ The install directory used:\n ({0})\nis not included in your PYTHONPATH.