diff options
author | Steve Dower <steve.dower@microsoft.com> | 2019-02-05 01:15:13 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-05 01:15:13 (GMT) |
commit | 85e102a2b090dd693d0801ae2edb9660cfa0f281 (patch) | |
tree | 0735adb3d875561dd3f6f266253db336fb122788 /Lib/distutils/sysconfig.py | |
parent | 69091cb497b2f0fe7e2789b30b43cf78caf9de9b (diff) | |
download | cpython-85e102a2b090dd693d0801ae2edb9660cfa0f281.zip cpython-85e102a2b090dd693d0801ae2edb9660cfa0f281.tar.gz cpython-85e102a2b090dd693d0801ae2edb9660cfa0f281.tar.bz2 |
bpo-35299: Fixed sysconfig and distutils during PGO profiling (GH-11744)
Diffstat (limited to 'Lib/distutils/sysconfig.py')
-rw-r--r-- | Lib/distutils/sysconfig.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index b433fc8..40af493 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -29,9 +29,7 @@ if "_PYTHON_PROJECT_BASE" in os.environ: project_base = os.path.abspath(os.environ["_PYTHON_PROJECT_BASE"]) else: project_base = os.path.dirname(os.path.abspath(sys.executable)) -if (os.name == 'nt' and - project_base.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): - project_base = os.path.dirname(os.path.dirname(project_base)) + # python_build: (Boolean) if true, we're either building Python or # building an extension with an un-installed Python, so we use @@ -41,16 +39,26 @@ def _is_python_source_dir(d): if os.path.isfile(os.path.join(d, "Modules", fn)): return True return False + _sys_home = getattr(sys, '_home', None) -if (_sys_home and os.name == 'nt' and - _sys_home.lower().endswith(('\\pcbuild\\win32', '\\pcbuild\\amd64'))): - _sys_home = os.path.dirname(os.path.dirname(_sys_home)) + +if os.name == 'nt': + def _fix_pcbuild(d): + if d and os.path.normcase(d).startswith( + os.path.normcase(os.path.join(PREFIX, "PCbuild"))): + return PREFIX + return d + project_base = _fix_pcbuild(project_base) + _sys_home = _fix_pcbuild(_sys_home) + def _python_build(): if _sys_home: return _is_python_source_dir(_sys_home) return _is_python_source_dir(project_base) + python_build = _python_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. @@ -99,6 +107,11 @@ def get_python_inc(plat_specific=0, prefix=None): python_dir = 'python' + get_python_version() + build_flags return os.path.join(prefix, "include", python_dir) elif os.name == "nt": + if python_build: + # Include both the include and PC dir to ensure we can find + # pyconfig.h + return (os.path.join(prefix, "include") + os.path.pathsep + + os.path.join(prefix, "PC")) return os.path.join(prefix, "include") else: raise DistutilsPlatformError( |