summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordoko@python.org <doko@python.org>2013-01-25 13:33:33 (GMT)
committerdoko@python.org <doko@python.org>2013-01-25 13:33:33 (GMT)
commit9731330d6f4d63d6d57c8e99c8d11ef1def42858 (patch)
tree1ed8606901ef598959dc27593b4fb10e1d14c60c
parent0c77bf757f94945b9e11a3d1f44ee47466866fd0 (diff)
downloadcpython-9731330d6f4d63d6d57c8e99c8d11ef1def42858.zip
cpython-9731330d6f4d63d6d57c8e99c8d11ef1def42858.tar.gz
cpython-9731330d6f4d63d6d57c8e99c8d11ef1def42858.tar.bz2
- Issue #15484: Fix _PYTHON_PROJECT_BASE for srcdir != builddir builds;
use _PYTHON_PROJECT_BASE in distutils/sysconfig.py.
-rw-r--r--Lib/distutils/sysconfig.py13
-rw-r--r--Misc/NEWS3
-rwxr-xr-xconfigure2
-rw-r--r--configure.ac2
4 files changed, 13 insertions, 7 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 317640c..d125e0b 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -24,7 +24,11 @@ BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
# Path to the base directory of the project. On Windows the binary may
# live in project/PCBuild9. If we're dealing with an x64 Windows build,
# it'll live in project/PCbuild/amd64.
-project_base = os.path.dirname(os.path.abspath(sys.executable))
+# set for cross builds
+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 "pcbuild" in project_base[-8:].lower():
project_base = os.path.abspath(os.path.join(project_base, os.path.pardir))
# PC/VS7.1
@@ -98,7 +102,7 @@ def get_python_inc(plat_specific=0, prefix=None):
# the build directory may not be the source directory, we
# must use "srcdir" from the makefile to find the "Include"
# directory.
- base = _sys_home or os.path.dirname(os.path.abspath(sys.executable))
+ base = _sys_home or project_base
if plat_specific:
return base
if _sys_home:
@@ -251,8 +255,7 @@ def get_config_h_filename():
def get_makefile_filename():
"""Return full pathname of installed Makefile from the Python build."""
if python_build:
- return os.path.join(_sys_home or os.path.dirname(sys.executable),
- "Makefile")
+ return os.path.join(_sys_home or project_base, "Makefile")
lib_dir = get_python_lib(plat_specific=0, standard_lib=1)
config_file = 'config-{}{}'.format(get_python_version(), build_flags)
return os.path.join(lib_dir, config_file, 'Makefile')
@@ -555,7 +558,7 @@ def get_config_vars(*args):
# testing, for example, we might be running a non-installed python
# from a different directory.
if python_build and os.name == "posix":
- base = os.path.dirname(os.path.abspath(sys.executable))
+ base = project_base
if (not os.path.isabs(_config_vars['srcdir']) and
base != os.getcwd()):
# srcdir is relative and we are not in the same directory
diff --git a/Misc/NEWS b/Misc/NEWS
index 3db5c94..7612229 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -533,6 +533,9 @@ Tests
Build
-----
+- Issue #15484: Fix _PYTHON_PROJECT_BASE for srcdir != builddir builds;
+ use _PYTHON_PROJECT_BASE in distutils/sysconfig.py.
+
- Issue #17029: Let h2py search the multiarch system include directory.
- Issue #16953: Fix socket module compilation on platforms with
diff --git a/configure b/configure
index 1f56376..df2d5b5 100755
--- a/configure
+++ b/configure
@@ -2942,7 +2942,7 @@ $as_echo_n "checking for python interpreter for cross build... " >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5
$as_echo "$interp" >&6; }
- PYTHON_FOR_BUILD="_PYTHON_PROJECT_BASE=$srcdir"' _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
fi
elif test "$cross_compiling" = maybe; then
as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5
diff --git a/configure.ac b/configure.ac
index 71bf871c..fc8a68c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -65,7 +65,7 @@ if test "$cross_compiling" = yes; then
AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
fi
AC_MSG_RESULT($interp)
- PYTHON_FOR_BUILD="_PYTHON_PROJECT_BASE=$srcdir"' _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
fi
elif test "$cross_compiling" = maybe; then
AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])