fix: python agent: install on Debian python >= 3.10
[lttng-ust.git] / src / python-lttngust / setup.py.in
index 1024d5725fae97932694f4454aba370e43e4bcb8..b11be1d9a09e11770b9c7b0c7a5ee8b74575f4cb 100644 (file)
@@ -7,7 +7,32 @@
 import os
 import sys
 
-from distutils.core import setup, Extension
+if sys.version_info < (3, 12):
+    from distutils.core import setup, Extension
+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------------------------------------
This page took 0.023133 seconds and 4 git commands to generate.