From 24eed4bff46abb9913a9869684eef985161155a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:41 +0530 Subject: [PATCH 090/N] distutils: generalization of posix build in distutils sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Алексей --- Lib/distutils/sysconfig.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index bbe8e3c..80d3523 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -64,6 +64,17 @@ def _python_build(): python_build = _python_build() +def _posix_build(): + # GCC[mingw*] use posix build system + # Check for cross builds explicitly + host_platform = os.environ.get("_PYTHON_HOST_PLATFORM") + if host_platform: + if host_platform.startswith('mingw'): + return True + return os.name == 'posix' or \ + (os.name == "nt" and 'GCC' in sys.version) +posix_build = _posix_build() + # Calculate the build qualifier flags if they are defined. Adding the flags # to the include and lib directories only makes sense for an installation, not # an in-source build. @@ -97,7 +108,7 @@ def get_python_inc(plat_specific=0, prefix=None): """ if prefix is None: prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX - if os.name == "posix": + if posix_build: if python_build: # Assume the executable is in the build directory. The # pyconfig.h file should be in the same directory. Since @@ -144,7 +155,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): else: prefix = plat_specific and EXEC_PREFIX or PREFIX - if os.name == "posix": + if posix_build: if plat_specific or standard_lib: # Platform-specific modules (any module from a non-pure-Python # module distribution) or standard Python library modules. @@ -261,7 +272,7 @@ def customize_compiler(compiler): def get_config_h_filename(): """Return full pathname of installed pyconfig.h file.""" if python_build: - if os.name == "nt": + if os.name == "nt" and not posix_build: inc_dir = os.path.join(_sys_home or project_base, "PC") else: inc_dir = _sys_home or project_base @@ -467,6 +478,9 @@ def _init_posix(): def _init_nt(): + if posix_build: + _init_posix() + return """Initialize the module as appropriate for NT""" g = {} # set basic install directories @@ -516,7 +530,7 @@ def get_config_vars(*args): # Always convert srcdir to an absolute path srcdir = _config_vars.get('srcdir', project_base) - if os.name == 'posix': + if posix_build: if python_build: # If srcdir is a relative path (typically '.' or '..') # then it should be interpreted relative to the directory @@ -535,7 +549,7 @@ def get_config_vars(*args): # Normally it is relative to the build directory. However, during # testing, for example, we might be running a non-installed python # from a different directory. - if python_build and os.name == "posix": + if python_build and posix_build: base = project_base if (not os.path.isabs(_config_vars['srcdir']) and base != os.getcwd()): -- 2.33.0