python3: Port python2 patches to reduce the interpreter size

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>
This commit is contained in:
Maxime Ripard
2013-05-29 10:36:57 +02:00
committed by Peter Korsgaard
parent fc034397fc
commit f1c092da8b
26 changed files with 862 additions and 9 deletions

View File

@@ -0,0 +1,91 @@
Add an option to disable pydoc
It removes 0.5 MB of data from the target plus the pydoc script
itself.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
---
Makefile.pre.in | 8 +++++++-
configure.ac | 5 +++++
setup.py | 9 +++++++--
3 files changed, 19 insertions(+), 3 deletions(-)
Index: cpython/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -952,7 +952,9 @@
-rm -f $(DESTDIR)$(BINDIR)/idle3
(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
-rm -f $(DESTDIR)$(BINDIR)/pydoc3
+ifeq (@PYDOC@,yes)
(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
+endif
-rm -f $(DESTDIR)$(BINDIR)/2to3
(cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3)
-rm -f $(DESTDIR)$(BINDIR)/pyvenv
@@ -991,7 +993,7 @@
multiprocessing multiprocessing/dummy \
unittest \
venv venv/scripts venv/scripts/posix \
- curses pydoc_data $(MACHDEPS)
+ curses $(MACHDEPS)
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += tkinter/test tkinter/test/test_tkinter \
@@ -1034,6 +1036,10 @@
unittest unittest/test unittest/test/testmock
endif
+ifeq (@PYDOC@,yes)
+LIBSUBDIRS += pydoc_data
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
Index: cpython/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2448,6 +2448,11 @@
esac])
fi
+AC_SUBST(PYDOC)
+
+AC_ARG_ENABLE(pydoc,
+ AS_HELP_STRING([--disable-pydoc], [disable pydoc]),
+ [ PYDOC="${enableval}" ], [ PYDOC=yes ])
AC_SUBST(TEST_MODULES)
Index: cpython/setup.py
===================================================================
--- cpython.orig/setup.py
+++ cpython/setup.py
@@ -2123,6 +2123,12 @@
# turn off warnings when deprecated modules are imported
import warnings
warnings.filterwarnings("ignore",category=DeprecationWarning)
+
+ scripts = ['Tools/scripts/idle3', 'Tools/scripts/2to3',
+ 'Lib/smtpd.py']
+ if not '--disable-pydoc' in sysconfig.get_config_var("CONFIG_ARGS"):
+ scripts += [ 'Tools/scripts/pydoc3' ]
+
setup(# PyPI Metadata (PEP 301)
name = "Python",
version = sys.version.split()[0],
@@ -2147,8 +2153,7 @@
# If you change the scripts installed here, you also need to
# check the PyBuildScripts command above, and change the links
# created by the bininstall target in Makefile.pre.in
- scripts = ["Tools/scripts/pydoc3", "Tools/scripts/idle3",
- "Tools/scripts/2to3", "Tools/scripts/pyvenv"]
+ scripts = scripts,
)
# --install-platlib