f1c092da8b
Some of the python2 patches were left behind when doing the python3 package. This was because the python build system can now autodetect what packages can be built in the system. However, some of these patches are actually useful to reduce drastically the size of the interpreter. This patch ports the relevant patches to the python3 package, and adds a new patch to remove the idle3 IDE as well from the interpreter. Fixes #5696 Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
159 lines
6.1 KiB
Diff
159 lines
6.1 KiB
Diff
changeset: 79745:f85c3f4d9b98
|
|
parent: 79743:36b2ca7dc893
|
|
parent: 79744:24d52d3060e8
|
|
user: Trent Nelson <trent@trent.me>
|
|
date: Tue Oct 16 08:17:11 2012 -0400
|
|
summary: Merge issue #15298: ensure _sysconfigdata is generated in build directory,
|
|
|
|
Taken from upstream.
|
|
|
|
---
|
|
Lib/sysconfig.py | 11 ++++++++++-
|
|
Makefile.pre.in | 24 +++++++++++++-----------
|
|
setup.py | 14 --------------
|
|
3 files changed, 23 insertions(+), 26 deletions(-)
|
|
|
|
Index: Python-3.3.0/Lib/sysconfig.py
|
|
===================================================================
|
|
--- Python-3.3.0.orig/Lib/sysconfig.py
|
|
+++ Python-3.3.0/Lib/sysconfig.py
|
|
@@ -390,13 +390,22 @@
|
|
if _PYTHON_BUILD:
|
|
vars['LDSHARED'] = vars['BLDSHARED']
|
|
|
|
- destfile = os.path.join(os.path.dirname(__file__), '_sysconfigdata.py')
|
|
+ pybuilddir = 'build/lib.%s-%s' % (get_platform(), sys.version[:3])
|
|
+ if hasattr(sys, "gettotalrefcount"):
|
|
+ pybuilddir += '-pydebug'
|
|
+ os.makedirs(pybuilddir, exist_ok=True)
|
|
+ destfile = os.path.join(pybuilddir, '_sysconfigdata.py')
|
|
+
|
|
with open(destfile, 'w', encoding='utf8') as f:
|
|
f.write('# system configuration generated and used by'
|
|
' the sysconfig module\n')
|
|
f.write('build_time_vars = ')
|
|
pprint.pprint(vars, stream=f)
|
|
|
|
+ # Create file used for sys.path fixup -- see Modules/getpath.c
|
|
+ with open('pybuilddir.txt', 'w', encoding='ascii') as f:
|
|
+ f.write(pybuilddir)
|
|
+
|
|
def _init_posix(vars):
|
|
"""Initialize the module as appropriate for POSIX systems."""
|
|
# _sysconfigdata is generated at build time, see _generate_posix_vars()
|
|
Index: Python-3.3.0/Makefile.pre.in
|
|
===================================================================
|
|
--- Python-3.3.0.orig/Makefile.pre.in
|
|
+++ Python-3.3.0/Makefile.pre.in
|
|
@@ -410,8 +410,6 @@
|
|
Objects/unicodectype.o \
|
|
Objects/weakrefobject.o
|
|
|
|
-SYSCONFIGDATA=$(srcdir)/Lib/_sysconfigdata.py
|
|
-
|
|
##########################################################################
|
|
# objects that get linked into the Python library
|
|
LIBRARY_OBJS_OMIT_FROZEN= \
|
|
@@ -432,7 +430,7 @@
|
|
|
|
# Default target
|
|
all: build_all
|
|
-build_all: $(BUILDPYTHON) $(SYSCONFIGDATA) oldsharedmods sharedmods gdbhooks Modules/_testembed
|
|
+build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks Modules/_testembed
|
|
|
|
# Compile a binary with gcc profile guided optimization.
|
|
profile-opt:
|
|
@@ -466,15 +464,17 @@
|
|
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
|
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
|
|
|
-platform: $(BUILDPYTHON) $(SYSCONFIGDATA)
|
|
+platform: $(BUILDPYTHON)
|
|
$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform
|
|
|
|
-# Generate the sysconfig build-time data
|
|
-$(SYSCONFIGDATA): $(BUILDPYTHON)
|
|
+# Create build directory and generate the sysconfig build-time data there.
|
|
+# pybuilddir.txt contains the name of the build dir and is used for
|
|
+# sys.path fixup -- see Modules/getpath.c.
|
|
+pybuilddir.txt: $(BUILDPYTHON)
|
|
$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars
|
|
|
|
# Build the shared modules
|
|
-sharedmods: $(BUILDPYTHON) $(SYSCONFIGDATA)
|
|
+sharedmods: $(BUILDPYTHON) pybuilddir.txt
|
|
case $$MAKEFLAGS in *s*) quiet=-q; esac; \
|
|
$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
|
|
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
|
|
@@ -1036,7 +1036,7 @@
|
|
else true; \
|
|
fi; \
|
|
done
|
|
- @for i in $(srcdir)/Lib/*.py ; \
|
|
+ @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py; \
|
|
do \
|
|
if test -x $$i; then \
|
|
$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
|
|
@@ -1196,6 +1196,8 @@
|
|
--install-scripts=$(BINDIR) \
|
|
--install-platlib=$(DESTSHARED) \
|
|
--root=$(DESTDIR)/
|
|
+ -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py
|
|
+ -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
|
|
|
|
# Here are a couple of targets for MacOSX again, to install a full
|
|
# framework-based Python. frameworkinstall installs everything, the
|
|
@@ -1341,9 +1343,10 @@
|
|
find . -name '*.s[ol]' -exec rm -f {} ';'
|
|
find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
|
|
find build -name 'fficonfig.h' -exec rm -f {} ';' || true
|
|
- find build -name 'fficonfig.py' -exec rm -f {} ';' || true
|
|
+ find build -name '*.py' -exec rm -f {} ';' || true
|
|
+ find build -name '*.py[co]' -exec rm -f {} ';' || true
|
|
+ -rm -f pybuilddir.txt
|
|
-rm -f Lib/lib2to3/*Grammar*.pickle
|
|
- -rm -f $(SYSCONFIGDATA)
|
|
-rm -f Modules/_testembed Modules/_freeze_importlib
|
|
|
|
profile-removal:
|
|
@@ -1367,7 +1370,6 @@
|
|
Modules/Setup Modules/Setup.local Modules/Setup.config \
|
|
Modules/ld_so_aix Modules/python.exp Misc/python.pc
|
|
-rm -f python*-gdb.py
|
|
- -rm -f pybuilddir.txt
|
|
find $(srcdir) '(' -name '*.fdc' -o -name '*~' \
|
|
-o -name '[@,#]*' -o -name '*.old' \
|
|
-o -name '*.orig' -o -name '*.rej' \
|
|
Index: Python-3.3.0/setup.py
|
|
===================================================================
|
|
--- Python-3.3.0.orig/setup.py
|
|
+++ Python-3.3.0/setup.py
|
|
@@ -33,10 +33,6 @@
|
|
# This global variable is used to hold the list of modules to be disabled.
|
|
disabled_module_list = []
|
|
|
|
-# File which contains the directory for shared mods (for sys.path fixup
|
|
-# when running from the build dir, see Modules/getpath.c)
|
|
-_BUILDDIR_COOKIE = "pybuilddir.txt"
|
|
-
|
|
def add_dir_to_list(dirlist, dir):
|
|
"""Add the directory 'dir' to the list 'dirlist' (after any relative
|
|
directories) if:
|
|
@@ -252,16 +248,6 @@
|
|
args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
|
|
self.compiler.set_executables(**args)
|
|
|
|
- # Not only do we write the builddir cookie, but we manually install
|
|
- # the shared modules directory if it isn't already in sys.path.
|
|
- # Otherwise trying to import the extensions after building them
|
|
- # will fail.
|
|
- with open(_BUILDDIR_COOKIE, "wb") as f:
|
|
- f.write(self.build_lib.encode('utf-8', 'surrogateescape'))
|
|
- abs_build_lib = os.path.join(os.getcwd(), self.build_lib)
|
|
- if abs_build_lib not in sys.path:
|
|
- sys.path.append(abs_build_lib)
|
|
-
|
|
build_ext.build_extensions(self)
|
|
|
|
longest = max([len(e.name) for e in self.extensions])
|