From 277ce3060becc120f1c877346562bd6880f4be71 Mon Sep 17 00:00:00 2001 From: pxinwr Date: Wed, 30 Dec 2020 20:50:39 +0800 Subject: [PATCH] bpo-27640: Add --disable-test-modules configure option (GH-23886) Added --disable-test-modules option to the configure script: don't build nor install test modules. Patch by Xavier de Gaye, Thomas Petazzoni and Peixing Xin. Co-Authored-By: Thomas Petazzoni Co-Authored-By: Xavier de Gaye --- Doc/whatsnew/3.10.rst | 4 + Makefile.pre.in | 111 ++++++++++++------ .../2020-12-22-17-57-04.bpo-27640.j3a8r0.rst | 3 + configure | 24 +++- configure.ac | 15 ++- setup.py | 2 +- 6 files changed, 117 insertions(+), 42 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2020-12-22-17-57-04.bpo-27640.j3a8r0.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index b5fb1e9a629..db34b33b84a 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -558,6 +558,10 @@ Build Changes * The :mod:`atexit` module must now always be built as a built-in module. (Contributed by Victor Stinner in :issue:`42639`.) +* Added ``--disable-test-modules`` option to the ``configure`` script: + don't build nor install test modules. + (Contributed by Xavier de Gaye, Thomas Petazzoni and Peixing Xin in :issue:`27640`.) + C API Changes ============= diff --git a/Makefile.pre.in b/Makefile.pre.in index 5c93b0b3fa9..d8b9e8498d5 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1366,18 +1366,54 @@ 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 \ - test/audiodata \ - test/capath test/data \ - test/cjkencodings test/decimaltestdata \ - test/xmltestdata test/xmltestdata/c14n-20 \ - test/dtracedata \ - test/eintrdata \ - test/imghdrdata \ - test/libregrtest \ - test/subprocessdata test/sndhdrdata test/support \ - test/tracedmodules test/encoded_modules \ +LIBSUBDIRS= asyncio \ + collections \ + concurrent concurrent/futures \ + csv \ + ctypes ctypes/macholib \ + curses \ + dbm \ + distutils distutils/command \ + email email/mime \ + encodings \ + ensurepip ensurepip/_bundled \ + html \ + http \ + idlelib idlelib/Icons \ + importlib importlib/metadata \ + json \ + lib2to3 lib2to3/fixes lib2to3/pgen2 \ + logging \ + multiprocessing multiprocessing/dummy \ + pydoc_data \ + site-packages \ + sqlite3 \ + tkinter \ + turtledemo \ + unittest \ + urllib \ + venv venv/scripts venv/scripts/common venv/scripts/posix \ + wsgiref \ + $(XMLLIBSUBDIRS) \ + xmlrpc \ + zoneinfo +TESTSUBDIRS= ctypes/test \ + distutils/tests \ + idlelib/idle_test \ + lib2to3/tests \ + lib2to3/tests/data \ + lib2to3/tests/data/fixers \ + lib2to3/tests/data/fixers/myfixes \ + sqlite3/test \ + test test/audiodata \ + test/capath test/cjkencodings \ + test/data test/decimaltestdata \ + test/dtracedata test/eintrdata \ + test/encoded_modules test/imghdrdata \ + test/libregrtest test/sndhdrdata \ + test/subprocessdata test/support \ + test/test_asyncio \ + test/test_email test/test_email/data \ test/test_import \ test/test_import/data \ test/test_import/data/circular_imports \ @@ -1385,8 +1421,6 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ test/test_import/data/package \ test/test_import/data/package2 \ test/test_import/data/unwritable \ - importlib \ - importlib/metadata \ test/test_importlib \ test/test_importlib/builtin \ test/test_importlib/data \ @@ -1425,30 +1459,19 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ test/test_importlib/source \ test/test_importlib/zipdata01 \ 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 \ - 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) \ + test/test_json \ test/test_peg_generator \ - 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 + test/test_tools \ + test/test_warnings test/test_warnings/data \ + test/test_zoneinfo test/test_zoneinfo/data \ + test/tracedmodules \ + test/xmltestdata test/xmltestdata/c14n-20 \ + test/ziptestdata \ + tkinter/test tkinter/test/test_tkinter \ + tkinter/test/test_ttk \ + unittest/test unittest/test/testmock + +TEST_MODULES=@TEST_MODULES@ libinstall: build_all $(srcdir)/Modules/xxmodule.c @for i in $(SCRIPTDIR) $(LIBDEST); \ do \ @@ -1458,7 +1481,12 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c else true; \ fi; \ done - @for d in $(LIBSUBDIRS); \ + @if test "$(TEST_MODULES)" = yes; then \ + subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \ + else \ + subdirs="$(LIBSUBDIRS)"; \ + fi; \ + for d in $$subdirs; \ do \ a=$(srcdir)/Lib/$$d; \ if test ! -d $$a; then continue; else true; fi; \ @@ -1479,7 +1507,12 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c echo $(INSTALL_DATA) $$i $(LIBDEST); \ fi; \ done - @for d in $(LIBSUBDIRS); \ + @if test "$(TEST_MODULES)" = yes; then \ + subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \ + else \ + subdirs="$(LIBSUBDIRS)"; \ + fi; \ + for d in $$subdirs; \ do \ a=$(srcdir)/Lib/$$d; \ if test ! -d $$a; then continue; else true; fi; \ diff --git a/Misc/NEWS.d/next/Build/2020-12-22-17-57-04.bpo-27640.j3a8r0.rst b/Misc/NEWS.d/next/Build/2020-12-22-17-57-04.bpo-27640.j3a8r0.rst new file mode 100644 index 00000000000..142590d05ef --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-22-17-57-04.bpo-27640.j3a8r0.rst @@ -0,0 +1,3 @@ +Added ``--disable-test-modules`` option to the ``configure`` script: +don't build nor install test modules. +Patch by Xavier de Gaye, Thomas Petazzoni and Peixing Xin. diff --git a/configure b/configure index 530c04a0ede..5691c27cf66 100755 --- a/configure +++ b/configure @@ -623,6 +623,7 @@ ac_includes_default="\ #endif" ac_subst_vars='LTLIBOBJS +TEST_MODULES OPENSSL_LDFLAGS OPENSSL_LIBS OPENSSL_INCLUDES @@ -852,6 +853,7 @@ with_openssl with_ssl_default_suites with_builtin_hashlib_hashes with_experimental_isolated_subinterpreters +enable_test_modules ' ac_precious_vars='build_alias host_alias @@ -1503,6 +1505,7 @@ Optional Features: --enable-big-digits[=15|30] use big digits (30 or 15 bits) for Python longs (default is system-dependent)] + --disable-test-modules don't build nor install test modules Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -17725,6 +17728,26 @@ $as_echo "no" >&6; } fi +# Check whether to disable test modules. Once set, setup.py will not build +# test extension modules and "make install" will not install test suites. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --disable-test-modules" >&5 +$as_echo_n "checking for --disable-test-modules... " >&6; } +# Check whether --enable-test-modules was given. +if test "${enable_test_modules+set}" = set; then : + enableval=$enable_test_modules; +fi + +if test "$enable_test_modules" = no; then + TEST_MODULES=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + TEST_MODULES=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + # generate output files ac_config_files="$ac_config_files Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh" @@ -19051,4 +19074,3 @@ if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then echo "" >&6 echo "" >&6 fi - diff --git a/configure.ac b/configure.ac index 39eadfedfba..990d6bfdd81 100644 --- a/configure.ac +++ b/configure.ac @@ -5834,6 +5834,20 @@ else fi], [AC_MSG_RESULT(no)]) +# Check whether to disable test modules. Once set, setup.py will not build +# test extension modules and "make install" will not install test suites. +AC_MSG_CHECKING(for --disable-test-modules) +AC_ARG_ENABLE(test-modules, + AS_HELP_STRING([--disable-test-modules], [don't build nor install test modules])) +if test "$enable_test_modules" = no; then + TEST_MODULES=no + AC_MSG_RESULT(yes) +else + TEST_MODULES=yes + AC_MSG_RESULT(no) +fi +AC_SUBST(TEST_MODULES) + # generate output files AC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh) @@ -5860,4 +5874,3 @@ if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then echo "" >&AS_MESSAGE_FD echo "" >&AS_MESSAGE_FD fi - diff --git a/setup.py b/setup.py index e055e44b0f1..8598d2aa5db 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ from distutils.spawn import find_executable # Compile extensions used to test Python? -TEST_EXTENSIONS = True +TEST_EXTENSIONS = (sysconfig.get_config_var('TEST_MODULES') == 'yes') # This global variable is used to hold the list of modules to be disabled. DISABLED_MODULE_LIST = []