Gentoo Archives: gentoo-commits

From: Mike Frysinger <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/autotools-wrappers:main commit in: /
Date: Sun, 30 Jan 2022 09:24:26
Message-Id: 1643530842.a6595b6dee7e193cb008162880abcddc77e3ec5d.vapier@gentoo
1 commit: a6595b6dee7e193cb008162880abcddc77e3ec5d
2 Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jan 30 08:20:42 2022 +0000
4 Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
5 CommitDate: Sun Jan 30 08:20:42 2022 +0000
6 URL: https://gitweb.gentoo.org/proj/autotools-wrappers.git/commit/?id=a6595b6d
7
8 autoconf-wrapper: rework WANT_AUTOCONF parsing to match WANT_AUTOMAKE
9
10 Take the WANT_AUTOMAKE approach to parsing to find a matching version.
11 This simplifies the code a bit, and will allow us to do better dynamic
12 detection in a follow up.
13
14 Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org>
15
16 ac-wrapper.sh | 92 ++++++++++++++++++++++++++---------------------------------
17 1 file changed, 41 insertions(+), 51 deletions(-)
18
19 diff --git a/ac-wrapper.sh b/ac-wrapper.sh
20 index bd9a8d9..e37f5f3 100755
21 --- a/ac-wrapper.sh
22 +++ b/ac-wrapper.sh
23 @@ -81,55 +81,52 @@ fi
24 KNOWN_AUTOCONF="2.71 2.70 2.69"
25 vers="${KNOWN_AUTOCONF} 9999 $(printf '2.%s ' `seq 99 -1 59`) 2.13"
26
27 -binary=""
28 -for v in ${vers} ; do
29 - if [ -z "${binary}" ] && [ -x "${full_argv0}-${v}" ] ; then
30 - binary="${full_argv0}-${v}"
31 - break
32 - fi
33 -done
34 -if [ -z "${binary}" ] ; then
35 - err "Unable to locate any usuable version of autoconf.\n" \
36 - "\tI tried these versions: ${vers}\n" \
37 - "\tWith a base name of '${full_argv0}'."
38 -fi
39 +#
40 +# Helper to scan for a usable program based on version.
41 +#
42 +binary=
43 +all_vers=
44 +find_binary() {
45 + local v
46 + all_vers="${all_vers} $*" # For error messages.
47 + for v ; do
48 + if [ "${v}" = "2.1" ] ; then
49 + v="2.13"
50 + fi
51 + if [ -x "${full_argv0}-${v}" ] ; then
52 + binary="${full_argv0}-${v}"
53 + binary_ver=${v}
54 + return 0
55 + fi
56 + done
57 + return 1
58 +}
59
60 #
61 # Check the WANT_AUTOCONF setting. We accept a whitespace delimited
62 # list of autoconf versions.
63 #
64 -if [ -n "${WANT_AUTOCONF}" ] ; then
65 - for v in ${vers} x ; do
66 - if [ "${v}" = "x" ] ; then
67 - warn "warning: invalid WANT_AUTOCONF '${WANT_AUTOCONF}'; ignoring."
68 - unset WANT_AUTOCONF
69 - break
70 - fi
71 +find_latest() {
72 + find_binary ${vers}
73 +}
74 +for wx in ${WANT_AUTOCONF:-latest} ; do
75 + if [ "${wx}" = "latest" ] || [ "${wx}" = "2.5" ] ; then
76 + find_latest && break
77 + else
78 + find_binary ${wx} && break
79 + fi
80 +done
81
82 - for wx in ${WANT_AUTOCONF} ; do
83 - if [ "${wx}" = "latest" ] ; then
84 - wx="2.5"
85 - elif [ "${wx}" = "2.1" ] ; then
86 - wx="2.13"
87 - fi
88 - if [ -x "${full_argv0}-${wx}" ] ; then
89 - binary="${full_argv0}-${wx}"
90 - v="x"
91 - break
92 - elif [ "${wx}" = "2.5" ] ; then
93 - if [ "${v}" = "2.13" ] ; then
94 - # The "2.5" alias accepts every version except 2.13.
95 - continue
96 - fi
97 - if [ -x "${full_argv0}-${v}" ] ; then
98 - binary="${full_argv0}-${v}"
99 - v="x"
100 - break
101 - fi
102 - fi
103 - done
104 - [ "${v}" = "x" ] && break
105 - done
106 +if [ -z "${binary}" ] && [ -n "${WANT_AUTOCONF}" ] ; then
107 + warn "could not locate installed version for WANT_AUTOCONF='${WANT_AUTOCONF}'; ignoring"
108 + unset WANT_AUTOCONF
109 + find_latest
110 +fi
111 +
112 +if [ -z "${binary}" ] ; then
113 + err "Unable to locate any usuable version of autoconf.\n" \
114 + "\tI tried these versions:${all_vers}\n" \
115 + "\tWith a base name of '${full_argv0}'."
116 fi
117
118 #
119 @@ -187,14 +184,7 @@ fi
120 #
121 # for further consistency
122 #
123 -if [ -z "${WANT_AUTOCONF}" ] ; then
124 - for v in ${vers} ; do
125 - if [ "${binary}" = "${full_argv0}-${v}" ] ; then
126 - export WANT_AUTOCONF="${v}"
127 - break
128 - fi
129 - done
130 -fi
131 +export WANT_AUTOCONF="${binary_ver}"
132
133 #
134 # Now try to run the binary