diff --git a/run_meson_command_tests.py b/run_meson_command_tests.py index 03083f07a..a6a137b7f 100755 --- a/run_meson_command_tests.py +++ b/run_meson_command_tests.py @@ -19,29 +19,44 @@ import tempfile import unittest import subprocess import zipapp +import sysconfig from pathlib import Path from mesonbuild.mesonlib import windows_proof_rmtree, python_command, is_windows from mesonbuild.coredata import version as meson_version -# Handle the scheme that Debian patches in the as default -import sysconfig -# This function was renamed and made public in Python 3.10 -if hasattr(sysconfig, 'get_default_scheme'): - scheme = sysconfig.get_default_scheme() -else: - scheme = sysconfig._get_default_scheme() -if scheme == 'posix_local': - scheme = 'posix_prefix' +scheme = None + +def needs_debian_path_hack(): + try: + import setuptools + return int(setuptools.__version__.split('.')[0]) < 65 + except ModuleNotFoundError: + return False + +if needs_debian_path_hack(): + # Handle the scheme that Debian patches in the as default + # This function was renamed and made public in Python 3.10 + if hasattr(sysconfig, 'get_default_scheme'): + scheme = sysconfig.get_default_scheme() + else: + scheme = sysconfig._get_default_scheme() + if scheme == 'posix_local': + scheme = 'posix_prefix' def get_pypath(): - pypath = sysconfig.get_path('purelib', scheme=scheme, vars={'base': ''}) + if scheme: + pypath = sysconfig.get_path('purelib', scheme=scheme, vars={'base': ''}) + else: + pypath = sysconfig.get_path('purelib', vars={'base': ''}) # Ensure that / is the path separator and not \, then strip / return Path(pypath).as_posix().strip('/') def get_pybindir(): # 'Scripts' on Windows and 'bin' on other platforms including MSYS - return sysconfig.get_path('scripts', scheme=scheme, vars={'base': ''}).strip('\\/') + if scheme: + return sysconfig.get_path('scripts', scheme=scheme, vars={'base': ''}).strip('\\/') + return sysconfig.get_path('scripts', vars={'base': ''}).strip('\\/') class CommandTests(unittest.TestCase): '''