mirror of
https://github.com/python/cpython.git
synced 2025-07-29 06:05:00 +00:00
[3.13] gh-115382: Fix cross compiles when host and target use same SOABI
Co-authored-by: Vincent Fazio <vfazio@gmail.com> Co-authored-by: Erlend E. Aasland <erlend@python.org>
This commit is contained in:
parent
51659f2e5c
commit
909d5ac295
6 changed files with 19 additions and 3 deletions
|
@ -340,7 +340,20 @@ def _init_posix(vars):
|
||||||
"""Initialize the module as appropriate for POSIX systems."""
|
"""Initialize the module as appropriate for POSIX systems."""
|
||||||
# _sysconfigdata is generated at build time, see _generate_posix_vars()
|
# _sysconfigdata is generated at build time, see _generate_posix_vars()
|
||||||
name = _get_sysconfigdata_name()
|
name = _get_sysconfigdata_name()
|
||||||
_temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
|
|
||||||
|
# For cross builds, the path to the target's sysconfigdata must be specified
|
||||||
|
# so it can be imported. It cannot be in PYTHONPATH, as foreign modules in
|
||||||
|
# sys.path can cause crashes when loaded by the host interpreter.
|
||||||
|
# Rely on truthiness as a valueless env variable is still an empty string.
|
||||||
|
# See OS X note in _generate_posix_vars re _sysconfigdata.
|
||||||
|
if (path := os.environ.get('_PYTHON_SYSCONFIGDATA_PATH')):
|
||||||
|
from importlib.machinery import FileFinder, SourceFileLoader, SOURCE_SUFFIXES
|
||||||
|
from importlib.util import module_from_spec
|
||||||
|
spec = FileFinder(path, (SourceFileLoader, SOURCE_SUFFIXES)).find_spec(name)
|
||||||
|
_temp = module_from_spec(spec)
|
||||||
|
spec.loader.exec_module(_temp)
|
||||||
|
else:
|
||||||
|
_temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
|
||||||
build_time_vars = _temp.build_time_vars
|
build_time_vars = _temp.build_time_vars
|
||||||
vars.update(build_time_vars)
|
vars.update(build_time_vars)
|
||||||
|
|
||||||
|
|
|
@ -594,6 +594,7 @@ class Regrtest:
|
||||||
'_PYTHON_PROJECT_BASE',
|
'_PYTHON_PROJECT_BASE',
|
||||||
'_PYTHON_HOST_PLATFORM',
|
'_PYTHON_HOST_PLATFORM',
|
||||||
'_PYTHON_SYSCONFIGDATA_NAME',
|
'_PYTHON_SYSCONFIGDATA_NAME',
|
||||||
|
"_PYTHON_SYSCONFIGDATA_PATH",
|
||||||
'PYTHONPATH'
|
'PYTHONPATH'
|
||||||
}
|
}
|
||||||
old_environ = os.environ
|
old_environ = os.environ
|
||||||
|
|
|
@ -334,6 +334,7 @@ def collect_os(info_add):
|
||||||
"_PYTHON_HOST_PLATFORM",
|
"_PYTHON_HOST_PLATFORM",
|
||||||
"_PYTHON_PROJECT_BASE",
|
"_PYTHON_PROJECT_BASE",
|
||||||
"_PYTHON_SYSCONFIGDATA_NAME",
|
"_PYTHON_SYSCONFIGDATA_NAME",
|
||||||
|
"_PYTHON_SYSCONFIGDATA_PATH",
|
||||||
"__PYVENV_LAUNCHER__",
|
"__PYVENV_LAUNCHER__",
|
||||||
|
|
||||||
# Sanitizer options
|
# Sanitizer options
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix cross compile failures when the host and target SOABIs match.
|
2
configure
generated
vendored
2
configure
generated
vendored
|
@ -3708,7 +3708,7 @@ fi
|
||||||
fi
|
fi
|
||||||
ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python
|
ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python
|
||||||
PYTHON_FOR_FREEZE="$with_build_python"
|
PYTHON_FOR_FREEZE="$with_build_python"
|
||||||
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 _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python
|
PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) _PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`) '$with_build_python
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_build_python" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_build_python" >&5
|
||||||
printf "%s\n" "$with_build_python" >&6; }
|
printf "%s\n" "$with_build_python" >&6; }
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ AC_ARG_WITH([build-python],
|
||||||
dnl Build Python interpreter is used for regeneration and freezing.
|
dnl Build Python interpreter is used for regeneration and freezing.
|
||||||
ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python
|
ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python
|
||||||
PYTHON_FOR_FREEZE="$with_build_python"
|
PYTHON_FOR_FREEZE="$with_build_python"
|
||||||
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 _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python
|
PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) _PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`) '$with_build_python
|
||||||
AC_MSG_RESULT([$with_build_python])
|
AC_MSG_RESULT([$with_build_python])
|
||||||
], [
|
], [
|
||||||
AS_VAR_IF([cross_compiling], [yes],
|
AS_VAR_IF([cross_compiling], [yes],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue