- Issue #23968: Rename the platform directory from plat-$(MACHDEP) to

plat-$(PLATFORM_TRIPLET).
  Rename the config directory (LIBPL) from config-$(LDVERSION) to
  config-$(LDVERSION)-$(PLATFORM_TRIPLET).
  Install the platform specifc _sysconfigdata module into the platform
  directory and rename it to include the ABIFLAGS.
This commit is contained in:
doko@ubuntu.com 2016-06-14 08:55:19 +02:00
parent c09087680e
commit 5553231b91
8 changed files with 117 additions and 14 deletions

View File

@ -242,6 +242,8 @@ def get_makefile_filename():
return os.path.join(_sys_home or project_base, "Makefile") return os.path.join(_sys_home or project_base, "Makefile")
lib_dir = get_python_lib(plat_specific=0, standard_lib=1) lib_dir = get_python_lib(plat_specific=0, standard_lib=1)
config_file = 'config-{}{}'.format(get_python_version(), build_flags) config_file = 'config-{}{}'.format(get_python_version(), build_flags)
if hasattr(sys.implementation, '_multiarch'):
config_file += '-%s' % sys.implementation._multiarch
return os.path.join(lib_dir, config_file, 'Makefile') return os.path.join(lib_dir, config_file, 'Makefile')

View File

@ -1,8 +1,33 @@
#! /bin/sh #! /bin/sh
case `uname` in case `uname` in
Linux*) ;; Linux*|GNU*) ;;
*) echo Probably not on a Linux system 1>&2 *) echo Probably not on a Linux system 1>&2
exit 1;; exit 1;;
esac esac
set -v if [ -z "$CC" ]; then
h2py -i '(u_long)' /usr/include/sys/types.h /usr/include/netinet/in.h /usr/include/dlfcn.h echo >&2 "$(basename $0): CC is not set"
exit 1
fi
headers="sys/types.h netinet/in.h dlfcn.h"
incdirs="$(echo $($CC -v -E - < /dev/null 2>&1|awk '/^#include/, /^End of search/' | grep '^ '))"
if [ -z "$incdirs" ]; then
incdirs="/usr/include"
fi
for h in $headers; do
absh=
for d in $incdirs; do
if [ -f "$d/$h" ]; then
absh="$d/$h"
break
fi
done
if [ -n "$absh" ]; then
absheaders="$absheaders $absh"
else
echo >&2 "$(basename $0): header $h not found"
exit 1
fi
done
set -x
${H2PY:-h2py} -i '(u_long)' $absheaders

View File

@ -337,6 +337,8 @@ def get_makefile_filename():
config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags) config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags)
else: else:
config_dir_name = 'config' config_dir_name = 'config'
if hasattr(sys.implementation, '_multiarch'):
config_dir_name += '-%s' % sys.implementation._multiarch
return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile') return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile')
def _generate_posix_vars(): def _generate_posix_vars():
@ -379,7 +381,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 = '_sysconfigdata' name = '_sysconfigdata_' + sys.abiflags
if 'darwin' in sys.platform: if 'darwin' in sys.platform:
import types import types
module = types.ModuleType(name) module = types.ModuleType(name)
@ -405,7 +407,9 @@ def _generate_posix_vars():
def _init_posix(vars): 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()
from _sysconfigdata import build_time_vars name = '_sysconfigdata_' + sys.abiflags
_temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
build_time_vars = _temp.build_time_vars
vars.update(build_time_vars) vars.update(build_time_vars)
def _init_non_posix(vars): def _init_non_posix(vars):

View File

@ -109,6 +109,7 @@ MACHDEP= @MACHDEP@
# Multiarch directory (may be empty) # Multiarch directory (may be empty)
MULTIARCH= @MULTIARCH@ MULTIARCH= @MULTIARCH@
MULTIARCH_CPPFLAGS = @MULTIARCH_CPPFLAGS@
# Install prefix for architecture-independent files # Install prefix for architecture-independent files
prefix= @prefix@ prefix= @prefix@
@ -784,6 +785,7 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile
$(CC) -c $(PY_CORE_CFLAGS) \ $(CC) -c $(PY_CORE_CFLAGS) \
-DABIFLAGS='"$(ABIFLAGS)"' \ -DABIFLAGS='"$(ABIFLAGS)"' \
$(MULTIARCH_CPPFLAGS) \
-o $@ $(srcdir)/Python/sysmodule.c -o $@ $(srcdir)/Python/sysmodule.c
$(IO_OBJS): $(IO_H) $(IO_OBJS): $(IO_H)
@ -1263,7 +1265,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
else true; \ else true; \
fi; \ fi; \
done done
@for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py; \ @for i in $(srcdir)/Lib/*.py; \
do \ do \
if test -x $$i; then \ if test -x $$i; then \
$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \ $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
@ -1298,6 +1300,10 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
esac; \ esac; \
done; \ done; \
done done
$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS).py \
$(DESTDIR)$(LIBDEST)/$(PLATDIR); \
echo $(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS).py \
$(LIBDEST)/$(PLATDIR)
$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \ if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
@ -1336,13 +1342,19 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
# Create the PLATDIR source directory, if one wasn't distributed.. # Create the PLATDIR source directory, if one wasn't distributed..
# For multiarch targets, use the plat-linux/regen script.
$(srcdir)/Lib/$(PLATDIR): $(srcdir)/Lib/$(PLATDIR):
mkdir $(srcdir)/Lib/$(PLATDIR) mkdir $(srcdir)/Lib/$(PLATDIR)
cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen if [ -n "$(MULTIARCH)" ]; then \
cp $(srcdir)/Lib/plat-linux/regen $(srcdir)/Lib/$(PLATDIR)/regen; \
else \
cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen; \
fi; \
export PATH; PATH="`pwd`:$$PATH"; \ export PATH; PATH="`pwd`:$$PATH"; \
export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \ export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \ export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
export EXE; EXE="$(BUILDEXE)"; \ export EXE; EXE="$(BUILDEXE)"; \
export CC; CC="$(CC)"; \
if [ -n "$(MULTIARCH)" ]; then export MULTIARCH; MULTIARCH=$(MULTIARCH); fi; \ if [ -n "$(MULTIARCH)" ]; then export MULTIARCH; MULTIARCH=$(MULTIARCH); fi; \
export PYTHON_FOR_BUILD; \ export PYTHON_FOR_BUILD; \
if [ "$(BUILD_GNU_TYPE)" = "$(HOST_GNU_TYPE)" ]; then \ if [ "$(BUILD_GNU_TYPE)" = "$(HOST_GNU_TYPE)" ]; then \
@ -1350,6 +1362,7 @@ $(srcdir)/Lib/$(PLATDIR):
else \ else \
PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)"; \ PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)"; \
fi; \ fi; \
export H2PY; H2PY="$$PYTHON_FOR_BUILD $(abs_srcdir)/Tools/scripts/h2py.py"; \
cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen
python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
@ -1448,7 +1461,7 @@ sharedinstall: sharedmods
--install-scripts=$(BINDIR) \ --install-scripts=$(BINDIR) \
--install-platlib=$(DESTSHARED) \ --install-platlib=$(DESTSHARED) \
--root=$(DESTDIR)/ --root=$(DESTDIR)/
-rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS).py
-rm -r $(DESTDIR)$(DESTSHARED)/__pycache__ -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
# Here are a couple of targets for MacOSX again, to install a full # Here are a couple of targets for MacOSX again, to install a full
@ -1627,6 +1640,9 @@ clobber: clean profile-removal
-rm -rf build platform -rm -rf build platform
-rm -rf $(PYTHONFRAMEWORKDIR) -rm -rf $(PYTHONFRAMEWORKDIR)
-rm -f python-config.py python-config -rm -f python-config.py python-config
if [ -n "$(MULTIARCH)" ]; then \
rm -rf $(srcdir)/Lib/$(PLATDIR); \
fi
# Make things extra clean, before making a distribution: # Make things extra clean, before making a distribution:
# remove all generated files, even Makefile[.pre] # remove all generated files, even Makefile[.pre]

View File

@ -25,6 +25,16 @@ IDLE
- Issue #27310: Fix IDLE.app failure to launch on OS X due to vestigial import. - Issue #27310: Fix IDLE.app failure to launch on OS X due to vestigial import.
Build
-----
- Issue #23968: Rename the platform directory from plat-$(MACHDEP) to
plat-$(PLATFORM_TRIPLET).
Rename the config directory (LIBPL) from config-$(LDVERSION) to
config-$(LDVERSION)-$(PLATFORM_TRIPLET).
Install the platform specifc _sysconfigdata module into the platform
directory and rename it to include the ABIFLAGS.
What's New in Python 3.6.0 alpha 2 What's New in Python 3.6.0 alpha 2
================================== ==================================

View File

@ -1693,6 +1693,16 @@ make_impl_info(PyObject *version_info)
if (res < 0) if (res < 0)
goto error; goto error;
#ifdef MULTIARCH
value = PyUnicode_FromString(MULTIARCH);
if (value == NULL)
goto error;
res = PyDict_SetItemString(impl_info, "_multiarch", value);
Py_DECREF(value);
if (res < 0)
goto error;
#endif
/* dict ready */ /* dict ready */
ns = _PyNamespace_New(impl_info); ns = _PyNamespace_New(impl_info);

31
configure vendored
View File

@ -704,6 +704,7 @@ LIBRARY
BUILDEXEEXT BUILDEXEEXT
EGREP EGREP
NO_AS_NEEDED NO_AS_NEEDED
MULTIARCH_CPPFLAGS
PLATFORM_TRIPLET PLATFORM_TRIPLET
PLATDIR PLATDIR
MULTIARCH MULTIARCH
@ -776,6 +777,7 @@ infodir
docdir docdir
oldincludedir oldincludedir
includedir includedir
runstatedir
localstatedir localstatedir
sharedstatedir sharedstatedir
sysconfdir sysconfdir
@ -886,6 +888,7 @@ 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}'
@ -1138,6 +1141,15 @@ 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=* \
@ -1275,7 +1287,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 libdir localedir mandir runstatedir
do do
eval ac_val=\$$ac_var eval ac_val=\$$ac_var
# Remove trailing slashes. # Remove trailing slashes.
@ -1428,6 +1440,7 @@ 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]
@ -2877,6 +2890,7 @@ ac_config_headers="$ac_config_headers pyconfig.h"
ac_aux_dir= ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
if test -f "$ac_dir/install-sh"; then if test -f "$ac_dir/install-sh"; then
@ -5332,9 +5346,16 @@ if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
as_fn_error $? "internal configure error for the platform triplet, please file a bug report" "$LINENO" 5 as_fn_error $? "internal configure error for the platform triplet, please file a bug report" "$LINENO" 5
fi fi
fi fi
PLATDIR=plat-$MACHDEP if test x$PLATFORM_TRIPLET = x; then
PLATDIR=plat-$MACHDEP
else
PLATDIR=plat-$PLATFORM_TRIPLET
fi
if test x$MULTIARCH != x; then
MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\""
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wl,--no-as-needed" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wl,--no-as-needed" >&5
@ -14768,7 +14789,11 @@ LDVERSION='$(VERSION)$(ABIFLAGS)'
$as_echo "$LDVERSION" >&6; } $as_echo "$LDVERSION" >&6; }
LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}" if test x$PLATFORM_TRIPLET = x; then
LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
else
LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
fi
# Check whether right shifting a negative integer extends the sign bit # Check whether right shifting a negative integer extends the sign bit

View File

@ -872,10 +872,17 @@ if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
AC_MSG_ERROR([internal configure error for the platform triplet, please file a bug report]) AC_MSG_ERROR([internal configure error for the platform triplet, please file a bug report])
fi fi
fi fi
PLATDIR=plat-$MACHDEP if test x$PLATFORM_TRIPLET = x; then
PLATDIR=plat-$MACHDEP
else
PLATDIR=plat-$PLATFORM_TRIPLET
fi
AC_SUBST(PLATDIR) AC_SUBST(PLATDIR)
AC_SUBST(PLATFORM_TRIPLET) AC_SUBST(PLATFORM_TRIPLET)
if test x$MULTIARCH != x; then
MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\""
fi
AC_SUBST(MULTIARCH_CPPFLAGS)
AC_MSG_CHECKING([for -Wl,--no-as-needed]) AC_MSG_CHECKING([for -Wl,--no-as-needed])
save_LDFLAGS="$LDFLAGS" save_LDFLAGS="$LDFLAGS"
@ -4462,7 +4469,11 @@ AC_MSG_RESULT($LDVERSION)
dnl define LIBPL after ABIFLAGS and LDVERSION is defined. dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
AC_SUBST(PY_ENABLE_SHARED) AC_SUBST(PY_ENABLE_SHARED)
LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}" if test x$PLATFORM_TRIPLET = x; then
LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
else
LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
fi
AC_SUBST(LIBPL) AC_SUBST(LIBPL)
# Check whether right shifting a negative integer extends the sign bit # Check whether right shifting a negative integer extends the sign bit