Repository navigation
Improve and simplify configure.ac checks #89886
Copy link
Copy link
Closed
Labels
3.13only security fixesonly security fixesbuildThe build process and cross-buildThe build process and cross-buildtype-featureA feature request or enhancementA feature request or enhancement
Description
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee = 'https://github.com/tiran'
closed_at = None
created_at = <Date 2021-11-05.10:05:47.030>
labels = ['type-feature', 'build', '3.11']
title = 'Improve and simplify configure.ac checks'
updated_at = <Date 2022-01-12.04:40:54.295>
user = 'https://github.com/tiran'bugs.python.org fields:
activity = <Date 2022-01-12.04:40:54.295>
actor = 'zach.ware'
assignee = 'christian.heimes'
closed = False
closed_date = None
closer = None
components = ['Build']
creation = <Date 2021-11-05.10:05:47.030>
creator = 'christian.heimes'
dependencies = []
files = []
hgrepos = []
issue_num = 45723
keywords = ['patch']
message_count = 18.0
messages = ['405780', '405799', '405865', '405896', '405932', '405977', '405978', '406021', '406027', '406054', '406104', '406137', '406745', '407281', '408191', '409946', '409951', '409953']
nosy_count = 3.0
nosy_names = ['christian.heimes', 'erlendaasland', 'byllyfish']
pr_nums = ['29429', '29441', '29442', '29466', '29485', '29486', '29500', '29517', '29637', '29701', '29846', '30024', '30026', '30029', '30449']
priority = 'normal'
resolution = None
stage = 'patch review'
status = 'open'
superseder = None
type = 'enhancement'
url = 'https://bugs.python.org/issue45723'
versions = ['Python 3.11']Linked PRs
- bpo-45723: Add helper macros and more caching to configure.ac (GH-29429) #29429
- bpo-45723: Prepare support for autoconf 2.71 (GH-29441) #29441
- bpo-45723: Detect missing pkg-config (GH-29442) #29442
- bpo-45723: Add macro for disabling/enabling CC warnings (GH-29466) #29466
- bpo-45723: Improve and simplify more configure.ac checks (GH-29485) #29485
- bpo-45723: Remove obsolete AC_EXEEXT from configure.ac #29486
- bpo-45723: Remove dead code for obsolete
--with-dyldoption #29500 - bpo-45723: Add --with-pkg-config to configure (GH-29517) #29517
- bpo-45723: Add helpers for save/restore env (GH-29637) #29637
- bpo-45723: Use SAVE/RESTORE macros in configure.ac #29701
- bpo-45723: Sort the grand AC_CHECK_HEADERS check #29846
- bpo-45723: Normalise configure user communication (GH-30024) #30024
- bpo-89886: Clean up MACHDEP and _PYTHON_HOST_PLATFORM checks #30026
- gh-89886: Use AC_CHECK_TYPES iso. AC_CHECK_TYPE #30029
- bpo-45723: Fix detection of epoll #30449
- GH-89886: Bump autoconf to version 2.71 #104925
- gh-89886: Rely on HAVE_SYS_TIME_H #105058
- gh-89886: Properly quote Autoconf macro arguments #105062
- [3.12] gh-89886: Properly quote Autoconf macro arguments (#105062) #105118
- [3.12] gh-89886: Rely on HAVE_SYS_TIME_H (GH-105058) #105192
- [3.12] GH-89886: Bump to GNU Autoconf v2.71 (#104925) #105207
- gh-89886: Use Autoconf quadrigraphs where appropriate #105226
- [3.12] gh-89886: Use Autoconf quadrigraphs where appropriate (#105226) #105423
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
3.13only security fixesonly security fixesbuildThe build process and cross-buildThe build process and cross-buildtype-featureA feature request or enhancementA feature request or enhancement
Activity
tiran commentedon Nov 5, 2021
The autoconf-based build system has room for improvements. The configure.ac script can be simplified in several places by using AS and AC macros or by defining new custom macros.
For example we have a lot of blocks that look like this:
The block has an issue, too. It does not use AC_CACHE to cache the result. The entire block can be replaced by a custom macro that takes care of everything and implements correct caching:
We can also move several library and header checks from setup.py into configure.ac, e.g. check for soundcard.h or gdbm libs and headers.
tiran commentedon Nov 5, 2021
The first PR adds helper macros, AC_CACHE_CHECK() [1] and AS_VAR_IF() [2]. It also unified internal variables to use format "ac_cv_func_$funcname", "ac_cv_func_lib_$library_$funcname", or "ac_cv_header_$headername_h". "ac_cv" stands for autoconf cached value.
AC_CACHE_CHECK() replaces AC_MSG_CHECKING() and AC_MSG_RESULT(). The syntax is AC_CACHE_CHECK([text], [cache variable], [body]) where body is only excecuted when the cache variable is not set. The body has to set the cache variable to yes or no. Any output and AC_DEFINE must occur outside the body.
AS_VAR_IF() is a nicer way to write if test $variable = value; then; fi.
[1] https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Caching-Results.html#Caching-Results
[2] https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Polymorphic-Variables.html
tiran commentedon Nov 6, 2021
#73627 introduces forward compatibility issues with autoconf 2.71. I took the output of autoupdate and resolved all warnings.
tiran commentedon Nov 7, 2021
New changeset be3cd5c by Christian Heimes in branch 'main':
bpo-45723: Detect missing pkg-config (GH-29442)
be3cd5c
tiran commentedon Nov 8, 2021
New changeset 57c50c9 by Christian Heimes in branch 'main':
bpo-45723: Add helper macros and more caching to configure.ac (GH-29429)
57c50c9
tiran commentedon Nov 8, 2021
New changeset 9bd0cf5 by Erlend Egeberg Aasland in branch 'main':
bpo-45723: Add macro for disabling/enabling CC warnings (GH-29466)
9bd0cf5
tiran commentedon Nov 8, 2021
New changeset cbab997 by Christian Heimes in branch 'main':
bpo-45723: Prepare support for autoconf 2.71 (GH-29441)
cbab997
129 remaining items
gh-89886: Use Autoconf quadrigraphs where appropriate (#105226)
[3.12] pythongh-89886: Use Autoconf quadrigraphs where appropriate (p…
[3.12] gh-89886: Use Autoconf quadrigraphs where appropriate (#105226) (
erlend-aasland commentedon Jun 19, 2023
Anthony: we've discussed this in the core dev group, and we reached the conclusion that we'll not be adjusting the hard requirement in the .ac file. For deadsnakes, I would suggest to simply patch the .ac file before regenerating
configure. You should be fine with the following patch:erlend-aasland commentedon Jun 19, 2023
I'll close this issue for now; Christian and I made several improvements to the AC code back in 3.10 and 3.11. IMO, future improvements should get their own targeted issues.
(cc. @tiran, in case you're around)
asottile commentedon Jun 19, 2023
@erlend-aasland my fear is that 2.71+ syntax / features will get used -- what should I do then?
erlend-aasland commentedon Jun 19, 2023
I suggest sticking to the recommendations of the devguide:
Use the
269tag iso.271for GNU Autoconf 2.69. Note also, that the autoconf version we use for 3.11 and older is not the stock GNU Autoconf v2.69; it is a patched version. So, once again, you're better off by using the devguide recommendations (or just use theconfigurescript shipped with the source code) :)asottile commentedon Jun 19, 2023
I can't just do that unfortunately. that's outside my control as debian packages both must build from source and use the packages of the distribution
when 2.71+ syntax is used I'll basically have no choice but to drop the packages which is unfortunate but understandable
erlend-aasland commentedon Jun 19, 2023
Well, on the bright side, no "2.71+ syntax" did sneak in yet, so deadsnakes should be fine for now :)
Document Python build requirements