GeezerVison is showing github.com — Improve and simplify configure.ac checks · Issue #89886 · python/cpython
Improve and simplify configure.ac checks #89886Description
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
Activitytiran commented on 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:
AC_MSG_CHECKING(for chroot)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void x=chroot]])],
[AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)
])
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:
PY_CHECK_FUNC([chroot], [#include <unistd.h>])
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 commented on Nov 5, 2021 tiran commented on Nov 6, 2021 #73627 introduces forward compatibility issues with autoconf 2.71. I took the output of autoupdate and resolved all warnings. tiran commented on Nov 7, 2021 tiran commented on Nov 8, 2021 tiran commented on Nov 8, 2021 tiran commented on Nov 8, 2021 erlend-aasland commented on Jun 19, 2023
autoconf bumping to 2.71+ is a little annoying because LTS ubuntu 20.04 only ships with 2.69
should this have landed in 3.12 which is already in beta freeze? I'm building this for deadsnakes and it'd kind of suck to not ship 3.12 for ubuntu 20.04 especially when 3.12b1 built cleanly
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:
diff --git a/configure.ac b/configure.ac
index a24cd68973..793cd859ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,7 +15,7 @@ dnl
# Set VERSION so we only need to edit in one place (i.e., here)
m4_define([PYTHON_VERSION], [3.13])
-AC_PREREQ([2.71])
+AC_PREREQ([2.69])
AC_INIT([python],[PYTHON_VERSION],[https://github.com/python/cpython/issues/])
Reacted by C.A.M. Gerlach erlend-aasland commented on 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 commented on Jun 19, 2023 @erlend-aasland my fear is that 2.71+ syntax / features will get used -- what should I do then? erlend-aasland commented on Jun 19, 2023
@erlend-aasland my fear is that 2.71+ syntax / features will get used -- what should I do then?
I suggest sticking to the recommendations of the devguide:
$ podman run --rm --pull=always -v $(pwd):/src:Z quay.io/tiran/cpython_autoconf:271
# ... or:
$ docker run --rm --pull=always -v $(pwd):/src quay.io/tiran/cpython_autoconf:271
Use the 269 tag iso. 271 for 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 the configure script shipped with the source code) :) asottile commented on 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 commented on Jun 19, 2023 Well, on the bright side, no "2.71+ syntax" did sneak in yet, so deadsnakes should be fine for now :)
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|