Issue #28046: get_sysconfigdata_name() uses the _PYTHON_SYSCONFIGDATA_NAME

environment variable that is defined when cross-compiling.
This commit is contained in:
Xavier de Gaye 2016-09-11 22:22:24 +02:00
parent ef71d20548
commit 92dec548ff
4 changed files with 14 additions and 31 deletions

View File

@ -418,11 +418,12 @@ _config_vars = None
def _init_posix(): def _init_posix():
"""Initialize the module as appropriate for POSIX systems.""" """Initialize the module as appropriate for POSIX systems."""
# _sysconfigdata is generated at build time, see the sysconfig module # _sysconfigdata is generated at build time, see the sysconfig module
name = '_sysconfigdata_{abi}_{platform}_{multiarch}'.format( name = os.environ.get('_PYTHON_SYSCONFIGDATA_NAME',
'_sysconfigdata_{abi}_{platform}_{multiarch}'.format(
abi=sys.abiflags, abi=sys.abiflags,
platform=sys.platform, platform=sys.platform,
multiarch=getattr(sys.implementation, '_multiarch', ''), multiarch=getattr(sys.implementation, '_multiarch', ''),
) ))
_temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
build_time_vars = _temp.build_time_vars build_time_vars = _temp.build_time_vars
global _config_vars global _config_vars

View File

@ -342,19 +342,13 @@ def get_makefile_filename():
return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile') return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile')
def _get_sysconfigdata_name(vars=None): def _get_sysconfigdata_name():
if vars is None: return os.environ.get('_PYTHON_SYSCONFIGDATA_NAME',
return '_sysconfigdata_{abi}_{platform}_{multiarch}'.format( '_sysconfigdata_{abi}_{platform}_{multiarch}'.format(
abi=sys.abiflags, abi=sys.abiflags,
platform=sys.platform, platform=sys.platform,
multiarch=getattr(sys.implementation, '_multiarch', ''), multiarch=getattr(sys.implementation, '_multiarch', ''),
) ))
else:
return '_sysconfigdata_{abi}_{platform}_{multiarch}'.format(
abi=vars['ABIFLAGS'],
platform=vars['MACHDEP'],
multiarch=vars.get('MULTIARCH', ''),
)
def _generate_posix_vars(): def _generate_posix_vars():
@ -397,7 +391,7 @@ def _generate_posix_vars():
# _sysconfigdata module manually and populate it with the build vars. # _sysconfigdata module manually and populate it with the build vars.
# This is more than sufficient for ensuring the subsequent call to # This is more than sufficient for ensuring the subsequent call to
# get_platform() succeeds. # get_platform() succeeds.
name = _get_sysconfigdata_name(vars) name = _get_sysconfigdata_name()
if 'darwin' in sys.platform: if 'darwin' in sys.platform:
import types import types
module = types.ModuleType(name) module = types.ModuleType(name)

16
configure vendored
View File

@ -784,7 +784,6 @@ infodir
docdir docdir
oldincludedir oldincludedir
includedir includedir
runstatedir
localstatedir localstatedir
sharedstatedir sharedstatedir
sysconfdir sysconfdir
@ -895,7 +894,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc' sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com' sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var' localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include' includedir='${prefix}/include'
oldincludedir='/usr/include' oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@ -1148,15 +1146,6 @@ do
| -silent | --silent | --silen | --sile | --sil) | -silent | --silent | --silen | --sile | --sil)
silent=yes ;; silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;; ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@ -1294,7 +1283,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \ datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir libdir localedir mandir
do do
eval ac_val=\$$ac_var eval ac_val=\$$ac_var
# Remove trailing slashes. # Remove trailing slashes.
@ -1447,7 +1436,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var] --localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib] --libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include] --includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include] --oldincludedir=DIR C header files for non-gcc [/usr/include]
@ -2940,7 +2928,7 @@ $as_echo_n "checking for python interpreter for cross build... " >&6; }
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5
$as_echo "$interp" >&6; } $as_echo "$interp" >&6; }
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 '$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 _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp
fi fi
# Used to comment out stuff for rebuilding generated files # Used to comment out stuff for rebuilding generated files
GENERATED_COMMENT='#' GENERATED_COMMENT='#'

View File

@ -78,7 +78,7 @@ if test "$cross_compiling" = yes; then
AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found]) AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
fi fi
AC_MSG_RESULT($interp) AC_MSG_RESULT($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 '$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 _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp
fi fi
# Used to comment out stuff for rebuilding generated files # Used to comment out stuff for rebuilding generated files
GENERATED_COMMENT='#' GENERATED_COMMENT='#'