@@ -477,31 +477,49 @@ Regenerate ``configure``
477
477
478
478
If a change is made to Python which relies on some POSIX system-specific
479
479
functionality (such as using a new system call), it is necessary to update the
480
- ``configure `` script to test for availability of the functionality.
480
+ :cpy-file: `configure ` script to test for availability of the functionality.
481
+ Python's :file: `configure ` script is generated from :cpy-file: `configure.ac `
482
+ using `GNU Autoconf <https://www.gnu.org/software/autoconf/ >`_.
481
483
482
- Python's `` configure `` script is generated from `` configure.ac `` using Autoconf.
483
- Instead of editing `` configure ``, edit `` configure.ac `` and then run
484
- `` autoreconf `` to regenerate `` configure `` and a number of other files (such as
485
- `` pyconfig.h ``) .
484
+ After editing :file: ` configure.ac `, run `` make regen- configure `` to generate
485
+ :file: ` configure `, :cpy-file: ` pyconfig.h.in `, and :cpy-file: ` aclocal.m4 `.
486
+ When submitting a pull request with changes made to :file: ` configure.ac `,
487
+ make sure you also commit the changes in the generated files .
486
488
487
- When submitting a patch with changes made to ``configure.ac ``, you should also
488
- include the generated files.
489
+ The recommended and by far the easiest way to regenerate :file: `configure ` is::
489
490
490
- Note that running ``autoreconf `` is not the same as running ``autoconf ``. For
491
- example, ``autoconf `` by itself will not regenerate ``pyconfig.h.in ``.
492
- ``autoreconf `` runs ``autoconf `` and a number of other tools repeatedly as is
493
- appropriate.
491
+ $ make regen-configure
494
492
495
- Python's ``configure.ac `` script typically requires a specific version of
496
- Autoconf. At the moment, this reads: ``AC_PREREQ(2.69) ``. It also requires
497
- to have the ``autoconf-archive `` and ``pkg-config `` utilities installed in
498
- the system and the ``pkg.m4 `` macro file located in the appropriate ``alocal ``
499
- location. You can easily check if this is correctly configured by running::
493
+ If you are regenerating :file: `configure ` in a clean repo,
494
+ run one of the following containers instead::
495
+
496
+ $ podman run --rm --pull=always -v $(pwd):/src:Z quay.io/tiran/cpython_autoconf:271
497
+
498
+ ::
499
+
500
+ $ docker run --rm --pull=always -v $(pwd):/src quay.io/tiran/cpython_autoconf:271
501
+
502
+ Notice that the images are tagged with ``271 ``.
503
+ Python's :file: `configure.ac ` script requires a specific version of
504
+ GNU Autoconf.
505
+ For Python 3.12 and newer, GNU Autoconf v2.71 is required.
506
+ For Python 3.11 and earlier, GNU Autoconf v2.69 is required.
507
+ For GNU Autoconf v2.69, change the ``:271 `` tag to ``:269 ``.
508
+
509
+ If you cannot (or don't want to) use the ``cpython_autoconf `` containers,
510
+ install the :program: `autoconf-archive ` and :program: `pkg-config ` utilities,
511
+ and make sure the :file: `pkg.m4 ` macro file located in the appropriate
512
+ :program: `aclocal ` location::
500
513
501
514
$ ls $(aclocal --print-ac-dir) | grep pkg.m4
502
515
503
- If the system copy of Autoconf does not match this version, you will need to
504
- install your own copy of Autoconf.
516
+ .. note ::
517
+
518
+ Running :program: `autoreconf ` is not the same as running :program: `autoconf `.
519
+ For example, running :program: `autoconf ` by itself will not regenerate
520
+ :file: `pyconfig.h.in `.
521
+ :program: `autoreconf ` runs :program: `autoconf ` and a number of other tools
522
+ repeatedly as appropriate.
505
523
506
524
.. _build_troubleshooting :
507
525
0 commit comments