From 0337342d413d13f437fd089de91faee70a8bf3f9 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Wed, 22 Feb 2017 17:01:18 -0800
Subject: [PATCH] Add an option to disable installation of test modules

The Python standard distribution comes with many test modules, that
are not necessarly useful on embedded targets.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
[ Andrey Smirnov: ported to Python 3.6 ]
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
[james.hilliard1@gmail.com: adapt to python 3.9]
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
 Makefile.pre.in | 56 ++++++++++++++++++++++++++++++++-----------------
 configure.ac    |  5 +++++
 2 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/Makefile.pre.in b/Makefile.pre.in
index 7c3dde8dd4..204f293d53 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1385,8 +1385,29 @@ maninstall:	altmaninstall
 
 # Install the library
 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 \
+
+LIBSUBDIRS=	tkinter site-packages \
+		asyncio \
+		collections concurrent concurrent/futures encodings \
+		email email/mime \
+		ensurepip ensurepip/_bundled \
+		html json http dbm xmlrpc \
+		sqlite3 \
+		logging csv wsgiref urllib \
+		lib2to3 lib2to3/fixes lib2to3/pgen2 \
+		ctypes ctypes/macholib \
+		idlelib idlelib/Icons \
+		distutils distutils/command $(XMLLIBSUBDIRS) \
+		importlib \
+		turtledemo \
+		multiprocessing multiprocessing/dummy \
+		unittest \
+		venv venv/scripts venv/scripts/common venv/scripts/posix \
+		curses pydoc_data \
+		zoneinfo
+
+TESTSUBDIRS=	tkinter/test tkinter/test/test_tkinter \
+		tkinter/test/test_ttk test \
 		test/audiodata \
 		test/capath test/data \
 		test/cjkencodings test/decimaltestdata \
@@ -1446,28 +1467,25 @@ LIBSUBDIRS=	tkinter tkinter/test tkinter/test/test_tkinter \
 		test/test_importlib/zipdata02 \
 		test/test_zoneinfo test/test_zoneinfo/data \
 		test/ziptestdata \
-		asyncio \
 		test/test_asyncio \
-		collections concurrent concurrent/futures encodings \
-		email email/mime test/test_email test/test_email/data \
-		ensurepip ensurepip/_bundled \
-		html json test/test_json http dbm xmlrpc \
-		sqlite3 sqlite3/test \
-		logging csv wsgiref urllib \
-		lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \
+		test/test_email test/test_email/data \
+		test/test_json \
+		sqlite3/test \
+		lib2to3/tests \
 		lib2to3/tests/data lib2to3/tests/data/fixers \
 		lib2to3/tests/data/fixers/myfixes \
-		ctypes ctypes/test ctypes/macholib \
-		idlelib idlelib/Icons idlelib/idle_test \
-		distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \
+		ctypes/test \
+		idlelib/idle_test \
+		distutils/tests \
 		test/test_peg_generator \
+		test/test_importlib test/test_importlib/builtin \
 		test/test_tools test/test_warnings test/test_warnings/data \
-		turtledemo \
-		multiprocessing multiprocessing/dummy \
-		unittest unittest/test unittest/test/testmock \
-		venv venv/scripts venv/scripts/common venv/scripts/posix \
-		curses pydoc_data \
-		zoneinfo
+		unittest/test unittest/test/testmock
+
+ifeq (@TEST_MODULES@,yes)
+LIBSUBDIRS += $(TESTSUBDIRS)
+endif
+
 libinstall:	build_all $(srcdir)/Modules/xxmodule.c
 	@for i in $(SCRIPTDIR) $(LIBDEST); \
 	do \
diff --git a/configure.ac b/configure.ac
index 73d66167de..92e28d02ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3329,6 +3329,11 @@ if test "$posix_threads" = "yes"; then
       AC_CHECK_FUNCS(pthread_getcpuclockid)
 fi
 
+AC_SUBST(TEST_MODULES)
+
+AC_ARG_ENABLE(test-modules,
+	AS_HELP_STRING([--disable-test-modules], [disable test modules]),
+	[ TEST_MODULES="${enableval}" ], [ TEST_MODULES=yes ])
 
 # Check for enable-ipv6
 AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
-- 
2.25.1