mirror of
https://github.com/PartialVolume/shredos.x86_64.git
synced 2026-02-20 17:42:10 +00:00
80 lines
3.1 KiB
Diff
80 lines
3.1 KiB
Diff
From 1ee5670803f89b21d84a6a84acbb578da051c119 Mon Sep 17 00:00:00 2001
|
|
From: Ryan Volz <ryan.volz@gmail.com>
|
|
Date: Tue, 26 Sep 2023 14:56:59 -0400
|
|
Subject: [PATCH] Remove deprecated use of distutils, fix for Python 3.12+
|
|
|
|
Remove deprecated use of distutils, fix for Python 3.12+
|
|
|
|
This switches to using sysconfig from distutils, which is necessary for
|
|
Python 3.12+ since distutils is deprecated and has been removed.
|
|
|
|
It is necessary to specify the install scheme when a prefix other than
|
|
the Python default is used so that changes to the default scheme made by
|
|
distributions (e.g. Debian, Fedora) do not produce an incorrect Python
|
|
installation directory. For example, Debian patches the default scheme
|
|
to prepend the path with '/local', but if a user specifies a prefix of
|
|
'/usr/local', then the path using the default scheme would be
|
|
'/usr/local/local/...' with a duplicated 'local' directory. Specifying
|
|
an unmodified install scheme fixes that.
|
|
|
|
Signed-off-by: Ryan Volz <ryan.volz@gmail.com>
|
|
|
|
Upstream: https://github.com/pothosware/SoapySDR/commit/1ee5670803f89b21d84a6a84acbb578da051c119
|
|
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
|
|
---
|
|
swig/python/get_python_lib.py | 36 ++++++++++++++++++++++++-----------
|
|
1 file changed, 25 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/python/get_python_lib.py b/python/get_python_lib.py
|
|
index 0c71652..574f0b6 100644
|
|
--- a/python/get_python_lib.py
|
|
+++ b/python/get_python_lib.py
|
|
@@ -1,19 +1,33 @@
|
|
import os
|
|
+import pathlib
|
|
import sys
|
|
-import site
|
|
-from distutils.sysconfig import get_python_lib
|
|
+import sysconfig
|
|
|
|
if __name__ == '__main__':
|
|
- prefix = sys.argv[1]
|
|
+ prefix = pathlib.Path(sys.argv[1]).resolve()
|
|
|
|
- #ask distutils where to install the python module
|
|
- install_dir = get_python_lib(plat_specific=True, prefix=prefix)
|
|
+ # default install dir for the running Python interpreter
|
|
+ default_install_dir = pathlib.Path(sysconfig.get_path('platlib')).resolve()
|
|
|
|
- #use sites when the prefix is already recognized
|
|
+ # if default falls under the desired prefix, we're done
|
|
try:
|
|
- paths = [p for p in site.getsitepackages() if p.startswith(prefix)]
|
|
- if len(paths) == 1: install_dir = paths[0]
|
|
- except AttributeError: pass
|
|
+ relative_install_dir = default_install_dir.relative_to(prefix)
|
|
+ except ValueError:
|
|
+ # get install dir for the specified prefix
|
|
+ # can't use the default scheme because distributions modify it
|
|
+ # newer Python versions have 'venv' scheme, use for all OSs.
|
|
+ if 'venv' in sysconfig.get_scheme_names():
|
|
+ scheme = 'venv'
|
|
+ elif os.name == 'nt':
|
|
+ scheme = 'nt'
|
|
+ else:
|
|
+ scheme = 'posix_prefix'
|
|
+ prefix_install_dir = pathlib.Path(sysconfig.get_path(
|
|
+ 'platlib',
|
|
+ scheme=scheme,
|
|
+ vars={'base': prefix, 'platbase': prefix},
|
|
+ )).resolve()
|
|
+ relative_install_dir = prefix_install_dir.relative_to(prefix)
|
|
|
|
- #strip the prefix to return a relative path
|
|
- print(os.path.relpath(install_dir, prefix))
|
|
+ # want a relative path for use in the build system
|
|
+ print(relative_install_dir)
|
|
--
|
|
2.49.0
|
|
|