[Python-checkins] cpython: Issue #28046: Remove platform-specific directories from sys.path

zach.ware python-checkins at python.org
Fri Sep 9 21:00:04 EDT 2016


https://hg.python.org/cpython/rev/90396ec9a2f8
changeset:   103514:90396ec9a2f8
user:        Zachary Ware <zachary.ware at gmail.com>
date:        Fri Sep 09 17:59:49 2016 -0700
summary:
  Issue #28046: Remove platform-specific directories from sys.path

files:
  .gitignore                         |   1 -
  .hgignore                          |   1 -
  Lib/sysconfig.py                   |  13 +++++++++++--
  Mac/BuildScript/build-installer.py |   3 ++-
  Makefile.pre.in                    |  18 +++++-------------
  Misc/NEWS                          |   2 ++
  PC/getpathp.c                      |   4 ++--
  Tools/msi/make_zip.py              |   2 --
  configure                          |   9 +--------
  configure.ac                       |   8 +-------
  10 files changed, 24 insertions(+), 37 deletions(-)


diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -21,7 +21,6 @@
 Lib/distutils/command/*.pdb
 Lib/lib2to3/*.pickle
 Lib/test/data/*
-Lib/plat-mac/errors.rsrc.df.rsrc
 Makefile
 Makefile.pre
 Misc/python.pc
diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -26,7 +26,6 @@
 python-config.py$
 reflog.txt$
 tags$
-Lib/plat-mac/errors.rsrc.df.rsrc
 Misc/python.pc
 Misc/python-config.sh$
 Modules/Setup$
diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
@@ -341,6 +341,15 @@
         config_dir_name += '-%s' % sys.implementation._multiarch
     return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile')
 
+
+def _get_sysconfigdata_name():
+    return '_sysconfigdata_{abi}_{platform}_{multiarch}'.format(
+        abi=sys.abiflags,
+        platform=sys.platform,
+        multiarch=getattr(sys.implementation, '_multiarch', ''),
+    )
+
+
 def _generate_posix_vars():
     """Generate the Python module containing build-time variables."""
     import pprint
@@ -381,7 +390,7 @@
     # _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_' + sys.abiflags
+    name = _get_sysconfigdata_name()
     if 'darwin' in sys.platform:
         import types
         module = types.ModuleType(name)
@@ -407,7 +416,7 @@
 def _init_posix(vars):
     """Initialize the module as appropriate for POSIX systems."""
     # _sysconfigdata is generated at build time, see _generate_posix_vars()
-    name = '_sysconfigdata_' + sys.abiflags
+    name = _get_sysconfigdata_name()
     _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
     build_time_vars = _temp.build_time_vars
     vars.update(build_time_vars)
diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py
--- a/Mac/BuildScript/build-installer.py
+++ b/Mac/BuildScript/build-installer.py
@@ -1292,7 +1292,8 @@
 
     import pprint
     if getVersionMajorMinor() >= (3, 6):
-        path = os.path.join(path_to_lib, 'plat-darwin', '_sysconfigdata_m.py')
+        # XXX this is extra-fragile
+        path = os.path.join(path_to_lib, '_sysconfigdata_m_darwin_darwin.py')
     else:
         path = os.path.join(path_to_lib, '_sysconfigdata.py')
     fp = open(path, 'r')
diff --git a/Makefile.pre.in b/Makefile.pre.in
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1178,8 +1178,6 @@
 	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
 
 # Install the library
-PLATDIR=	@PLATDIR@
-MACHDEPS=	$(PLATDIR)
 XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
 LIBSUBDIRS=	tkinter tkinter/test tkinter/test/test_tkinter \
 		tkinter/test/test_ttk site-packages test \
@@ -1238,8 +1236,8 @@
 		multiprocessing multiprocessing/dummy \
 		unittest unittest/test unittest/test/testmock \
 		venv venv/scripts venv/scripts/posix \
-		curses pydoc_data $(MACHDEPS)
-libinstall:	build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
+		curses pydoc_data
+libinstall:	build_all $(srcdir)/Modules/xxmodule.c
 	@for i in $(SCRIPTDIR) $(LIBDEST); \
 	do \
 		if test ! -d $(DESTDIR)$$i; then \
@@ -1294,10 +1292,10 @@
 			esac; \
 		done; \
 	done
-	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS).py \
-		$(DESTDIR)$(LIBDEST)/$(PLATDIR); \
+	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
+		$(DESTDIR)$(LIBDEST); \
 	echo $(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS).py \
-		$(LIBDEST)/$(PLATDIR)
+		$(LIBDEST)
 	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
 	if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
 		$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
@@ -1335,9 +1333,6 @@
 	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
 		$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
 
-$(srcdir)/Lib/$(PLATDIR):
-	mkdir $(srcdir)/Lib/$(PLATDIR)
-
 python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
 	# Substitution happens here, as the completely-expanded BINDIR
 	# is not available in configure
@@ -1614,9 +1609,6 @@
 	-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]
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,8 @@
 Core and Builtins
 -----------------
 
+- Issue #28046: Remove platform-specific directories from sys.path.
+
 - Issue #25758: Prevents zipimport from unnecessarily encoding a filename
   (patch by Eryk Sun)
 
diff --git a/PC/getpathp.c b/PC/getpathp.c
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -26,7 +26,7 @@
      is set, we believe it.  Otherwise, we use the path of our host .EXE's
      to try and locate on of our "landmarks" and deduce our home.
      - If we DO have a Python Home: The relevant sub-directories (Lib,
-       plat-win, etc) are based on the Python Home
+       DLLs, etc) are based on the Python Home
      - If we DO NOT have a Python Home, the core Python Path is
        loaded from the registry.  This is the main PythonPath key,
        and both HKLM and HKCU are combined to form the path)
@@ -34,7 +34,7 @@
    * Iff - we can not locate the Python Home, have not had a PYTHONPATH
      specified, and can't locate any Registry entries (ie, we have _nothing_
      we can assume is a good path), a default path with relative entries is
-     used (eg. .\Lib;.\plat-win, etc)
+     used (eg. .\Lib;.\DLLs, etc)
 
 
    If a sys.path file exists adjacent to python.exe, it must contain a
diff --git a/Tools/msi/make_zip.py b/Tools/msi/make_zip.py
--- a/Tools/msi/make_zip.py
+++ b/Tools/msi/make_zip.py
@@ -67,8 +67,6 @@
     if p.is_dir():
         if name in EXCLUDE_FROM_LIBRARY:
             return False
-        if name.startswith('plat-'):
-            return False
         if name == 'test' and p.parts[-2].lower() == 'lib':
             return False
         if name in {'test', 'tests'} and p.parts[-3].lower() == 'lib':
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -712,7 +712,6 @@
 NO_AS_NEEDED
 MULTIARCH_CPPFLAGS
 PLATFORM_TRIPLET
-PLATDIR
 MULTIARCH
 ac_ct_CXX
 MAINCC
@@ -2929,7 +2928,7 @@
 	fi
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5
 $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:$(srcdir)/Lib/$(PLATDIR) '$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
     fi
     # Used to comment out stuff for rebuilding generated files
     GENERATED_COMMENT='#'
@@ -5361,12 +5360,6 @@
 elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then
   MULTIARCH=$PLATFORM_TRIPLET
 fi
-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\\\""
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -78,7 +78,7 @@
 	    AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
 	fi
         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:$(srcdir)/Lib/$(PLATDIR) '$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
     fi
     # Used to comment out stuff for rebuilding generated files
     GENERATED_COMMENT='#'
@@ -910,12 +910,6 @@
 elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then
   MULTIARCH=$PLATFORM_TRIPLET
 fi
-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\\\""

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list