changeset: 103514:90396ec9a2f8 user: Zachary Ware date: Fri Sep 09 17:59:49 2016 -0700 files: .gitignore .hgignore Lib/sysconfig.py Mac/BuildScript/build-installer.py Makefile.pre.in Misc/NEWS PC/getpathp.c Tools/msi/make_zip.py configure configure.ac description: Issue #28046: Remove platform-specific directories from sys.path diff -r 55d0860f5bb8 -r 90396ec9a2f8 .gitignore --- a/.gitignore Fri Sep 09 17:47:38 2016 -0700 +++ b/.gitignore Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 .hgignore --- a/.hgignore Fri Sep 09 17:47:38 2016 -0700 +++ b/.hgignore Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 Lib/sysconfig.py --- a/Lib/sysconfig.py Fri Sep 09 17:47:38 2016 -0700 +++ b/Lib/sysconfig.py Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 Mac/BuildScript/build-installer.py --- a/Mac/BuildScript/build-installer.py Fri Sep 09 17:47:38 2016 -0700 +++ b/Mac/BuildScript/build-installer.py Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 Makefile.pre.in --- a/Makefile.pre.in Fri Sep 09 17:47:38 2016 -0700 +++ b/Makefile.pre.in Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 Misc/NEWS --- a/Misc/NEWS Fri Sep 09 17:47:38 2016 -0700 +++ b/Misc/NEWS Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 PC/getpathp.c --- a/PC/getpathp.c Fri Sep 09 17:47:38 2016 -0700 +++ b/PC/getpathp.c Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 Tools/msi/make_zip.py --- a/Tools/msi/make_zip.py Fri Sep 09 17:47:38 2016 -0700 +++ b/Tools/msi/make_zip.py Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 configure --- a/configure Fri Sep 09 17:47:38 2016 -0700 +++ b/configure Fri Sep 09 17:59:49 2016 -0700 @@ -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 -r 55d0860f5bb8 -r 90396ec9a2f8 configure.ac --- a/configure.ac Fri Sep 09 17:47:38 2016 -0700 +++ b/configure.ac Fri Sep 09 17:59:49 2016 -0700 @@ -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\\\""