]> granicus.if.org Git - python/commitdiff
- Issue #23968: Rename the platform directory from plat-$(MACHDEP) to
authordoko@ubuntu.com <doko@ubuntu.com>
Tue, 14 Jun 2016 06:55:19 +0000 (08:55 +0200)
committerdoko@ubuntu.com <doko@ubuntu.com>
Tue, 14 Jun 2016 06:55:19 +0000 (08:55 +0200)
  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.

Lib/distutils/sysconfig.py
Lib/plat-linux/regen
Lib/sysconfig.py
Makefile.pre.in
Misc/NEWS
Python/sysmodule.c
configure
configure.ac

index f205dcadebd43e0743dd063ff4cffc9491196239..e9cc4a95d4dafaa971cc87352b60c331480a89dd 100644 (file)
@@ -242,6 +242,8 @@ def get_makefile_filename():
         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)
+    if hasattr(sys.implementation, '_multiarch'):
+        config_file += '-%s' % sys.implementation._multiarch
     return os.path.join(lib_dir, config_file, 'Makefile')
 
 
index c76950e232411cc5f9639fdb6094a853672edb56..10633cbc9a9f1ce14e489f5f8ccb469024a466e3 100755 (executable)
@@ -1,8 +1,33 @@
 #! /bin/sh
 case `uname` in
-Linux*)        ;;
+Linux*|GNU*)   ;;
 *)     echo Probably not on a Linux system 1>&2
        exit 1;;
 esac
-set -v
-h2py -i '(u_long)' /usr/include/sys/types.h /usr/include/netinet/in.h /usr/include/dlfcn.h
+if [ -z "$CC" ]; then
+    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
index f18b1bc9580623a5f6af921e59a30da2a68b0649..ef530617a351d6300b5b06f174c3334238faf0b0 100644 (file)
@@ -337,6 +337,8 @@ def get_makefile_filename():
         config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags)
     else:
         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')
 
 def _generate_posix_vars():
@@ -379,7 +381,7 @@ def _generate_posix_vars():
     # _sysconfigdata module manually and populate it with the build vars.
     # This is more than sufficient for ensuring the subsequent call to
     # get_platform() succeeds.
-    name = '_sysconfigdata'
+    name = '_sysconfigdata_' + sys.abiflags
     if 'darwin' in sys.platform:
         import types
         module = types.ModuleType(name)
@@ -405,7 +407,9 @@ def _generate_posix_vars():
 def _init_posix(vars):
     """Initialize the module as appropriate for POSIX systems."""
     # _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)
 
 def _init_non_posix(vars):
index 02a0b64bb5a797bd58d9fdc710aa738ad54d1c6e..394a73535f50345f1c6d258c75bd81892ba9c835 100644 (file)
@@ -109,6 +109,7 @@ MACHDEP=    @MACHDEP@
 
 # Multiarch directory (may be empty)
 MULTIARCH=     @MULTIARCH@
+MULTIARCH_CPPFLAGS = @MULTIARCH_CPPFLAGS@
 
 # Install prefix for architecture-independent files
 prefix=                @prefix@
@@ -784,6 +785,7 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
 Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile
        $(CC) -c $(PY_CORE_CFLAGS) \
                -DABIFLAGS='"$(ABIFLAGS)"' \
+               $(MULTIARCH_CPPFLAGS) \
                -o $@ $(srcdir)/Python/sysmodule.c
 
 $(IO_OBJS): $(IO_H)
@@ -1263,7 +1265,7 @@ libinstall:       build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
                else    true; \
                fi; \
        done
-       @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py; \
+       @for i in $(srcdir)/Lib/*.py; \
        do \
                if test -x $$i; then \
                        $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
@@ -1298,6 +1300,10 @@ libinstall:      build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
                        esac; \
                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
        if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
                $(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
 
 # Create the PLATDIR source directory, if one wasn't distributed..
+# For multiarch targets, use the plat-linux/regen script.
 $(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 PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
        export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
        export EXE; EXE="$(BUILDEXE)"; \
+       export CC; CC="$(CC)"; \
        if [ -n "$(MULTIARCH)" ]; then export MULTIARCH; MULTIARCH=$(MULTIARCH); fi; \
        export PYTHON_FOR_BUILD; \
        if [ "$(BUILD_GNU_TYPE)" = "$(HOST_GNU_TYPE)" ]; then \
@@ -1350,6 +1362,7 @@ $(srcdir)/Lib/$(PLATDIR):
        else \
          PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)"; \
        fi; \
+       export H2PY; H2PY="$$PYTHON_FOR_BUILD $(abs_srcdir)/Tools/scripts/h2py.py"; \
        cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen
 
 python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
@@ -1448,7 +1461,7 @@ sharedinstall: sharedmods
                --install-scripts=$(BINDIR) \
                --install-platlib=$(DESTSHARED) \
                --root=$(DESTDIR)/
-       -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py
+       -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS).py
        -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
 
 # 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 $(PYTHONFRAMEWORKDIR)
        -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:
 # remove all generated files, even Makefile[.pre]
index 956303a3a1821c70db28ba34d71255820e2f2cb9..46e4296d235e03265100a8cf5a77f039c384c06e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -25,6 +25,16 @@ IDLE
 
 - 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
 ==================================
index b5199125a55b4ecc1536e68e4b68a45c9c48e6cb..56175d9544e804effaf1de0ba3bc4ba844f5b504 100644 (file)
@@ -1693,6 +1693,16 @@ make_impl_info(PyObject *version_info)
     if (res < 0)
         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 */
 
     ns = _PyNamespace_New(impl_info);
index da4a59a96a5e0a9bfd12ff5381b29eb2b6cf5a66..3853716227809ed734e4ba1aa795689093d48c3d 100755 (executable)
--- a/configure
+++ b/configure
@@ -704,6 +704,7 @@ LIBRARY
 BUILDEXEEXT
 EGREP
 NO_AS_NEEDED
+MULTIARCH_CPPFLAGS
 PLATFORM_TRIPLET
 PLATDIR
 MULTIARCH
@@ -776,6 +777,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -886,6 +888,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1138,6 +1141,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     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)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1275,7 +1287,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
+               libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1428,6 +1440,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/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=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
   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
   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
@@ -14768,7 +14789,11 @@ LDVERSION='$(VERSION)$(ABIFLAGS)'
 $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
index 1fbc655d449fd872e994c328a24239e370acae55..fa1bdec1385c4ea2508129bbfbca1569eba2662e 100644 (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])
   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(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])
 save_LDFLAGS="$LDFLAGS"
@@ -4462,7 +4469,11 @@ AC_MSG_RESULT($LDVERSION)
 
 dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
 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)
 
 # Check whether right shifting a negative integer extends the sign bit