[Python-checkins] bpo-45548: Make `Modules/Setup` easier to read (GH-29143)

brettcannon webhook-mailer at python.org
Thu Oct 21 20:07:34 EDT 2021


https://github.com/python/cpython/commit/01cf4fb9c1aa567484c2ffb1b11f9b3fe9949b05
commit: 01cf4fb9c1aa567484c2ffb1b11f9b3fe9949b05
branch: main
author: Brett Cannon <brett at python.org>
committer: brettcannon <brett at python.org>
date: 2021-10-21T17:07:26-07:00
summary:

bpo-45548: Make `Modules/Setup` easier to read (GH-29143)

files:
M Modules/Setup

diff --git a/Modules/Setup b/Modules/Setup
index 2e44ec24dacdc..a4440dfb6fc9d 100644
--- a/Modules/Setup
+++ b/Modules/Setup
@@ -62,9 +62,9 @@
 # *noconfig* has the same effect as *shared*.)
 #
 # NOTE: As a standard policy, as many modules as can be supported by a
-# platform should be present.  The distribution comes with all modules
-# enabled that are supported by most platforms and don't require you
-# to ftp sources from elsewhere.
+# platform should be listed below.  The distribution comes with all
+# modules enabled that are supported by most platforms and don't
+# require you to download sources from elsewhere.
 
 
 # Some special rules to define PYTHONPATH.
@@ -94,58 +94,40 @@ COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH)
 PYTHONPATH=$(COREPYTHONPATH)
 
 
-# The modules listed here can't be built as shared libraries for
-# various reasons; therefore they are listed here instead of in the
-# normal order.
-
-# This only contains the minimal set of modules required to run the
-# setup.py script in the root of the Python source tree.
-
-posix -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c # posix (UNIX) system calls
-errno errnomodule.c			# posix (UNIX) errno values
-pwd pwdmodule.c				# this is needed to find out the user's home dir
-					# if $HOME is not set
-_sre -DPy_BUILD_CORE_BUILTIN _sre.c	# Fredrik Lundh's new regular expressions
-_codecs _codecsmodule.c			# access to the builtin codecs and codec registry
-_weakref _weakref.c			# weak references
-_functools -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _functoolsmodule.c   # Tools for working with functions and callable objects
-_operator -DPy_BUILD_CORE_BUILTIN _operator.c	        	# operator.add() and similar goodies
-_collections _collectionsmodule.c	# Container types
-_abc -DPy_BUILD_CORE_BUILTIN _abc.c	# Abstract base classes
-itertools itertoolsmodule.c		# Functions creating iterators for efficient looping
-atexit atexitmodule.c			# Register functions to be run at interpreter-shutdown
-_signal -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal signalmodule.c
-_stat _stat.c				# stat.h interface
-time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c	# -lm # time operations and variables
-_thread -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _threadmodule.c	# low-level threading interface
-
-# access to ISO C locale support
-_locale -DPy_BUILD_CORE_BUILTIN _localemodule.c  # -lintl
+# ---
+# Built-in modules required to get a functioning interpreter;
+# cannot be built as shared!
 
-# Standard I/O baseline
+_collections _collectionsmodule.c
+_abc -DPy_BUILD_CORE_BUILTIN _abc.c
+_codecs _codecsmodule.c
+_functools -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _functoolsmodule.c
 _io -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io _io/_iomodule.c _io/iobase.c _io/fileio.c _io/bytesio.c _io/bufferedio.c _io/textio.c _io/stringio.c
-
-# faulthandler module
+_locale -DPy_BUILD_CORE_BUILTIN _localemodule.c  # -lintl
+_operator -DPy_BUILD_CORE_BUILTIN _operator.c
+_signal -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal signalmodule.c
+_sre -DPy_BUILD_CORE_BUILTIN _sre.c
+_stat _stat.c
+_symtable symtablemodule.c  # setup.py can't track the .h file that _symtable depends on.
+_thread -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _threadmodule.c
+_tracemalloc _tracemalloc.c  # See bpo-35053 as to why this is built in.
+_weakref _weakref.c
+atexit atexitmodule.c
+errno errnomodule.c
 faulthandler faulthandler.c
+itertools itertoolsmodule.c
+posix -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c
+pwd pwdmodule.c
+time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c
 
-# debug tool to trace memory blocks allocated by Python
-#
-# bpo-35053: The module must be builtin since _Py_NewReference()
-# can call _PyTraceMalloc_NewReference().
-_tracemalloc _tracemalloc.c
 
+# ---
 # The rest of the modules listed in this file are all commented out by
 # default.  Usually they can be detected and built as dynamically
-# loaded modules by the new setup.py script added in Python 2.1.  If
-# you're on a platform that doesn't support dynamic loading, want to
-# compile modules statically into the Python binary, or need to
-# specify some odd set of compiler switches, you can uncomment the
-# appropriate lines below.
-
-# ======================================================================
-
-# The Python symtable module depends on .h files that setup.py doesn't track
-_symtable symtablemodule.c
+# loaded modules by setup.py.  If you're on a platform that doesn't
+# support dynamic loading, want to compile modules statically into the
+# Python binary, or need to specify some odd set of compiler switches,
+# you can uncomment the appropriate lines below.
 
 # Uncommenting the following line tells makesetup that all following
 # modules are to be built as shared libraries (see above for more
@@ -153,67 +135,91 @@ _symtable symtablemodule.c
 
 #*shared*
 
-# GNU readline.  Unlike previous Python incarnations, GNU readline is
-# now incorporated in an optional module, configured in the Setup file
-# instead of by a configure script switch.  You may have to insert a
-# -L option pointing to the directory where libreadline.* lives,
-# and you may have to change -ltermcap to -ltermlib or perhaps remove
-# it, depending on your system -- see the GNU readline instructions.
-# It's okay for this to be a shared library, too.
-
-#readline readline.c -lreadline -ltermcap
-
-
 # Modules that should always be present (non UNIX dependent):
 
-#array -DPy_BUILD_CORE_MODULE arraymodule.c	# array objects
-#cmath cmathmodule.c _math.c -DPy_BUILD_CORE_MODULE # -lm # complex math library functions
-#math mathmodule.c _math.c -DPy_BUILD_CORE_MODULE # -lm # math library functions, e.g. sin()
-#_contextvars _contextvarsmodule.c  # Context Variables
-#_struct -DPy_BUILD_CORE_MODULE _struct.c	# binary structure packing/unpacking
-#_testcapi _testcapimodule.c    # Python C API test module; CANNOT be statically compiled!
-#_testinternalcapi _testinternalcapi.c -I$(srcdir)/Include/internal -DPy_BUILD_CORE_MODULE  # Python internal C API test module
-#_random _randommodule.c -DPy_BUILD_CORE_MODULE	# Random number generator
-#_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c	# elementtree accelerator
-#_pickle -DPy_BUILD_CORE_MODULE _pickle.c	# pickle accelerator
-#_datetime _datetimemodule.c	# datetime accelerator
-#_zoneinfo _zoneinfo.c -DPy_BUILD_CORE_MODULE	# zoneinfo accelerator
-#_bisect _bisectmodule.c	# Bisection algorithms
-#_heapq _heapqmodule.c -DPy_BUILD_CORE_MODULE	# Heap queue algorithm
-#_asyncio _asynciomodule.c  # Fast asyncio Future
-#_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c	# _json speedups
-#_statistics _statisticsmodule.c # statistics accelerator
-#_typing _typingmodule.c # typing accelerator
-#_lsprof _lsprof.c rotatingtree.c # cProfile accelerators
+#_asyncio _asynciomodule.c
+#_bisect _bisectmodule.c
+#_blake2 -DPy_BUILD_CORE_BUILTIN _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
+#_codecs_cn cjkcodecs/_codecs_cn.c
+#_codecs_hk cjkcodecs/_codecs_hk.c
+#_codecs_iso2022 cjkcodecs/_codecs_iso2022.c
+#_codecs_jp cjkcodecs/_codecs_jp.c
+#_codecs_kr cjkcodecs/_codecs_kr.c
+#_codecs_tw cjkcodecs/_codecs_tw.c
+#_contextvars _contextvarsmodule.c
+#_csv _csv.c
+#_datetime _datetimemodule.c
+#_elementtree -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI -I$(srcdir)/Modules/expat _elementtree.c
+#_heapq -DPy_BUILD_CORE_MODULE _heapqmodule.c
+#_json -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _json.c
+#_lsprof _lsprof.c rotatingtree.c
+#_md5 -DPy_BUILD_CORE_BUILTIN md5module.c
+#_multibytecodec cjkcodecs/multibytecodec.c
 #_opcode _opcode.c
-#_queue _queuemodule.c -DPy_BUILD_CORE_MODULE
-
-#unicodedata unicodedata.c -DPy_BUILD_CORE_BUILTIN   # static Unicode character database
-
+#_pickle -DPy_BUILD_CORE_MODULE _pickle.c
+#_posixsubprocess -DPy_BUILD_CORE_BUILTIN _posixsubprocess.c
+#_queue -DPy_BUILD_CORE_MODULE _queuemodule.c
+#_random -DPy_BUILD_CORE_MODULE _randommodule.c
+#_sha1 -DPy_BUILD_CORE_BUILTIN sha1module.c
+#_sha256 -DPy_BUILD_CORE_BUILTIN sha256module.c
+#_sha512 -DPy_BUILD_CORE_BUILTIN sha512module.c
+#_sha3 -DPy_BUILD_CORE_BUILTIN _sha3/sha3module.c
+#_statistics _statisticsmodule.c
+#_struct -DPy_BUILD_CORE_MODULE _struct.c
+#_typing _typingmodule.c
+#_zoneinfo -DPy_BUILD_CORE_MODULE _zoneinfo.c
+#array -DPy_BUILD_CORE_MODULE arraymodule.c
+#audioop audioop.c
+#binascii -DPy_BUILD_CORE_MODULE binascii.c
+#cmath -DPy_BUILD_CORE_MODULE cmathmodule.c _math.c  # -lm
+#math -DPy_BUILD_CORE_MODULE mathmodule.c _math.c  # -lm
+#pyexpat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI -I$(srcdir)/Modules/expat  expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c
+#unicodedata  -DPy_BUILD_CORE_BUILTIN unicodedata.c
 
 # Modules with some UNIX dependencies -- on by default:
 # (If you have a really backward UNIX, select and socket may not be
 # supported...)
 
-#fcntl fcntlmodule.c	# fcntl(2) and ioctl(2)
-#spwd spwdmodule.c		# spwd(3)
-#grp grpmodule.c		# grp(3)
-#select selectmodule.c	# select(2); not on ancient System V
+#_socket socketmodule.c  # socket(2)
+#fcntl fcntlmodule.c  # fcntl(2) and ioctl(2)
+#grp grpmodule.c  # grp(3)
+#mmap mmapmodule.c  # Also works on win32.
 #ossaudiodev ossaudiodev.c
+#select selectmodule.c  # select(2); not on ancient System V
+#spwd spwdmodule.c  # spwd(3)
+#syslog syslogmodule.c
 
-# Memory-mapped files (also works on Win32).
-#mmap mmapmodule.c
+# Some more UNIX dependent modules -- off by default, since these
+# are not supported by all UNIX systems:
 
-# CSV file helper
-#_csv _csv.c
+#_crypt _cryptmodule.c # -lcrypt	# crypt(3); breaks many builds.
+#nis nismodule.c -lnsl	# Sun yellow pages -- not everywhere
+#termios termios.c	# Steen Lumholt's termios module
+#resource resource.c	# Jeremy Hylton's rlimit interface
+
+# Modules that require external libraries.
+
+#_bz2 _bz2module.c -lbz2
+#_dbm _dbmmodule.c 	# -lndbm # dbm(3)
+#_gdbm -I/usr/local/include -L/usr/local/lib -lgdbm _gdbmmodule.c
+#_lzma _lzmamodule.c -llzma
+#zlib -I$(prefix)/include -L$(exec_prefix)/lib -lz zlibmodule.c
+
+# GNU readline.  Unlike previous Python incarnations, GNU readline is
+# now incorporated in an optional module, configured in the Setup file
+# instead of by a configure script switch.  You may have to insert a
+# -L option pointing to the directory where libreadline.* lives,
+# and you may have to change -ltermcap to -ltermlib or perhaps remove
+# it, depending on your system -- see the GNU readline instructions.
+# It's okay for this to be a shared library, too.
+
+#readline readline.c -lreadline -ltermcap
 
-# Socket module helper for socket(2)
-#_socket socketmodule.c
+# Set OpenSSL when not using the system copy found by ./configure.
+#OPENSSL=/path/to/openssl/directory
 
-# Socket module helper for SSL support; you must comment out the other
-# socket line above, and edit the OPENSSL variable:
-# OPENSSL=/path/to/openssl/directory
-# _ssl _ssl.c \
+# To dynamically link OpenSSL:
+#_ssl _ssl.c \
 #     -I$(OPENSSL)/include -L$(OPENSSL)/lib \
 #     -lssl -lcrypto \
 #     -DPy_BUILD_CORE_BUILTIN
@@ -223,7 +229,7 @@ _symtable symtablemodule.c
 #     -DPy_BUILD_CORE_BUILTIN
 
 # To statically link OpenSSL:
-# _ssl _ssl.c \
+#_ssl _ssl.c \
 #     -I$(OPENSSL)/include -L$(OPENSSL)/lib \
 #     -l:libssl.a -Wl,--exclude-libs,libssl.a \
 #     -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a \
@@ -233,52 +239,6 @@ _symtable symtablemodule.c
 #     -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a \
 #     -DPy_BUILD_CORE_BUILTIN
 
-# The crypt module is now disabled by default because it breaks builds
-# on many systems (where -lcrypt is needed), e.g. Linux (I believe).
-
-#_crypt _cryptmodule.c # -lcrypt	# crypt(3); needs -lcrypt on some systems
-
-
-# Some more UNIX dependent modules -- off by default, since these
-# are not supported by all UNIX systems:
-
-#nis nismodule.c -lnsl	# Sun yellow pages -- not everywhere
-#termios termios.c	# Steen Lumholt's termios module
-#resource resource.c	# Jeremy Hylton's rlimit interface
-
-#_posixsubprocess  -DPy_BUILD_CORE_BUILTIN _posixsubprocess.c  # POSIX subprocess module helper
-
-# Multimedia modules -- off by default.
-# These don't work for 64-bit platforms!!!
-# #993173 says audioop works on 64-bit platforms, though.
-# These represent audio samples or images as strings:
-
-#audioop audioop.c	# Operations on audio samples
-
-
-# Note that the _md5 and _sha modules are normally only built if the
-# system does not have the OpenSSL libs containing an optimized version.
-
-# The _md5 module implements the RSA Data Security, Inc. MD5
-# Message-Digest Algorithm, described in RFC 1321.
-
-#_md5 md5module.c -DPy_BUILD_CORE_BUILTIN
-
-
-# The _sha module implements the SHA checksum algorithms.
-# (NIST's Secure Hash Algorithms.)
-#_sha1 sha1module.c -DPy_BUILD_CORE_BUILTIN
-#_sha256 sha256module.c -DPy_BUILD_CORE_BUILTIN
-#_sha512 sha512module.c -DPy_BUILD_CORE_BUILTIN
-#_sha3 _sha3/sha3module.c -DPy_BUILD_CORE_BUILTIN
-
-# _blake module
-#_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c -DPy_BUILD_CORE_BUILTIN
-
-# Compression
-#_bz2 _bz2module.c -lbz2
-#_lzma _lzmamodule.c -llzma
-
 # The _tkinter module.
 #
 # The command for _tkinter is long and site specific.  Please
@@ -322,75 +282,34 @@ _symtable symtablemodule.c
 # *** Always uncomment this; X11 libraries to link with:
 #	-lX11
 
-# Lance Ellinghaus's syslog module
-#syslog syslogmodule.c		# syslog daemon interface
-
-
 # Curses support, requiring the System V version of curses, often
 # provided by the ncurses library.  e.g. on Linux, link with -lncurses
 # instead of -lcurses).
 
-#_curses _cursesmodule.c -lcurses -ltermcap -DPy_BUILD_CORE_MODULE
-# Wrapper for the panel library that's part of ncurses and SYSV curses.
-#_curses_panel _curses_panel.c -lpanel -lncurses
-
-
-# Modules that provide persistent dictionary-like semantics.  You will
-# probably want to arrange for at least one of them to be available on
-# your machine, though none are defined by default because of library
-# dependencies.  The Python module dbm/__init__.py provides an
-# implementation independent wrapper for these; dbm/dumb.py provides
-# similar functionality (but slower of course) implemented in Python.
-
-#_dbm _dbmmodule.c 	# dbm(3) may require -lndbm or similar
-
-# Anthony Baxter's gdbm module.  GNU dbm(3) will require -lgdbm:
-
-#_gdbm _gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm
-
-
-# Helper module for various ascii-encoders
-#binascii binascii.c -DPy_BUILD_CORE_MODULE
-
-# Andrew Kuchling's zlib module.
-# This require zlib 1.1.3 (or later).
-# See http://www.gzip.org/zlib/
-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
-
-# Interface to the Expat XML parser
-# More information on Expat can be found at www.libexpat.org.
-#
-#pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI
-
-# Hye-Shik Chang's CJKCodecs
+#_curses -DPy_BUILD_CORE_MODULE -lcurses -ltermcap _cursesmodule.c
 
-# multibytecodec is required for all the other CJK codec modules
-#_multibytecodec cjkcodecs/multibytecodec.c
-
-#_codecs_cn cjkcodecs/_codecs_cn.c
-#_codecs_hk cjkcodecs/_codecs_hk.c
-#_codecs_iso2022 cjkcodecs/_codecs_iso2022.c
-#_codecs_jp cjkcodecs/_codecs_jp.c
-#_codecs_kr cjkcodecs/_codecs_kr.c
-#_codecs_tw cjkcodecs/_codecs_tw.c
-
-# Example -- included for reference only:
-# xx xxmodule.c
+# Wrapper for the panel library that's part of ncurses and SYSV curses.
+#_curses_panel -lpanel -lncurses _curses_panel.c
 
-# Another example -- the 'xxsubtype' module shows C-level subtyping in action
-xxsubtype xxsubtype.c
+# Examples
 
-# Limited API examples
+#xx xxmodule.c
 #xxlimited xxlimited.c
 #xxlimited_35 xxlimited_35.c
+xxsubtype xxsubtype.c  # Required for the test suite to pass!
+
+# Testing
 
-# For testing
 #_xxsubinterpreters _xxsubinterpretersmodule.c
 #_xxtestfuzz _xxtestfuzz/_xxtestfuzz.c _xxtestfuzz/fuzzer.c
 #_testbuffer _testbuffer.c
+#_testcapi _testcapimodule.c  # CANNOT be statically compiled!
 #_testimportmultiple _testimportmultiple.c
+#_testinternalcapi -DPy_BUILD_CORE_MODULE -I$(srcdir)/Include/internal _testinternalcapi.c
 #_testmultiphase _testmultiphase.c
 
+
+# ---
 # Uncommenting the following line tells makesetup that all following modules
 # are not built (see above for more detail).
 #



More information about the Python-checkins mailing list