summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/autoconf
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2023-07-27 20:47:56 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-07-30 07:54:44 +0100
commitbaa99b3201f5d9cac5cacedd1eb99ce7aa07b844 (patch)
treef07aad4beaf2c6ff3be3a7312abf059be95d705c /meta/recipes-devtools/autoconf
parentf35b5f5d20f99dca06f579bccaceb5d7c2f9cf3f (diff)
downloadpoky-baa99b3201f5d9cac5cacedd1eb99ce7aa07b844.tar.gz
autoconf: Backport upstreamed patches
These patches improve the Y2038 support on top of 2.72c release (From OE-Core rev: ffff6eb96f0c500cf4386e842b73fc11156b469a) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/autoconf')
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0001-mention-prototypes-more-prominently-in-NEWS.patch36
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0002-build-run-make-fetch-which-updated-these.patch123
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0003-NEWS-Tighten-up-wording.patch29
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch82
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0006-Fix-timing-bug-on-high-speed-builds.patch75
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0007-Support-underquoted-callers-better.patch57
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0008-New-script-for-building-inside-Guix-containers.patch54
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch82
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch77
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch180
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch328
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch84
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch116
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0015-Support-circa-early-2022-Gnulib.patch32
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0016-Improve-year2038-largefile-option-processing.patch121
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch30
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0018-Document-limitation-of-BusyBox-tr.patch45
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch48
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0020-Tone-down-year-2038-changes.patch405
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch98
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0022-Fix-port-of-AC_FUNC_MMAP.patch91
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch38
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0024-Improve-AC_FUNC_MMAP-comments.patch29
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch62
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0026-Modernize-INSTALL.patch270
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0027-doc-fix-broken-cross-refs.patch58
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch224
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/backports/0029-Shorten-and-improve-INSTALL.patch366
-rw-r--r--meta/recipes-devtools/autoconf/autoconf_2.72c.bb34
29 files changed, 3273 insertions, 1 deletions
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0001-mention-prototypes-more-prominently-in-NEWS.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0001-mention-prototypes-more-prominently-in-NEWS.patch
new file mode 100644
index 0000000000..3faf6f0a81
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0001-mention-prototypes-more-prominently-in-NEWS.patch
@@ -0,0 +1,36 @@
1From 5ffc09fca39de051537fbebd7c6c33d5255a520f Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Mon, 27 Mar 2023 18:10:36 -0700
4Subject: [PATCH 01/29] mention prototypes more prominently in NEWS
5
6* NEWS: Mention the function prototype issue early.
7(From a suggestion by Zack Weinberg.)
8
9Upstream-Status: Backport
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 NEWS | 8 ++++++++
13 1 file changed, 8 insertions(+)
14
15diff --git a/NEWS b/NEWS
16index cf01ee210..d64648c6f 100644
17--- a/NEWS
18+++ b/NEWS
19@@ -4,6 +4,14 @@ GNU Autoconf NEWS - User visible changes.
20
21 ** Backward incompatibilities
22
23+*** AC_CHECK_FUNC and similar macros now use function prototypes.
24+ AC_CHECK_FUNC and and similar macros now use C declarations with
25+ function prototypes, a feature introduced in C89. The new approach
26+ should work better with C23, which removed the non-prototyped K&R
27+ style that AC_CHECK_FUNC previously used. However, this change
28+ means Autoconf no longer supports pre-1989 C compilers, as they do
29+ not support function prototypes.
30+
31 *** Autoconf now requires perl 5.10 (2007) or later.
32 Generated 'configure' scripts continue to run without perl.
33
34--
352.41.0
36
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0002-build-run-make-fetch-which-updated-these.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0002-build-run-make-fetch-which-updated-these.patch
new file mode 100644
index 0000000000..35f324c4ae
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0002-build-run-make-fetch-which-updated-these.patch
@@ -0,0 +1,123 @@
1From e2220ed33e69d8bc6504e3f6279894afe33a99a5 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Wed, 29 Mar 2023 12:59:09 -0700
4Subject: [PATCH 02/29] build: run "make fetch", which updated these:
5
6* build-aux/texinfo.tex: Update from texinfo.
7* lib/Autom4te/FileUtils.pm: Update from automake.
8
9Upstream-Status: Backport
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 build-aux/texinfo.tex | 50 +++++++++++++++++++++------------------
13 lib/Autom4te/FileUtils.pm | 5 +++-
14 2 files changed, 31 insertions(+), 24 deletions(-)
15
16diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
17index d25161109..55a002d27 100644
18--- a/build-aux/texinfo.tex
19+++ b/build-aux/texinfo.tex
20@@ -3,7 +3,7 @@
21 % Load plain if necessary, i.e., if running under initex.
22 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
23 %
24-\def\texinfoversion{2023-03-21.06}
25+\def\texinfoversion{2023-03-27.21}
26 %
27 % Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
28 %
29@@ -1102,27 +1102,33 @@ where each line of input produces a line of output.}
30
31 % Output page labels information.
32 % See PDF reference v.1.7 p.594, section 8.3.1.
33+% Page label ranges must be increasing.
34 \ifpdf
35 \def\pagelabels{%
36 \def\title{0 << /P (T-) /S /D >>}%
37- \edef\roman{\the\romancount << /S /r >>}%
38- \edef\arabic{\the\arabiccount << /S /D >>}%
39 %
40- % Page label ranges must be increasing. Remove any duplicates.
41- % (There is a slight chance of this being wrong if e.g. there is
42- % a @contents but no @titlepage, etc.)
43- %
44- \ifnum\romancount=0 \def\roman{}\fi
45- \ifnum\arabiccount=0 \def\title{}%
46- \else
47- \ifnum\romancount=\arabiccount \def\roman{}\fi
48- \fi
49- %
50- \ifnum\romancount<\arabiccount
51- \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax
52+ % support @contents at very end of document
53+ \ifnum\contentsendcount=\pagecount
54+ \ifnum\arabiccount<\romancount
55+ \pdfcatalog{/PageLabels << /Nums
56+ [\title
57+ \the\arabiccount << /S /D >>
58+ \the\romancount << /S /r >>
59+ ] >> }\relax
60+ \fi
61+ % no contents in document
62+ \else\ifnum\contentsendcount=0
63+ \pdfcatalog{/PageLabels << /Nums
64+ [\title
65+ \the\arabiccount << /S /D >>
66+ ] >> }\relax
67 \else
68- \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax
69- \fi
70+ \pdfcatalog{/PageLabels << /Nums
71+ [\title
72+ \the\romancount << /S /r >>
73+ \the\contentsendcount << /S /D >>
74+ ] >> }\relax
75+ \fi\fi
76 }
77 \else
78 \let\pagelabels\relax
79@@ -1131,6 +1137,8 @@ where each line of input produces a line of output.}
80 \newcount\pagecount \pagecount=0
81 \newcount\romancount \romancount=0
82 \newcount\arabiccount \arabiccount=0
83+\newcount\contentsendcount \contentsendcount=0
84+
85 \ifpdf
86 \let\ptxadvancepageno\advancepageno
87 \def\advancepageno{%
88@@ -6809,12 +6817,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
89 % Get ready to use Arabic numerals again
90 \def\contentsendroman{%
91 \lastnegativepageno = \pageno
92- \global\pageno = \savepageno
93- %
94- % If \romancount > \arabiccount, the contents are at the end of the
95- % document. Otherwise, advance where the Arabic numerals start for
96- % the page numbers.
97- \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi
98+ \global\pageno=1
99+ \contentsendcount = \pagecount
100 }
101
102 % Typeset the label for a chapter or appendix for the short contents.
103diff --git a/lib/Autom4te/FileUtils.pm b/lib/Autom4te/FileUtils.pm
104index ab58b9de4..2468fe6d8 100644
105--- a/lib/Autom4te/FileUtils.pm
106+++ b/lib/Autom4te/FileUtils.pm
107@@ -39,9 +39,12 @@ use strict;
108 use warnings FATAL => 'all';
109
110 use Exporter;
111-use Time::HiRes qw(stat);
112 use IO::File;
113
114+# use sub-second resolution timestamps if available,
115+# carry on with one-second resolution timestamps if that is all we have
116+BEGIN { eval { require Time::HiRes; import Time::HiRes qw(stat) } }
117+
118 use Autom4te::Channels;
119 use Autom4te::ChannelDefs;
120
121--
1222.41.0
123
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0003-NEWS-Tighten-up-wording.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0003-NEWS-Tighten-up-wording.patch
new file mode 100644
index 0000000000..76c37a005b
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0003-NEWS-Tighten-up-wording.patch
@@ -0,0 +1,29 @@
1From e05aa447945c0d72ad924fd89a28830cf1a0f8d3 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Fri, 31 Mar 2023 10:37:57 -0700
4Subject: [PATCH 03/29] * NEWS: Tighten up wording.
5
6Upstream-Status: Backport
7Signed-off-by: Khem Raj <raj.khem@gmail.com>
8---
9 NEWS | 4 +---
10 1 file changed, 1 insertion(+), 3 deletions(-)
11
12diff --git a/NEWS b/NEWS
13index d64648c6f..884e46f45 100644
14--- a/NEWS
15+++ b/NEWS
16@@ -5,9 +5,7 @@ GNU Autoconf NEWS - User visible changes.
17 ** Backward incompatibilities
18
19 *** AC_CHECK_FUNC and similar macros now use function prototypes.
20- AC_CHECK_FUNC and and similar macros now use C declarations with
21- function prototypes, a feature introduced in C89. The new approach
22- should work better with C23, which removed the non-prototyped K&R
23+ This should work better with C23, which removed the non-prototyped K&R
24 style that AC_CHECK_FUNC previously used. However, this change
25 means Autoconf no longer supports pre-1989 C compilers, as they do
26 not support function prototypes.
27--
282.41.0
29
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch
new file mode 100644
index 0000000000..1b30d9926c
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch
@@ -0,0 +1,82 @@
1From 232cab527897bcdf4d55492d41af73d31905bda5 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Fri, 31 Mar 2023 10:46:20 -0700
4Subject: [PATCH 04/29] Cater to programs misusing AC_EGREP_HEADER
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Problem reported by Frederic Berat in:
10https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html
11* lib/autoconf/programs.m4 (AC_PROG_EGREP): Also set
12EGREP_TRADITIONAL and ac_cv_path_EGREP_TRADITIONAL.
13* tests/c.at (AC_PROG_EGREP and AC_EGREP_HEADER):
14New test, taken from Frederic Berat’s email in:
15https://lists.gnu.org/r/autoconf/2023-03/msg00043.html
16
17Upstream-Status: Backport
18Signed-off-by: Khem Raj <raj.khem@gmail.com>
19---
20 lib/autoconf/programs.m4 | 10 ++++++++++
21 tests/c.at | 24 ++++++++++++++++++++++++
22 2 files changed, 34 insertions(+)
23
24diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
25index 1b7460c85..62ba6b8b6 100644
26--- a/lib/autoconf/programs.m4
27+++ b/lib/autoconf/programs.m4
28@@ -371,6 +371,16 @@ AC_CACHE_CHECK([for egrep], ac_cv_path_EGREP,
29 fi])
30 EGREP="$ac_cv_path_EGREP"
31 AC_SUBST([EGREP])
32+ dnl
33+ dnl Also set EGREP_TRADITIONAL even though unnecessary here,
34+ dnl for wrong but too-common code with the following pattern:
35+ dnl AC_PROG_EGREP
36+ dnl if false; then
37+ dnl AC_EGREP_HEADER([printf], [stdio.h], [has_printf=yes])
38+ dnl fi
39+ dnl AC_EGREP_HEADER([malloc], [stdlib.h], [has_malloc=yes])
40+ EGREP_TRADITIONAL=$EGREP
41+ ac_cv_path_EGREP_TRADITIONAL=$EGREP
42 ])# AC_PROG_EGREP
43
44 # _AC_PROG_EGREP_TRADITIONAL
45diff --git a/tests/c.at b/tests/c.at
46index c37f43b10..fad54760f 100644
47--- a/tests/c.at
48+++ b/tests/c.at
49@@ -232,6 +232,30 @@ AT_CHECK_DEFINES(
50 AT_CLEANUP
51
52
53+## ----------------------------------- ##
54+## AC_PROG_EGREP and AC_EGREP_HEADER. ##
55+## ----------------------------------- ##
56+
57+AT_SETUP([AC_PROG_EGREP and AC_EGREP_HEADER])
58+
59+_AT_CHECK_AC_MACRO(
60+[[AC_PROG_CPP
61+ AC_PROG_EGREP
62+
63+ # Although this code is incorrect (it should use AS_IF),
64+ # it follows a too-common real world pattern.
65+ # For now, test for it; we may remove this test later.
66+ if false; then
67+ AC_EGREP_HEADER([^], [limits.h])
68+ fi
69+
70+ AC_EGREP_HEADER([$], [limits.h], [],
71+ [AC_MSG_ERROR([[egrep-related macros do not tolerate misuse of 'if']])])
72+]])
73+
74+AT_CLEANUP
75+
76+
77 ## ------------------------------------ ##
78 ## AC_NO_EXECUTABLES (working linker). ##
79 ## ------------------------------------ ##
80--
812.41.0
82
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0006-Fix-timing-bug-on-high-speed-builds.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0006-Fix-timing-bug-on-high-speed-builds.patch
new file mode 100644
index 0000000000..53fb40b4df
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0006-Fix-timing-bug-on-high-speed-builds.patch
@@ -0,0 +1,75 @@
1From 713d9822bbfb2923115065efaefed34a0113f8a1 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Sat, 1 Apr 2023 16:44:03 -0700
4Subject: [PATCH 06/29] Fix timing bug on high-speed builds
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Problem reported by Bogdan via Jacob Bachmeyer in:
10https://lists.gnu.org/r/autoconf/2023-04/msg00002.html
11* bin/autom4te.in: If a file timestamp equals a dependency’s
12timestamp, consider the file to be out of date. Although this may
13result in extra work, it fixes some rare timing bugs.
14
15Upstream-Status: Backport
16Signed-off-by: Khem Raj <raj.khem@gmail.com>
17---
18 bin/autom4te.in | 12 +++++-------
19 1 file changed, 5 insertions(+), 7 deletions(-)
20
21diff --git a/bin/autom4te.in b/bin/autom4te.in
22index 4b61f0a82..71d7e6a62 100644
23--- a/bin/autom4te.in
24+++ b/bin/autom4te.in
25@@ -910,10 +910,8 @@ sub up_to_date ($)
26 return 0
27 if ! -f $tfile || ! -f $ofile;
28
29- # The youngest of the cache files must be older than the oldest of
30+ # The younger of the cache files must be older than the oldest of
31 # the dependencies.
32- # FIXME: These timestamps have only 1-second resolution.
33- # Time::HiRes fixes this, but assumes Perl 5.8 or later.
34 my $tmtime = mtime ($tfile);
35 my $omtime = mtime ($ofile);
36 my ($file, $mtime) = ($tmtime < $omtime
37@@ -926,7 +924,7 @@ sub up_to_date ($)
38 # We depend at least upon the arguments.
39 foreach my $dep (@ARGV)
40 {
41- if ($mtime < mtime ($dep))
42+ if ($mtime <= mtime ($dep))
43 {
44 verb "up_to_date ($file): outdated: $dep";
45 return 0;
46@@ -949,7 +947,7 @@ sub up_to_date ($)
47 # timestamp of that missing file was newer).
48 return 0
49 if ! $dep;
50- if ($mtime < mtime ($dep))
51+ if ($mtime <= mtime ($dep))
52 {
53 verb "up_to_date ($file): outdated: $dep";
54 return 0;
55@@ -1038,7 +1036,7 @@ $icache_file = new Autom4te::XFile $icache, O_RDWR|O_CREAT;
56 $icache_file->lock (LOCK_EX)
57 if ($flock_implemented eq "yes");
58
59-# Read the cache index if available and older than autom4te itself.
60+# Read the cache index if available and younger than autom4te itself.
61 # If autom4te is younger, then some structures such as C4che might
62 # have changed, which would corrupt its processing.
63 Autom4te::C4che->load ($icache_file)
64@@ -1105,7 +1103,7 @@ else
65 # Actual M4 expansion, if the user wants it, or if $output is old
66 # (STDOUT is pretty old).
67 handle_output ($req, $output)
68- if $force || mtime ($output) < mtime ($ocache . $req->id);
69+ if $force || mtime ($output) <= mtime ($ocache . $req->id);
70 }
71
72 # If we ran up to here, the cache is valid.
73--
742.41.0
75
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0007-Support-underquoted-callers-better.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0007-Support-underquoted-callers-better.patch
new file mode 100644
index 0000000000..f9f9345ade
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0007-Support-underquoted-callers-better.patch
@@ -0,0 +1,57 @@
1From 794182506c3c5814d48b2fc4d832770f608ce0ef Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Sat, 1 Apr 2023 20:25:13 -0700
4Subject: [PATCH 07/29] Support underquoted callers better
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Problem reported bh Khem Raj for mcpp 2.7.2 (2008) in:
10https://lists.gnu.org/r/autoconf/2023-04/msg00001.html
11* lib/autoconf/programs.m4 (_AC_PATH_PROG_FLAVOR_GNU):
12Add two ‘@%:@(’s to cater to underquoted callers.
13* lib/m4sugar/m4sh.m4 (_AS_PATH_WALK): Use quadrigraph instead of
14‘#’, for underquoted callers.
15
16Upstream-Status: Backport
17Signed-off-by: Khem Raj <raj.khem@gmail.com>
18---
19 lib/autoconf/programs.m4 | 5 +++--
20 lib/m4sugar/m4sh.m4 | 2 +-
21 2 files changed, 4 insertions(+), 3 deletions(-)
22
23diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
24index 62ba6b8b6..d06d18c44 100644
25--- a/lib/autoconf/programs.m4
26+++ b/lib/autoconf/programs.m4
27@@ -543,11 +543,12 @@ dnl # for best performing tool in a list breaks down.
28 # ----------------------------------------------------------------
29 m4_define([_AC_PATH_PROG_FLAVOR_GNU],
30 [# Check for GNU $1
31-case `"$1" --version 2>&1` in
32+case `"$1" --version 2>&1` in @%:@(
33 *GNU*)
34 $2;;
35 m4_ifval([$3],
36-[*)
37+[@%:@(
38+*)
39 $3;;
40 ])esac
41 ])# _AC_PATH_PROG_FLAVOR_GNU
42diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
43index ab5ca7db7..368487fa0 100644
44--- a/lib/m4sugar/m4sh.m4
45+++ b/lib/m4sugar/m4sh.m4
46@@ -1389,7 +1389,7 @@ m4_if([$1], m4_translit([[$1]], [:;]),
47 for as_dir in $as_dummy])
48 do
49 IFS=$as_save_IFS
50- case $as_dir in #(((
51+ case $as_dir in @%:@(((
52 '') as_dir=./ ;;
53 */) ;;
54 *) as_dir=$as_dir/ ;;
55--
562.41.0
57
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0008-New-script-for-building-inside-Guix-containers.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0008-New-script-for-building-inside-Guix-containers.patch
new file mode 100644
index 0000000000..cec7dcddef
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0008-New-script-for-building-inside-Guix-containers.patch
@@ -0,0 +1,54 @@
1From 8babe5f2ccb73cc574933743b381557a4db02424 Mon Sep 17 00:00:00 2001
2From: Zack Weinberg <zackw@panix.com>
3Date: Thu, 30 Mar 2023 10:50:36 -0400
4Subject: [PATCH 08/29] New script for building inside Guix containers.
5
6build-aux/test-build-guix, goes with the top level manifest.scm.
7See the top of the file for usage instructions.
8
9Upstream-Status: Backport
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 build-aux/test-build-guix | 30 ++++++++++++++++++++++++++++++
13 1 file changed, 30 insertions(+)
14 create mode 100755 build-aux/test-build-guix
15
16diff --git a/build-aux/test-build-guix b/build-aux/test-build-guix
17new file mode 100755
18index 000000000..4470af9b7
19--- /dev/null
20+++ b/build-aux/test-build-guix
21@@ -0,0 +1,30 @@
22+#! /bin/sh
23+
24+# From a pristine Git checkout, run
25+# guix shell --container --manifest=manifest.scm -- build-aux/test-build-guix
26+# to perform a complete bootstrap and test build of Autoconf.
27+
28+set -ex
29+
30+# Guix bug? /bin/sh is usually *not* the shell specified in the manifest.
31+SHELL="$(command -v sh)"
32+export SHELL
33+if [ "$(realpath /bin/sh)" != "$(realpath "$SHELL")" ]; then
34+ (
35+ cd /bin
36+ rm sh
37+ ln -s "$SHELL" sh
38+ )
39+ exec "$SHELL" "$0" "$@"
40+fi
41+
42+./bootstrap
43+if [ -d _build ]; then
44+ rm -rf _build/*
45+else
46+ mkdir _build
47+fi
48+cd _build
49+../configure
50+make all info pdf dvi
51+make distcheck
52--
532.41.0
54
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch
new file mode 100644
index 0000000000..c1c60dcf53
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch
@@ -0,0 +1,82 @@
1From dcf9bb7e3b12f3bd74edff60e80b53e668159579 Mon Sep 17 00:00:00 2001
2From: Zack Weinberg <zackw@panix.com>
3Date: Sun, 2 Apr 2023 10:27:08 -0400
4Subject: [PATCH 09/29] AC_XENIX_DIR: Rewrite using AC_CANONICAL_HOST.
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9AC_XENIX_DIR is an obsolete macro, defined as AC_HEADER_DIRENT plus
10code to make absolutely sure configure scripts that depended on a
11shell variable internal to the original (2.13 era) definition of
12AC_XENIX_DIR are not broken by autoupdate. (That variable had the
13temptingly public-sounding name “XENIX.”) This compatibility code
14uses AC_EGREP_CPP, which is itself discouraged for use in new
15configure scripts.
16
17(N.B. codesearch.debian.net does not find any uses whatsoever of
18this macro, nor any code in an .ac or .m4 file that depends on the
19XENIX variable.)
20
21Change the compatibility code to use AC_CANONICAL_HOST instead,
22and clarify which pieces of the code inserted by autoupdate are
23probably still necessary.
24
25* lib/autoconf/specific.m4 (AC_XENIX_DIR): Set XENIX variable
26 based on value of host_os. Clarify what manual cleanup is
27 recommended after autoupdate replaces this obsolete macro.
28
29Upstream-Status: Backport
30Signed-off-by: Khem Raj <raj.khem@gmail.com>
31---
32 lib/autoconf/specific.m4 | 26 +++++++++++---------------
33 1 file changed, 11 insertions(+), 15 deletions(-)
34
35diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
36index 1b3ee661b..a2dc5d488 100644
37--- a/lib/autoconf/specific.m4
38+++ b/lib/autoconf/specific.m4
39@@ -754,9 +754,9 @@ dnl it should only be defined when necessary.
40 ## Checks for UNIX variants. ##
41 ## -------------------------- ##
42
43-
44-# These are kludges which should be replaced by a single POSIX check.
45-# They aren't cached, to discourage their use.
46+# These macros are all obsolete, from the early days of Autoconf,
47+# before the invention of AC_CANONICAL_SYSTEM. Autoupdate will
48+# replace each with inline code for a more modern feature check.
49
50 # AC_AIX
51 # ------
52@@ -776,19 +776,15 @@ AU_DEFUN([AC_ISC_POSIX], [AC_SEARCH_LIBS([strerror], [cposix])])
53 # AC_XENIX_DIR
54 # ------------
55 AU_DEFUN([AC_XENIX_DIR],
56-[AC_MSG_CHECKING([for Xenix])
57-AC_EGREP_CPP([yes],
58-[#if defined M_XENIX && ! defined M_UNIX
59- yes
60-@%:@endif],
61- [AC_MSG_RESULT([yes]); XENIX=yes],
62- [AC_MSG_RESULT([no]); XENIX=])
63-
64-AC_HEADER_DIRENT[]dnl
65+[AC_HEADER_DIRENT
66+# Autoupdate added the next two lines to ensure that your configure
67+# script's behavior did not change. They are safe to remove unless
68+# you have code that depends on the XENIX shell variable.
69+AC_CANONICAL_HOST
70+AS_CASE([$host_os], [xenix*], [XENIX=yes], [XENIX=no])
71+# End of code added by autoupdate
72 ],
73-[You shouldn't need to depend upon XENIX. Remove the
74-'AC_MSG_CHECKING', 'AC_EGREP_CPP', and this warning if this part
75-of the test is useless.])
76+[Check for code depending on the XENIX shell variable.])
77
78
79 # AC_DYNIX_SEQ
80--
812.41.0
82
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch
new file mode 100644
index 0000000000..49322712ac
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch
@@ -0,0 +1,77 @@
1From 51d98495d1aac00970d791f064e83ca762bf81c7 Mon Sep 17 00:00:00 2001
2From: Zack Weinberg <zackw@panix.com>
3Date: Sun, 2 Apr 2023 10:43:51 -0400
4Subject: [PATCH 10/29] AC_TYPE_UID_T: Rewrite using AC_CHECK_TYPE.
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9AC_TYPE_UID_T uses AC_EGREP_HEADER to search sys/types.h for
10occurrences of the string ‘uid_t’ and, if found, assumes both
11uid_t and gid_t are available. This would be better done using
12a pair of AC_CHECK_TYPE operations.
13
14I also converted two uses of old-style AC_CHECK_TYPE, immediately
15below, to new-style. (There are probably other old-style uses in
16this file, I only did the ones I happened to see.)
17
18* lib/autoconf/types.m4 (AC_TYPE_UID_T): Check for uid_t and gid_t,
19 separately, using AC_CHECK_TYPE, instead of grepping sys/types.h.
20 (AC_TYPE_SIZE_T, AC_TYPE_SSIZE_T): Use new-style AC_CHECK_TYPE.
21
22Upstream-Status: Backport
23Signed-off-by: Khem Raj <raj.khem@gmail.com>
24---
25 lib/autoconf/types.m4 | 30 +++++++++++++++++-------------
26 1 file changed, 17 insertions(+), 13 deletions(-)
27
28diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
29index ebac0cf6d..ef2456135 100644
30--- a/lib/autoconf/types.m4
31+++ b/lib/autoconf/types.m4
32@@ -589,25 +589,29 @@ AC_DEFUN([AC_TYPE_MBSTATE_T],
33
34 # AC_TYPE_UID_T
35 # -------------
36-# FIXME: Rewrite using AC_CHECK_TYPE.
37 AN_IDENTIFIER([gid_t], [AC_TYPE_UID_T])
38 AN_IDENTIFIER([uid_t], [AC_TYPE_UID_T])
39 AC_DEFUN([AC_TYPE_UID_T],
40-[AC_CACHE_CHECK(for uid_t in sys/types.h, ac_cv_type_uid_t,
41-[AC_EGREP_HEADER(uid_t, sys/types.h,
42- ac_cv_type_uid_t=yes, ac_cv_type_uid_t=no)])
43-if test $ac_cv_type_uid_t = no; then
44- AC_DEFINE(uid_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
45- AC_DEFINE(gid_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
46-fi
47-])
48-
49-
50+[AC_CHECK_TYPE([uid_t], [],
51+ [AC_DEFINE([uid_t], [int],
52+ [Define as 'int' if <sys/types.h> doesn't define.])])
53+AC_CHECK_TYPE([gid_t], [],
54+ [AC_DEFINE([gid_t], [int],
55+ [Define as 'int' if <sys/types.h> doesn't define.])])])
56+
57+# This should be obsoleted, size_t is in C90.
58 AN_IDENTIFIER([size_t], [AC_TYPE_SIZE_T])
59-AC_DEFUN([AC_TYPE_SIZE_T], [AC_CHECK_TYPE(size_t, unsigned int)])
60+AC_DEFUN([AC_TYPE_SIZE_T],
61+[AC_CHECK_TYPE([size_t], [],
62+ [AC_DEFINE([size_t], [unsigned int],
63+ [Define as 'unsigned int' if <stddef.h> doesn't define.])])])
64
65 AN_IDENTIFIER([ssize_t], [AC_TYPE_SSIZE_T])
66-AC_DEFUN([AC_TYPE_SSIZE_T], [AC_CHECK_TYPE(ssize_t, int)])
67+AC_DEFUN([AC_TYPE_SSIZE_T],
68+[AC_CHECK_TYPE([ssize_t], [],
69+ [AC_DEFINE([ssize_t], [int],
70+ [Define as 'int' if <sys/types.h> doesn't define.])])])
71+
72
73 AN_IDENTIFIER([pid_t], [AC_TYPE_PID_T])
74 AC_DEFUN([AC_TYPE_PID_T],
75--
762.41.0
77
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch
new file mode 100644
index 0000000000..9c1f435d53
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch
@@ -0,0 +1,180 @@
1From daaca7f74f94d6a7a51d571156d5fbaba5ef9a87 Mon Sep 17 00:00:00 2001
2From: Zack Weinberg <zackw@panix.com>
3Date: Sun, 2 Apr 2023 21:03:30 -0400
4Subject: [PATCH 11/29] Make AC_PROG_GCC_TRADITIONAL a compatibility alias for
5 AC_PROG_CC.
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10This macro is one of the last remaining internal uses of AC_EGREP_CPP.
11It has only ever done anything useful with GCC, and GCC dropped
12support for ‘traditional’ compilation in version 3.3 (released 2003)
13so I do not think it is worth trying to preserve.
14
15* lib/autoconf/c.m4 (AC_PROG_GCC_TRADITIONAL): Make into a
16 compatibility alias for AC_PROG_CC, similar to AC_PROG_CC_STDC.
17* lib/autoconf/general.m4 (AC_EGREP_CPP): Remove stale comment.
18* doc/autoconf.texi, NEWS: Document this change.
19* tests/mktests.pl: Exclude AC_PROG_GCC_TRADITIONAL from
20 autoupdate tests.
21
22Upstream-Status: Backport
23Signed-off-by: Khem Raj <raj.khem@gmail.com>
24---
25 NEWS | 7 +++++++
26 doc/autoconf.texi | 29 ++++++++++++++---------------
27 lib/autoconf/c.m4 | 30 ++++++------------------------
28 lib/autoconf/general.m4 | 2 --
29 tests/mktests.pl | 2 +-
30 5 files changed, 28 insertions(+), 42 deletions(-)
31
32diff --git a/NEWS b/NEWS
33index 6a106f155..53c57ff59 100644
34--- a/NEWS
35+++ b/NEWS
36@@ -81,6 +81,13 @@ GNU Autoconf NEWS - User visible changes.
37 with plain apostrophes instead of the older GNU style `like this'
38 with grave accent and apostrophe.
39
40+*** AC_PROG_GCC_TRADITIONAL no longer does anything.
41+
42+ This macro has had no useful effect since GCC dropped support for
43+ traditional-mode compilation in version 3.3 (released in 2003), and
44+ the systems that needed it are also long obsolete. It is now a
45+ compatibility synonym for AC_PROG_CC.
46+
47 ** Notable bug fixes
48
49 *** Autoconf caches now use finer-grained timestamps.
50diff --git a/doc/autoconf.texi b/doc/autoconf.texi
51index 8db64d8bb..037c8055f 100644
52--- a/doc/autoconf.texi
53+++ b/doc/autoconf.texi
54@@ -7764,20 +7764,6 @@ This macro is obsolescent, as current C compilers support prototypes.
55 New programs need not use this macro.
56 @end defmac
57
58-@anchor{AC_PROG_GCC_TRADITIONAL}
59-@defmac AC_PROG_GCC_TRADITIONAL
60-@acindex{PROG_GCC_TRADITIONAL}
61-@ovindex CC
62-Add @option{-traditional} to output variable @code{CC} if using a
63-GNU C compiler and @code{ioctl} does not work properly without
64-@option{-traditional}. That usually happens when the fixed header files
65-have not been installed on an old system.
66-
67-This macro is obsolescent, since current versions of the GNU C
68-compiler fix the header files automatically when installed.
69-@end defmac
70-
71-
72 @node C++ Compiler
73 @subsection C++ Compiler Characteristics
74
75@@ -23986,7 +23972,8 @@ These days portable programs should use @code{waitpid}, not
76
77 @defmac AC_GCC_TRADITIONAL
78 @acindex{GCC_TRADITIONAL}
79-Replaced by @code{AC_PROG_GCC_TRADITIONAL} (@pxref{AC_PROG_GCC_TRADITIONAL}).
80+Replaced by @code{AC_PROG_GCC_TRADITIONAL} (@pxref{AC_PROG_GCC_TRADITIONAL}),
81+which is itself obsolete.
82 @end defmac
83
84 @defmac AC_GETGROUPS_T
85@@ -24369,6 +24356,18 @@ Now done by @code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
86 Now done by @code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
87 @end defmac
88
89+@anchor{AC_PROG_GCC_TRADITIONAL}
90+@defmac AC_PROG_GCC_TRADITIONAL
91+@acindex{PROG_GCC_TRADITIONAL}
92+Used to put GCC into ``traditional'' (pre-ISO C) compilation mode,
93+on systems with headers that did not work correctly with a
94+standard-compliant compiler. GCC has not supported traditional
95+compilation in many years, and all of the systems that required this are
96+long obsolete themselves. This macro is now a compatibility synonym for
97+@code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
98+
99+@end defmac
100+
101 @defmac AC_PROGRAMS_CHECK
102 @acindex{PROGRAMS_CHECK}
103 Replaced by @code{AC_CHECK_PROGS} (@pxref{AC_CHECK_PROGS}).
104diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
105index fef6c516d..33648b5b9 100644
106--- a/lib/autoconf/c.m4
107+++ b/lib/autoconf/c.m4
108@@ -551,30 +551,6 @@ fi[]dnl
109 ])# _AC_PROG_CC_G
110
111
112-# AC_PROG_GCC_TRADITIONAL
113-# -----------------------
114-AC_DEFUN([AC_PROG_GCC_TRADITIONAL],
115-[AC_REQUIRE([AC_PROG_CC])dnl
116-if test $ac_cv_c_compiler_gnu = yes; then
117- AC_CACHE_CHECK(whether $CC needs -traditional,
118- ac_cv_prog_gcc_traditional,
119-[ ac_pattern="Autoconf.*'x'"
120- AC_EGREP_CPP($ac_pattern, [#include <sgtty.h>
121-Autoconf TIOCGETP],
122- ac_cv_prog_gcc_traditional=yes, ac_cv_prog_gcc_traditional=no)
123-
124- if test $ac_cv_prog_gcc_traditional = no; then
125- AC_EGREP_CPP($ac_pattern, [#include <termio.h>
126-Autoconf TCGETA],
127- ac_cv_prog_gcc_traditional=yes)
128- fi])
129- if test $ac_cv_prog_gcc_traditional = yes; then
130- CC="$CC -traditional"
131- fi
132-fi
133-])# AC_PROG_GCC_TRADITIONAL
134-
135-
136 # AC_PROG_CC_C_O
137 # --------------
138 AC_DEFUN([AC_PROG_CC_C_O],
139@@ -1675,6 +1651,12 @@ AU_DEFUN([AC_PROG_CC_STDC],
140 [$0 is obsolete; use AC_PROG_CC]
141 )
142
143+# AC_PROG_GCC_TRADITIONAL
144+# -----------------------
145+AU_DEFUN([AC_PROG_GCC_TRADITIONAL],
146+ [AC_REQUIRE([AC_PROG_CC])],
147+ [$0 is obsolete; use AC_PROG_CC]
148+)
149
150 # AC_C_BACKSLASH_A
151 # ----------------
152diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
153index ecda0a51c..47d896d54 100644
154--- a/lib/autoconf/general.m4
155+++ b/lib/autoconf/general.m4
156@@ -2766,8 +2766,6 @@ AU_DEFUN([AC_TRY_CPP],
157 # AC_EGREP_CPP(PATTERN, PROGRAM,
158 # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
159 # ------------------------------------------------------
160-# Because this macro is used by AC_PROG_GCC_TRADITIONAL, which must
161-# come early, it is not included in AC_BEFORE checks.
162 AC_DEFUN([AC_EGREP_CPP],
163 [AC_LANG_PREPROC_REQUIRE()dnl
164 AC_REQUIRE([_AC_PROG_EGREP_TRADITIONAL])dnl
165diff --git a/tests/mktests.pl b/tests/mktests.pl
166index effed0bca..81f63586c 100644
167--- a/tests/mktests.pl
168+++ b/tests/mktests.pl
169@@ -112,7 +112,7 @@ my @ac_exclude_list = (
170 # Check all AU_DEFUN'ed macros with AT_CHECK_AU_MACRO, except these.
171 my @au_exclude_list = (
172 # Empty.
173- qr/^AC_(C_CROSS|PROG_CC_(C[89]9|STDC))$/,
174+ qr/^AC_(C_CROSS|PROG_(CC_(C[89]9|STDC)|GCC_TRADITIONAL))$/,
175
176 # Use AC_REQUIRE.
177 qr/^AC_(CYGWIN|MINGW32|EMXOS2)$/,
178--
1792.41.0
180
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch
new file mode 100644
index 0000000000..4d28101b46
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch
@@ -0,0 +1,328 @@
1From b5891a57b586ef6ff78bb752d62915b78cd58d7e Mon Sep 17 00:00:00 2001
2From: Zack Weinberg <zackw@panix.com>
3Date: Sun, 2 Apr 2023 15:07:58 -0400
4Subject: [PATCH 12/29] Overhaul AC_TYPE_GETGROUPS and AC_FUNC_GETGROUPS.
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9AC_TYPE_GETGROUPS is the last remaining use of AC_EGREP_HEADER in
10stock Autoconf macros. It uses it only when cross compiling, as a
11fallback from an AC_RUN_IFELSE check, testing for a bug in system
12headers from the late 1980s or early 1990s, where gid_t *existed*
13but the second argument to getgroups needed to be an array of int,
14and this didn’t cause a compile error (i.e. the system headers
15declare getgroups with no prototype or an incorrect prototype).
16AC_FUNC_GETGROUPS also uses AC_RUN_IFELSE to test for obscure
17problems specific to long-obsolete Unixes.
18
19The downsides of AC_RUN_IFELSE and AC_EGREP_HEADER seem more severe
20than the chances of someone compiling a current-generation program,
21that uses getgroups, on an OS old enough to have one of the really
22nasty bugs. Accordingly, this patch changes AC_FUNC_GETGROUPS to use
23a host_os-based *blacklist* both in native and cross compilation.
24This is limited to the two host_os values for which either our old
25code, or Gnulib, documented a serious bug: ultrix* and nextstep*.
26Currently it does not try to pin down the exact version ranges subject
27to the bugs — that would require research by someone with access to
28the full history of these OSes.
29
30An incorrect guess by this blacklist can be overridden by setting
31ac_cv_func_getgroups_works in config.site. AC_TYPE_GETGROUPS, for its
32part, now does a series of regular old AC_COMPILE_IFELSE checks to
33probe the prototype of getgroups, and considers that good enough.
34
35While I was in there I noticed that AC_FUNC_GETGROUPS does not
36AC_SUBST a documented output variable, and that the name of this
37variable is misspelled in the manual.
38
39* lib/autoconf/functions.m4 (AC_FUNC_GETGROUPS): Use AC_SEARCH_LIBS
40 to probe for getgroups. Use an AC_CANONICAL_HOST-based blacklist
41 for bug detection, not AC_RUN_IFELSE. AC_SUBST the GETGROUPS_LIB
42 output variable.
43* lib/autoconf/types.m4 (AC_TYPE_GETGROUPS): Check only the prototype
44 of getgroups, using AC_COMPILE_IFELSE; do not use either AC_RUN_IFELSE
45 or AC_EGREP_HEADER.
46* doc/autoconf.texi: Update to match. Correct misspelling of
47 GETGROUPS_LIB.
48* tests.local.at (_AT_CHECK_ENV): Allow GETGROUPS_LIB output variable.
49
50Upstream-Status: Backport
51Signed-off-by: Khem Raj <raj.khem@gmail.com>
52---
53 NEWS | 11 +++++
54 doc/autoconf.texi | 25 ++++++----
55 lib/autoconf/functions.m4 | 61 ++++++++++++------------
56 lib/autoconf/types.m4 | 97 ++++++++++++++++++++++++---------------
57 tests/local.at | 2 +-
58 5 files changed, 120 insertions(+), 76 deletions(-)
59
60diff --git a/NEWS b/NEWS
61index 53c57ff59..8e4ecc1bf 100644
62--- a/NEWS
63+++ b/NEWS
64@@ -38,6 +38,17 @@ GNU Autoconf NEWS - User visible changes.
65 This matters only for uses that, contrary to the documentation
66 and despite warnings, use m4_divert with numbered diversions.
67
68+*** AC_FUNC_GETGROUPS and AC_TYPE_GETGROUPS no longer run test programs.
69+ These macros were testing for OS bugs that we believe are at least
70+ twenty years in the past. Most operating systems are now trusted to
71+ provide an accurate prototype for getgroups in unistd.h, and to
72+ implement it as specified in POSIX.
73+
74+ AC_FUNC_GETGROUPS still includes a short blacklist of OSes with
75+ known, severe bugs in getgroups. It can be overridden using
76+ config.site. If you encounter a mistake in this blacklist
77+ please report it to bug-autoconf.
78+
79 ** New features
80
81 *** New macro AC_SYS_YEAR2038.
82diff --git a/doc/autoconf.texi b/doc/autoconf.texi
83index 037c8055f..5d5f613e6 100644
84--- a/doc/autoconf.texi
85+++ b/doc/autoconf.texi
86@@ -5257,17 +5257,26 @@ and also contains workarounds for other portability problems of
87 @defmac AC_FUNC_GETGROUPS
88 @acindex{FUNC_GETGROUPS}
89 @cvindex HAVE_GETGROUPS
90-@ovindex GETGROUPS_LIBS
91+@ovindex GETGROUPS_LIB
92 @c @fuindex getgroups
93 @prindex @code{getgroups}
94 @caindex func_getgroups_works
95-If the @code{getgroups} function is available and works,
96-define @code{HAVE_GETGROUPS}. Set @code{GETGROUPS_LIBS} to any libraries
97-needed to get that function. This macro runs @code{AC_TYPE_GETGROUPS}.
98-
99-This macro is obsolescent. New programs need not use this macro. But
100-they may want to use the Gnulib module @code{getgroups}, which provides
101-workarounds to other portability problems of this function.
102+Perform all the checks performed by @code{AC_TYPE_GETGROUPS}
103+(@pxref{AC_TYPE_GETGROUPS}).
104+Then, if the @code{getgroups} function is available
105+and known to work correctly, define @code{HAVE_GETGROUPS}.
106+Set the output variable @code{GETGROUPS_LIB} to any libraries
107+needed to get that function.
108+
109+This macro relies on a list of systems with known, serious bugs in
110+@code{getgroups}. If this list mis-identifies your system's
111+@code{getgroups} as buggy, or as not buggy, you can override it by
112+setting the cache variable @code{ac_cv_func_getgroups_works} in a
113+@file{config.site} file (@pxref{Site Defaults}). Please also report the
114+error to @email{bug-autoconf@@gnu.org, the Autoconf Bugs mailing list}.
115+
116+The Gnulib module @code{getgroups} provides workarounds for additional,
117+less severe portability problems with this function.
118 @end defmac
119
120 @anchor{AC_FUNC_GETLOADAVG}
121diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
122index 655d6ba8f..74512e97d 100644
123--- a/lib/autoconf/functions.m4
124+++ b/lib/autoconf/functions.m4
125@@ -698,47 +698,46 @@ AS_IF([test "$ac_cv_func_fseeko_ftello" = "need _LARGEFILE_SOURCE"],
126 # When cross-compiling, assume getgroups is broken.
127 AN_FUNCTION([getgroups], [AC_FUNC_GETGROUPS])
128 AC_DEFUN([AC_FUNC_GETGROUPS],
129-[AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
130-AC_REQUIRE([AC_TYPE_SIZE_T])dnl
131-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
132-AC_CHECK_FUNC(getgroups)
133+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
134+AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
135
136-# If we don't yet have getgroups, see if it's in -lbsd.
137+# On older systems getgroups might be in -lbsd.
138 # This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
139 ac_save_LIBS=$LIBS
140-if test $ac_cv_func_getgroups = no; then
141- AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
142-fi
143-
144-# Run the program to test the functionality of the system-supplied
145-# getgroups function only if there is such a function.
146+LIBS=
147+GETGROUPS_LIB=
148+AC_SEARCH_LIBS([getgroups], [bsd],
149+ [test "$ac_res" = "none required" || GETGROUPS_LIB="$ac_res"
150+ ac_cv_func_getgroups=yes],
151+ [ac_cv_func_getgroups=no])
152+LIBS=$ac_save_LIBS
153+AC_SUBST([GETGROUPS_LIB])
154+
155+# Known severe bugs in getgroups on particular systems.
156+# - On Ultrix 4.3 and NextSTEP 3.2, getgroups (0, 0) is reported to
157+# fail, rather than returning the number of supplementary groups as
158+# it ought to. We do not know the exact range of releases affected
159+# in either case.
160+# We currently reject all versions of the systems with known bugs, and
161+# no other systems. Please send corrections to bug-autoconf@gnu.org.
162 if test $ac_cv_func_getgroups = yes; then
163+ # This AC_CACHE_CHECK exists so that one may override an incorrect
164+ # guess by setting ac_cv_func_getgroups_works in a config.site file.
165 AC_CACHE_CHECK([for working getgroups], ac_cv_func_getgroups_works,
166- [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
167- [[/* On Ultrix 4.3, getgroups (0, 0) always fails. */
168- return getgroups (0, 0) == -1;]])],
169- [ac_cv_func_getgroups_works=yes],
170- [ac_cv_func_getgroups_works=no],
171- [case "$host_os" in # ((
172- # Guess yes on glibc systems.
173- *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
174- # If we don't know, assume the worst.
175- *) ac_cv_func_getgroups_works="guessing no" ;;
176- esac])
177- ])
178+ [AS_CASE([$host_os],
179+ [ultrix* | nextstep*],
180+ [ac_cv_func_getgroups_works=no # getgroups(0,0) fails
181+],
182+ [ac_cv_func_getgroups_works=yes])])
183 else
184 ac_cv_func_getgroups_works=no
185 fi
186-case "$ac_cv_func_getgroups_works" in
187- *yes)
188- AC_DEFINE(HAVE_GETGROUPS, 1,
189- [Define to 1 if your system has a working 'getgroups' function.])
190- ;;
191-esac
192-LIBS=$ac_save_LIBS
193+if test $ac_cv_func_getgroups_works = yes; then
194+ AC_DEFINE(HAVE_GETGROUPS, 1,
195+ [Define to 1 if your system has a working 'getgroups' function.])
196+fi
197 ])# AC_FUNC_GETGROUPS
198
199-
200 # _AC_LIBOBJ_GETLOADAVG
201 # ---------------------
202 # Set up the AC_LIBOBJ replacement of 'getloadavg'.
203diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
204index ef2456135..af3872b2f 100644
205--- a/lib/autoconf/types.m4
206+++ b/lib/autoconf/types.m4
207@@ -258,44 +258,69 @@ AN_IDENTIFIER([ptrdiff_t], [AC_CHECK_TYPES])
208 # AC_TYPE_GETGROUPS
209 # -----------------
210 AC_DEFUN([AC_TYPE_GETGROUPS],
211+dnl We now unconditionally assume that if <unistd.h> has a prototype for
212+dnl getgroups, it is accurate; and that if <unistd.h> does _not_ declare
213+dnl getgroups with a prototype, the second argument is an array of int.
214+dnl (Older versions of Autoconf made these assumptions only when cross
215+dnl compiling.) See AC_FUNC_GETGROUPS, over in functions.m4, for why
216+dnl this uses AC_COMPILE_IFELSE rather than AC_LINK_IFELSE.
217 [AC_REQUIRE([AC_TYPE_UID_T])dnl
218-AC_CACHE_CHECK(type of array argument to getgroups, ac_cv_type_getgroups,
219-[AC_RUN_IFELSE([AC_LANG_SOURCE(
220-[[/* Thanks to Mike Rendell for this test. */
221-]AC_INCLUDES_DEFAULT[
222-#define NGID 256
223-#undef MAX
224-#define MAX(x, y) ((x) > (y) ? (x) : (y))
225-
226-int
227-main (void)
228-{
229- gid_t gidset[NGID];
230- int i, n;
231- union { gid_t gval; long int lval; } val;
232-
233- val.lval = -1;
234- for (i = 0; i < NGID; i++)
235- gidset[i] = val.gval;
236- n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
237- gidset);
238- /* Exit non-zero if getgroups seems to require an array of ints. This
239- happens when gid_t is short int but getgroups modifies an array
240- of ints. */
241- return n > 0 && gidset[n] != val.gval;
242-}]])],
243- [ac_cv_type_getgroups=gid_t],
244- [ac_cv_type_getgroups=int],
245- [ac_cv_type_getgroups=cross])
246-if test $ac_cv_type_getgroups = cross; then
247- dnl When we can't run the test program (we are cross compiling), presume
248- dnl that <unistd.h> has either an accurate prototype for getgroups or none.
249- dnl Old systems without prototypes probably use int.
250- AC_EGREP_HEADER([getgroups.*int.*gid_t], unistd.h,
251- ac_cv_type_getgroups=gid_t, ac_cv_type_getgroups=int)
252-fi])
253+AC_CACHE_CHECK([type of array argument to getgroups], ac_cv_type_getgroups,
254+[# If AC_TYPE_UID_T says there isn't any gid_t typedef, then we can skip
255+# everything below.
256+AS_IF([test $ac_cv_type_gid_t = no],
257+ [ac_cv_type_getgroups=int],
258+ [# Test programs below rely on strict type checking of extern declarations:
259+ # 'extern int getgroups(int, int *); extern int getgroups(int, pid_t *);'
260+ # is valid in C89 if and only if pid_t is a typedef for int. Unlike
261+ # anything involving either an assignment or a function call, compilers
262+ # tend to make this kind of type mismatch a hard error, not just an
263+ # "incompatible pointer types" warning.
264+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
265+[AC_INCLUDES_DEFAULT
266+[extern int getgroups(int, gid_t *);]],
267+[[return !(getgroups(0, 0) >= 0);]])],
268+ [ac_getgroups_gidarray=yes],
269+ [ac_getgroups_gidarray=no])
270+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
271+[AC_INCLUDES_DEFAULT
272+[extern int getgroups(int, int *);]],
273+[[return !(getgroups(0, 0) >= 0);]])],
274+ [ac_getgroups_intarray=yes],
275+ [ac_getgroups_intarray=no])
276+
277+ AS_CASE([int:$ac_getgroups_intarray,gid:$ac_getgroups_gidarray],
278+ [int:yes,gid:no], [ac_cv_type_getgroups=int],
279+ [int:no,gid:yes], [ac_cv_type_getgroups=gid_t],
280+ [int:yes,gid:yes], [
281+ # Both programs compiled - this means *either* that getgroups
282+ # was declared with no prototype, in which case we should use int,
283+ # or that it was declared prototyped but gid_t is a typedef for int,
284+ # in which case we should use gid_t. Distinguish the two cases
285+ # by testing if the compiler catches a blatantly incorrect function
286+ # signature for getgroups.
287+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
288+[AC_INCLUDES_DEFAULT
289+[extern int getgroups(int, float);]],
290+[[return !(getgroups(0, 0) >= 0);]])], [
291+ # Compiler did not catch incorrect argument list;
292+ # getgroups is unprototyped.
293+ ac_cv_type_getgroups=int
294+ ], [
295+ # Compiler caught incorrect argument list;
296+ # gid_t is a typedef for int.
297+ ac_cv_type_getgroups=gid_t
298+ ])
299+ ], [
300+ # Both programs failed to compile - this probably means getgroups
301+ # wasn't declared at all. Use 'int', as this is probably a very
302+ # old system where the type _would have been_ int.
303+ ac_cv_type_getgroups=int
304+ ])
305+ ])
306+])dnl AC_CACHE_CHECK
307 AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups,
308- [Define to the type of elements in the array set by
309+ [Define to the type of elements in the array argument to
310 'getgroups'. Usually this is either 'int' or 'gid_t'.])
311 ])# AC_TYPE_GETGROUPS
312
313diff --git a/tests/local.at b/tests/local.at
314index 64a9fb264..db49f84a9 100644
315--- a/tests/local.at
316+++ b/tests/local.at
317@@ -401,7 +401,7 @@ if test -f state-env.before && test -f state-env.after; then
318 [interpval|PATH_SEPARATOR],
319 [GFC|F77_DUMMY_MAIN|f77_(case|underscore)],
320 [FC(_DUMMY_MAIN|FLAGS|LIBS|FLAGS_[fF]|_MODEXT|_MODINC|_MODOUT|_DEFINE)?],
321- [ALLOCA|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB],
322+ [ALLOCA|GETGROUPS_LIB|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB],
323 [AWK|LEX|LEXLIB|LEX_OUTPUT_ROOT|LN_S|M4|MKDIR_P|AR|RANLIB|SET_MAKE|YACC],
324 [EGREP_TRADITIONAL],
325 [GREP|[EF]GREP|SED],
326--
3272.41.0
328
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch
new file mode 100644
index 0000000000..2dadd83320
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch
@@ -0,0 +1,84 @@
1From a7dc6d83c7d12b8409c512c3c10ad29f01e6c164 Mon Sep 17 00:00:00 2001
2From: Zack Weinberg <zackw@panix.com>
3Date: Sun, 2 Apr 2023 21:54:31 -0400
4Subject: [PATCH 13/29] Fold AC_C_STRINGIZE into AC_PROG_CC.
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Another of the last few uses of AC_EGREP_CPP is to check for the ISO C
10“stringification” operator. As this is a feature of C89, let’s fold
11the test into the extensive C89 tests we already have, and make
12AC_C_STRINGIZE just lean on AC_PROG_CC, in the same way
13AC_C_PROTOTYPES does.
14
15* lib/autoconf/c.m4 (_AC_C_C89_TEST_GLOBALS): Add test of preprocessor
16 stringification and token pasting.
17 (AC_C_STRINGIZE): Just check ac_prog_cc_stdc.
18
19Upstream-Status: Backport
20Signed-off-by: Khem Raj <raj.khem@gmail.com>
21---
22 lib/autoconf/c.m4 | 31 ++++++++++++++++++++-----------
23 1 file changed, 20 insertions(+), 11 deletions(-)
24
25diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
26index 33648b5b9..c8c6a665c 100644
27--- a/lib/autoconf/c.m4
28+++ b/lib/autoconf/c.m4
29@@ -1143,6 +1143,21 @@ static char *f (char * (*g) (char **, int), char **p, ...)
30 return s;
31 }
32
33+/* C89 style stringification. */
34+#define noexpand_stringify(a) #a
35+const char *stringified = noexpand_stringify(arbitrary+token=sequence);
36+
37+/* C89 style token pasting. Exercises some of the corner cases that
38+ e.g. old MSVC gets wrong, but not very hard. */
39+#define noexpand_concat(a,b) a##b
40+#define expand_concat(a,b) noexpand_concat(a,b)
41+extern int vA;
42+extern int vbee;
43+#define aye A
44+#define bee B
45+int *pvA = &expand_concat(v,aye);
46+int *pvbee = &noexpand_concat(v,bee);
47+
48 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
49 function prototypes and stuff, but not \xHH hex character constants.
50 These do not provoke an error unfortunately, instead are silently treated
51@@ -2112,16 +2127,10 @@ fi
52 # --------------
53 # Checks if '#' can be used to glue strings together at the CPP level.
54 # Defines HAVE_STRINGIZE if positive.
55+# Obsolete - new code should assume C89 compliance.
56 AC_DEFUN([AC_C_STRINGIZE],
57-[AC_CACHE_CHECK([for preprocessor stringizing operator],
58- [ac_cv_c_stringize],
59-[AC_EGREP_CPP([@%:@teststring],
60- [@%:@define x(y) #y
61-
62-char *s = x(teststring);],
63- [ac_cv_c_stringize=no],
64- [ac_cv_c_stringize=yes])])
65-if test $ac_cv_c_stringize = yes; then
66+[AC_REQUIRE([AC_PROG_CC])
67+if test "$ac_prog_cc_stdc" != no; then
68 AC_DEFINE(HAVE_STRINGIZE, 1,
69 [Define to 1 if cpp supports the ANSI @%:@ stringizing operator.])
70 fi
71@@ -2130,8 +2139,8 @@ fi
72
73 # AC_C_PROTOTYPES
74 # ---------------
75-# Check if the C compiler supports prototypes, included if it needs
76-# options.
77+# Check if the C compiler supports prototypes.
78+# Obsolete - new code should assume C89 compliance.
79 AC_DEFUN([AC_C_PROTOTYPES],
80 [AC_REQUIRE([AC_PROG_CC])dnl
81 if test "$ac_prog_cc_stdc" != no; then
82--
832.41.0
84
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch
new file mode 100644
index 0000000000..85e9a45615
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch
@@ -0,0 +1,116 @@
1From e25dfa75e18295d28de67747b4ff9d65f65c4f06 Mon Sep 17 00:00:00 2001
2From: Zack Weinberg <zackw@panix.com>
3Date: Sun, 2 Apr 2023 22:17:55 -0400
4Subject: [PATCH 14/29] Remove the last few internal uses of AC_EGREP_CPP.
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Most of the remaining uses were converted to AC_COMPILE_IFELSE.
10The use in AC_FUNC_LOADAVG becomes an AC_PREPROC_IFELSE because
11we can’t be sure getloadavg.c can be _compiled_ at this point in
12the build. The use in AC_C_VARARRAYS could be either _PREPROC_ or
13_COMPILE_; we use _COMPILE_ because, _PREPROC_ is never used, then
14we don’t have to do the “checking how to run the C preprocessor” test.
15
16* lib/autoconf/c.m4 (AC_C_VARARRAYS): Use AC_COMPILE_IFELSE instead of
17 AC_EGREP_CPP.
18* lib/autoconf/headers.m4 (_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H)
19 (_AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL_H): Likewise.
20* lib/autoconf/functions.m4 (AC_FUNC_GETLOADAVG): Use AC_PREPROC_IFELSE
21 instead of AC_EGREP_CPP.
22
23Upstream-Status: Backport
24Signed-off-by: Khem Raj <raj.khem@gmail.com>
25---
26 lib/autoconf/c.m4 | 8 ++++----
27 lib/autoconf/functions.m4 | 10 +++++-----
28 lib/autoconf/headers.m4 | 24 ++++++++++--------------
29 3 files changed, 19 insertions(+), 23 deletions(-)
30
31diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
32index c8c6a665c..b8350c339 100644
33--- a/lib/autoconf/c.m4
34+++ b/lib/autoconf/c.m4
35@@ -2197,11 +2197,11 @@ AC_DEFUN([AC_C_VARARRAYS],
36 [
37 AC_CACHE_CHECK([for variable-length arrays],
38 ac_cv_c_vararrays,
39- [AC_EGREP_CPP([defined],
40- [#ifdef __STDC_NO_VLA__
41- defined
42+ [AC_COMPILE_IFELSE([AC_LANG_SOURCE(
43+[[ #ifndef __STDC_NO_VLA__
44+ #error __STDC_NO_VLA__ not defined
45 #endif
46- ],
47+]])],
48 [ac_cv_c_vararrays='no: __STDC_NO_VLA__ is defined'],
49 [AC_COMPILE_IFELSE(
50 [AC_LANG_PROGRAM(
51diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
52index 74512e97d..499e4c024 100644
53--- a/lib/autoconf/functions.m4
54+++ b/lib/autoconf/functions.m4
55@@ -842,11 +842,11 @@ AC_CHECK_FUNCS(getloadavg, [],
56 # Some definitions of getloadavg require that the program be installed setgid.
57 AC_CACHE_CHECK(whether getloadavg requires setgid,
58 ac_cv_func_getloadavg_setgid,
59-[AC_EGREP_CPP([Yowza Am I SETGID yet],
60-[#include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
61-#ifdef LDAV_PRIVILEGED
62-Yowza Am I SETGID yet
63-@%:@endif],
64+[AC_PREPROC_IFELSE([AC_LANG_SOURCE(
65+[[#include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
66+#ifndef LDAV_PRIVILEGED
67+#error setgid not needed
68+@%:@endif]])],
69 ac_cv_func_getloadavg_setgid=yes,
70 ac_cv_func_getloadavg_setgid=no)])
71 if test $ac_cv_func_getloadavg_setgid = yes; then
72diff --git a/lib/autoconf/headers.m4 b/lib/autoconf/headers.m4
73index 7f70e8fd4..19c124cc3 100644
74--- a/lib/autoconf/headers.m4
75+++ b/lib/autoconf/headers.m4
76@@ -721,13 +721,11 @@ you to include it and time.h simultaneously.])
77 m4_define([_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H],
78 [AC_CACHE_CHECK([whether termios.h defines TIOCGWINSZ],
79 ac_cv_sys_tiocgwinsz_in_termios_h,
80-[AC_EGREP_CPP([yes],
81- [#include <sys/types.h>
82-#include <termios.h>
83-#ifdef TIOCGWINSZ
84- yes
85-#endif
86-],
87+[AC_COMPILE_IFELSE([AC_LANG_SOURCE(
88+[AC_INCLUDES_DEFAULT
89+[#include <termios.h>
90+const int tiocgwinsz = TIOCGWINSZ;
91+]])],
92 ac_cv_sys_tiocgwinsz_in_termios_h=yes,
93 ac_cv_sys_tiocgwinsz_in_termios_h=no)])
94 ])# _AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H
95@@ -738,13 +736,11 @@ m4_define([_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H],
96 m4_define([_AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL],
97 [AC_CACHE_CHECK([whether sys/ioctl.h defines TIOCGWINSZ],
98 ac_cv_sys_tiocgwinsz_in_sys_ioctl_h,
99-[AC_EGREP_CPP([yes],
100- [#include <sys/types.h>
101-#include <sys/ioctl.h>
102-#ifdef TIOCGWINSZ
103- yes
104-#endif
105-],
106+[AC_COMPILE_IFELSE([AC_LANG_SOURCE(
107+[AC_INCLUDES_DEFAULT
108+[#include <sys/ioctl.h>
109+const int tiocgwinsz = TIOCGWINSZ;
110+]])],
111 ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes,
112 ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no)])
113 ])# _AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL
114--
1152.41.0
116
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0015-Support-circa-early-2022-Gnulib.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0015-Support-circa-early-2022-Gnulib.patch
new file mode 100644
index 0000000000..36d1a94be6
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0015-Support-circa-early-2022-Gnulib.patch
@@ -0,0 +1,32 @@
1From 1982523c6f052a2b361035a9d5d9737510ed0738 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Mon, 3 Apr 2023 09:12:40 -0700
4Subject: [PATCH 15/29] Support circa early 2022 Gnulib
5
6Problem reported by Frederic Berat in:
7https://lists.gnu.org/r/bug-rcs/2023-04/msg00001.html
8* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_INCLUDES):
9Bring back for compatibility with post-2.71, pre-2.73 Gnulib.
10
11Upstream-Status: Backport
12Signed-off-by: Khem Raj <raj.khem@gmail.com>
13---
14 lib/autoconf/specific.m4 | 2 ++
15 1 file changed, 2 insertions(+)
16
17diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
18index a2dc5d488..5dc006959 100644
19--- a/lib/autoconf/specific.m4
20+++ b/lib/autoconf/specific.m4
21@@ -277,6 +277,8 @@ m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
22 && LARGE_OFF_T % 2147483647 == 1)
23 ? 1 : -1]];[]dnl
24 ])
25+# Defined by Autoconf 2.71 and circa 2022 Gnulib unwisely depended on it.
26+m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [_AC_SYS_LARGEFILE_TEST_CODE])
27
28 # _AC_SYS_LARGEFILE_OPTIONS
29 # -------------------------
30--
312.41.0
32
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0016-Improve-year2038-largefile-option-processing.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0016-Improve-year2038-largefile-option-processing.patch
new file mode 100644
index 0000000000..e96faf2666
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0016-Improve-year2038-largefile-option-processing.patch
@@ -0,0 +1,121 @@
1From a1e82aff0fd842b0f09e2cd166560dfda725ba13 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Sun, 9 Apr 2023 11:41:57 -0700
4Subject: [PATCH 16/29] Improve year2038, largefile option processing
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9* lib/autoconf/specific.m4 (_AC_SYS_YEAR2038_PROBE)
10(_AC_SYS_YEAR2038_ENABLE, _AC_SYS_YEAR2038_OPT_IN)
11(AC_SYS_YEAR2038, _AC_SYS_LARGEFILE_PROBE)
12(_AC_SYS_LARGEFILE_ENABLE): Do not use enable_largefile to record
13whether largefile is required, as ‘./configure
14--disable-largefile’ sets enable_largefile=no even if largefile is
15required and this disables largefile. Instead, use a separate
16shell variable ac_largefile_required and test it as well.
17Similarly for enable_year2038.
18(_AC_SYS_LARGEFILE_ENABLE): Omit --disable-largefile help string
19if year2038 is required, since largefile is a prereq for year2038.
20
21Upstream-Status: Backport
22Signed-off-by: Khem Raj <raj.khem@gmail.com>
23---
24 lib/autoconf/specific.m4 | 35 ++++++++++++++++++++++-------------
25 1 file changed, 22 insertions(+), 13 deletions(-)
26
27diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
28index 5dc006959..1a3f4a65c 100644
29--- a/lib/autoconf/specific.m4
30+++ b/lib/autoconf/specific.m4
31@@ -155,10 +155,10 @@ AS_CASE([$ac_cv_sys_year2038_opts],
32 ["none needed"], [],
33 ["support not detected"],
34 [ac_have_year2038=no
35- AS_CASE([$enable_year2038],
36- [required],
37+ AS_CASE([$ac_year2038_required,$enable_year2038],
38+ [yes,*],
39 [AC_MSG_FAILURE([support for timestamps after Jan 2038 is required])],
40- [yes],
41+ [*,yes],
42 [# If we're not cross compiling and 'touch' works with a large
43 # timestamp, then we can presume the system supports wider time_t
44 # *somehow* and we just weren't able to detect it. One common
45@@ -209,10 +209,12 @@ AS_CASE([$ac_cv_sys_year2038_opts],
46 m4_define([_AC_SYS_YEAR2038_ENABLE],
47 [m4_divert_text([DEFAULTS],
48 m4_provide_if([AC_SYS_YEAR2038_REQUIRED],
49- [enable_year2038=required],
50+ [ac_year2038_required=yes],
51+ [ac_year2038_required=no]))dnl
52+m4_divert_text([DEFAULTS],
53 m4_provide_if([AC_SYS_YEAR2038],
54 [enable_year2038=yes],
55- [enable_year2038=no])))]dnl
56+ [enable_year2038=no]))]dnl
57 [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
58 [AC_ARG_ENABLE([year2038],
59 m4_provide_if([AC_SYS_YEAR2038],
60@@ -231,7 +233,8 @@ m4_define([_AC_SYS_YEAR2038_ENABLE],
61 # documented macro.
62 AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
63 [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
64- AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
65+ AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
66+ [_AC_SYS_YEAR2038_PROBE])
67 AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
68 ])])
69
70@@ -244,7 +247,8 @@ AC_DEFUN([AC_SYS_YEAR2038],
71 [m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
72 [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
73 [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
74- AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
75+ AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
76+ [_AC_SYS_YEAR2038_PROBE])
77 AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
78 ])])
79
80@@ -326,7 +330,7 @@ AS_CASE([$ac_cv_sys_largefile_opts],
81 ["none needed"], [],
82 ["support not detected"],
83 [ac_have_largefile=no
84- AS_IF([test $enable_largefile = required],
85+ AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
86 [AC_MSG_FAILURE([support for large files is required])])],
87
88 ["-D_FILE_OFFSET_BITS=64"],
89@@ -358,11 +362,15 @@ _AC_SYS_YEAR2038_OPT_IN
90 m4_define([_AC_SYS_LARGEFILE_ENABLE],
91 [m4_divert_text([DEFAULTS],
92 m4_provide_if([AC_SYS_LARGEFILE_REQUIRED],
93- [enable_largefile=required],
94- [enable_largefile=yes]))]dnl
95+ [ac_largefile_required=yes],
96+ [ac_largefile_required=no]))dnl
97+m4_divert_text([DEFAULTS],
98+ [enable_largefile=yes])]dnl
99 [m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
100-[AC_ARG_ENABLE([largefile],
101- [AS_HELP_STRING([--disable-largefile], [omit support for large files])])])])
102+ [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
103+ [AC_ARG_ENABLE([largefile],
104+ [AS_HELP_STRING([--disable-largefile],
105+ [omit support for large files])])])])])
106
107 # AC_SYS_LARGEFILE
108 # ----------------
109@@ -377,7 +385,8 @@ m4_define([_AC_SYS_LARGEFILE_ENABLE],
110 # large files; see also AC_SYS_LARGEFILE_REQUIRED.
111 AC_DEFUN([AC_SYS_LARGEFILE],
112 [m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
113- AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
114+ AS_IF([test "$ac_largefile_required,$enable_largefile,$ac_year2038_required" != no,no,no],
115+ [_AC_SYS_LARGEFILE_PROBE])
116 AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
117 ])])
118
119--
1202.41.0
121
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch
new file mode 100644
index 0000000000..f62fe1cd79
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch
@@ -0,0 +1,30 @@
1From 0cc3c4ca8e6c550bf590ae45a916982b6ec50203 Mon Sep 17 00:00:00 2001
2From: Bruno Haible <bruno@clisp.org>
3Date: Fri, 14 Apr 2023 16:18:35 +0200
4Subject: [PATCH 17/29] AC_SYS_YEAR2038: Fix configure failure on 32-bit mingw.
5
6* lib/autoconf/specific.m4 (_AC_SYS_YEAR2038_PROBE): Use the same option
7spelling as in _AC_SYS_YEAR2038_OPTIONS.
8
9Upstream-Status: Backport
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 lib/autoconf/specific.m4 | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
16index 1a3f4a65c..3bf1a0ed1 100644
17--- a/lib/autoconf/specific.m4
18+++ b/lib/autoconf/specific.m4
19@@ -182,7 +182,7 @@ AS_CASE([$ac_cv_sys_year2038_opts],
20 [AC_DEFINE([_TIME_BITS], [64],
21 [Number of bits in time_t, on hosts where this is settable.])],
22
23- ["-D__MINGW_USE_VC2005_COMPAT=1"],
24+ ["-D__MINGW_USE_VC2005_COMPAT"],
25 [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
26 [Define to 1 on platforms where this makes time_t a 64-bit type.])],
27
28--
292.41.0
30
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0018-Document-limitation-of-BusyBox-tr.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0018-Document-limitation-of-BusyBox-tr.patch
new file mode 100644
index 0000000000..478c4e4229
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0018-Document-limitation-of-BusyBox-tr.patch
@@ -0,0 +1,45 @@
1From e704a13c9644f4f4b9a9dd4e215ee7a1707f5850 Mon Sep 17 00:00:00 2001
2From: Bruno Haible <bruno@clisp.org>
3Date: Fri, 3 Mar 2023 14:32:13 +0100
4Subject: [PATCH 18/29] Document limitation of BusyBox tr.
5
6BusyBox 1.35.0 tr, which is shipped with Alpine Linux 3.17, does not support
7the POSIX [x*n] syntax.
8
9* doc/autoconf.texi (Limitations of Usual Tools): Document limitation of 'tr'
10from BusyBox.
11
12Upstream-Status: Backport
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 doc/autoconf.texi | 14 ++++++++++++++
16 1 file changed, 14 insertions(+)
17
18diff --git a/doc/autoconf.texi b/doc/autoconf.texi
19index 5d5f613e6..b3c708e87 100644
20--- a/doc/autoconf.texi
21+++ b/doc/autoconf.texi
22@@ -20368,6 +20368,20 @@ $ @kbd{echo abc | coreutils/tr bc d}
23 add
24 @end example
25
26+On platforms with the BusyBox tools, @command{tr} does not support the
27+@code{[@var{x}*@var{n}]} option syntax.
28+
29+@example
30+$ @kbd{echo abc | tr 'abcd' '[A*4]'}
31+[A*
32+$ @kbd{echo abc | coreutils/tr 'abcd' '[A*4]'}
33+AAA
34+$ @kbd{echo xyz | tr 'a-z' '[A*]'}
35+]]]
36+$ @kbd{echo xyz | coreutils/tr 'a-z' '[A*]'}
37+AAA
38+@end example
39+
40 Posix requires @command{tr} to operate on binary files. But at least
41 Solaris @command{/usr/ucb/tr} and @command{/usr/bin/tr} silently discard
42 @code{NUL} in the input prior to doing any translation. When using
43--
442.41.0
45
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch
new file mode 100644
index 0000000000..db9307e13c
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch
@@ -0,0 +1,48 @@
1From 2277f2c15744ad1cc5cd1ecc50a43108e50530a2 Mon Sep 17 00:00:00 2001
2From: Bruno Haible <bruno@clisp.org>
3Date: Wed, 19 Apr 2023 14:17:24 -0700
4Subject: [PATCH 19/29] AC_SYS_YEAR2038_REQUIRED: Fix configure failure with
5 MSVC.
6
7* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_PROBE): Distinguish the results
8"support not detected" and "supported through gnulib". If the result is
9"supported through gnulib", don't fail.
10
11Upstream-Status: Backport
12Signed-off-by: Khem Raj <raj.khem@gmail.com>
13---
14 lib/autoconf/specific.m4 | 13 +++++++++++++
15 1 file changed, 13 insertions(+)
16
17diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
18index 3bf1a0ed1..f411695fe 100644
19--- a/lib/autoconf/specific.m4
20+++ b/lib/autoconf/specific.m4
21@@ -323,11 +323,24 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
22 test $ac_opt_found = no || break
23 done
24 CC="$ac_save_CC"
25+ dnl Gnulib implements large file support for native Windows, based on the
26+ dnl variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE.
27+ m4_ifdef([gl_LARGEFILE], [
28+ AC_REQUIRE([AC_CANONICAL_HOST])
29+ if test $ac_opt_found != yes; then
30+ AS_CASE([$host_os],
31+ [mingw*],
32+ [ac_cv_sys_largefile_opts="supported through gnulib"
33+ ac_opt_found=yes]
34+ )
35+ fi
36+ ])
37 test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"])
38
39 ac_have_largefile=yes
40 AS_CASE([$ac_cv_sys_largefile_opts],
41 ["none needed"], [],
42+ ["supported through gnulib"], [],
43 ["support not detected"],
44 [ac_have_largefile=no
45 AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
46--
472.41.0
48
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0020-Tone-down-year-2038-changes.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0020-Tone-down-year-2038-changes.patch
new file mode 100644
index 0000000000..cbd89cc3ba
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0020-Tone-down-year-2038-changes.patch
@@ -0,0 +1,405 @@
1From 9c0183724614517a67d0955065171465bab7154a Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Wed, 26 Apr 2023 18:21:48 -0700
4Subject: [PATCH 20/29] Tone down year-2038 changes
5
6New macro AC_SYS_YEAR2038_RECOMMENDED replaces new macro
7AC_SYS_YEAR2038_REQUIRED, and gives the builder an out of
8specifying --disable-year2038. Remove new macro
9AC_SYS_LARGEFILE_REQUIRED, which was added only for symmetry and
10does not seem to have a great need.
11* NEWS, doc/autoconf.texi: Document this.
12* lib/autoconf/specific.m4:
13Be more specific about mid-January 2038 than just Jan 2038.
14(_AC_SYS_YEAR2038_PROBE): Ignore IF-NOT-DETECTED arg.
15If support is not detected, merely set ac_have_year2038=no instead
16of erroring out. All callers changed.
17(_AC_SYS_YEAR2038_OPT_IN): Remove. All callers removed.
18(AC_SYS_YEAR2038): Simplify by requiring AC_SYS_LARGEFILE
19and then testing the result.
20(AC_SYS_YEAR2038_REQUIRED, AC_SYS_LARGEFILE_REQUIRED): Remove.
21(AC_SYS_YEAR2038_RECOMMENDED): New macro.
22(_AC_SYS_LARGEFILE_PROBE): If support is not detected, merely set
23ac_have_largefile=no instead of erroring out. All callers changed.
24Take on the burden of invoking year2038 probe as needed.
25(AC_SYS_LARGEFILE): Simplify.
26
27Upstream-Status: Backport
28Signed-off-by: Khem Raj <raj.khem@gmail.com>
29---
30 NEWS | 18 ++--
31 doc/autoconf.texi | 34 +++-----
32 lib/autoconf/specific.m4 | 177 +++++++++++----------------------------
33 3 files changed, 69 insertions(+), 160 deletions(-)
34
35diff --git a/NEWS b/NEWS
36index 8e4ecc1bf..a48a00858 100644
37--- a/NEWS
38+++ b/NEWS
39@@ -51,7 +51,7 @@ GNU Autoconf NEWS - User visible changes.
40
41 ** New features
42
43-*** New macro AC_SYS_YEAR2038.
44+*** New macros AC_SYS_YEAR2038 and AC_SYS_YEAR2038_RECOMMENDED.
45 This causes 'configure' to widen time_t if possible on systems where
46 time_t by default cannot represent file and other timestamps after
47 January 2038. Widening is possible only on 32-bit GNU/Linux x86 and
48@@ -67,18 +67,14 @@ GNU Autoconf NEWS - User visible changes.
49 This is similar to longstanding consistency requirements with
50 --enable-largefile and --disable-largefile.
51
52+ AC_SYS_YEAR2038_RECOMMENDED acts like AC_SYS_YEAR2038 except that
53+ 'configure' fails if the target lacks support for post-2038
54+ timestamps and --disable-year2038 is not given.
55+
56 *** AC_SYS_LARGEFILE now optionally arranges to widen time_t.
57 It now acts like AC_SYS_YEAR2038, except 'configure' defaults to
58- --disable-year2038 unless AC_SYS_YEAR2038 is also present.
59- As with AC_SYS_YEAR2038, application and library builders should
60- configure consistently.
61-
62-*** New macros AC_SYS_LARGEFILE_REQUIRED and AC_SYS_YEAR2038_REQUIRED.
63- These act like AC_SYS_LARGEFILE and AC_SYS_YEAR2038 respectively,
64- except that 'configure' fails if the target lacks support
65- for large files and for post-2038 timestamps, respectively.
66- As with AC_SYS_YEAR2038, application and library builders should
67- configure consistently.
68+ --disable-year2038 unless either AC_SYS_YEAR2038 or
69+ AC_SYS_YEAR2038_RECOMMENDED is also present.
70
71 *** AC_USE_SYSTEM_EXTENSIONS now enables C23 Annex F extensions
72 by defining __STDC_WANT_IEC_60559_EXT__.
73diff --git a/doc/autoconf.texi b/doc/autoconf.texi
74index b3c708e87..0f3047b31 100644
75--- a/doc/autoconf.texi
76+++ b/doc/autoconf.texi
77@@ -8808,18 +8808,20 @@ if possible. These types may include @code{blkcnt_t}, @code{dev_t},
78
79 Also, arrange for a @command{configure} option @code{--enable-year2038}
80 to request widening the type @code{time_t} as needed to represent file
81-wand other timestamps after January 2038. This widening is possible
82+wand other timestamps after mid-January 2038. This widening is possible
83 only on 32-bit GNU/Linux x86 and ARM systems with glibc 2.34 or later.
84 If year-2038 support is requested but @command{configure} fails to find a way
85 to widen @code{time_t} and inspection of the system suggests that
86 this feature is available somehow, @command{configure} will error out.
87 If you want the default to be @code{--enable-year2038}, you can use
88-@code{AC_SYS_YEAR2038} instead of @code{AC_SYS_LARGEFILE}.
89+@code{AC_SYS_YEAR2038} or @code{AC_SYS_YEAR2038_RECOMMENDED}
90+instead of @code{AC_SYS_LARGEFILE}.
91 In other words, older packages that have long used @code{AC_SYS_LARGEFILE}
92 can have year-2038 support on 32-bit GNU/Linux x86 and ARM systems either by
93 regenerating @file{configure} with current Autoconf and configuring with
94-@option{--enable-year2038}, or by using @code{AC_SYS_YEAR2038} and
95-configuring without @option{--disable-year2038}.
96+@option{--enable-year2038}, or by using @code{AC_SYS_YEAR2038} or
97+@code{AC_SYS_YEAR2038_RECOMMENDED} and configuring without
98+@option{--disable-year2038}.
99 A future version of Autoconf might change the @code{AC_SYS_LARGEFILE}
100 default to @code{--enable-year2038}; if and when that happens,
101 @code{AC_SYS_LARGEFILE} and @code{AC_SYS_YEAR2038} will become equivalent.
102@@ -8886,19 +8888,6 @@ library, enabling or disabling the application's large-file support may
103 break binary compatibility with that library.
104 @end defmac
105
106-@defmac AC_SYS_LARGEFILE_REQUIRED
107-@acindex{SYS_LARGEFILE_REQUIRED}
108-This macro has the same effect as @code{AC_SYS_LARGEFILE},
109-but also declares that the program being configured
110-requires support for large files.
111-If a large @code{off_t} is unavailable,
112-@command{configure} will error out.
113-The @option{--disable-largefile} option will not be available.
114-
115-Large-file and year-2038 support for applications and libraries should
116-be configured compatibly. @xref{AC_SYS_LARGEFILE}.
117-@end defmac
118-
119 @anchor{AC_SYS_LONG_FILE_NAMES}
120 @defmac AC_SYS_LONG_FILE_NAMES
121 @acindex{SYS_LONG_FILE_NAMES}
122@@ -8927,14 +8916,13 @@ applications and libraries should be configured compatibly.
123 @xref{AC_SYS_LARGEFILE}.
124 @end defmac
125
126-@defmac AC_SYS_YEAR2038_REQUIRED
127-@acindex{SYS_YEAR2038_REQUIRED}
128+@defmac AC_SYS_YEAR2038_RECOMMENDED
129+@acindex{SYS_YEAR2038_RECOMMENDED}
130 This macro has the same effect as @code{AC_SYS_YEAR2038},
131 but also declares that the program being configured
132-requires support for timestamps after mid-January of 2038.
133-If a large @code{time_t} is unavailable,
134-@command{configure} will unconditionally error out.
135-The @option{--disable-year2038} option will not be available.
136+should support timestamps after mid-January 2038.
137+If a large @code{time_t} is unavailable, @command{configure} will error
138+out unless the @option{--disable-year2038} option is specified.
139
140 Year-2038 support for applications and libraries should be configured
141 compatibly. @xref{AC_SYS_YEAR2038}.
142diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
143index f411695fe..88e0479e8 100644
144--- a/lib/autoconf/specific.m4
145+++ b/lib/autoconf/specific.m4
146@@ -115,8 +115,8 @@ m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
147 dnl 32-bit MinGW (misconfiguration)
148 ))
149
150-# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED])
151-# -----------------------------------------
152+# _AC_SYS_YEAR2038_PROBE
153+# ----------------------
154 # Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent
155 # time points more than 2**31 - 1 seconds after the epoch (dates after
156 # 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts
157@@ -129,13 +129,10 @@ m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
158 # AC_TRY_RUN. Note also that some systems only support large time_t
159 # together with large off_t.
160 #
161-# If support is not detected, the behavior depends on which of the
162-# top-level AC_SYS_YEAR2038 macros was used (see below).
163-#
164 # If you change this macro you may also need to change
165 # _AC_SYS_YEAR2038_OPTIONS.
166 AC_DEFUN([_AC_SYS_YEAR2038_PROBE],
167-[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038],
168+[AC_CACHE_CHECK([for $CC option for timestamps after 2038],
169 [ac_cv_sys_year2038_opts],
170 [ac_save_CPPFLAGS="$CPPFLAGS"
171 ac_opt_found=no
172@@ -154,29 +151,7 @@ ac_have_year2038=yes
173 AS_CASE([$ac_cv_sys_year2038_opts],
174 ["none needed"], [],
175 ["support not detected"],
176- [ac_have_year2038=no
177- AS_CASE([$ac_year2038_required,$enable_year2038],
178- [yes,*],
179- [AC_MSG_FAILURE([support for timestamps after Jan 2038 is required])],
180- [*,yes],
181- [# If we're not cross compiling and 'touch' works with a large
182- # timestamp, then we can presume the system supports wider time_t
183- # *somehow* and we just weren't able to detect it. One common
184- # case that we deliberately *don't* probe for is a system that
185- # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
186- # wide time_t. (It would be inappropriate for us to override an
187- # intentional use of -m32.) Error out, demanding use of
188- # --disable-year2038 if this is intentional.
189- AS_IF([test $cross_compiling = no],
190- [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
191- [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
192- [*'Feb 7 2106'* | *'Feb 7 17:10'*],
193- [AC_MSG_FAILURE(m4_text_wrap(
194- [this system appears to support timestamps after January 2038,
195- but no mechanism for enabling wide 'time_t' was detected.
196- Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.)
197- To proceed with 32-bit time_t, configure with '--disable-year2038'.],
198- [], [], [55]))])])])])],
199+ [ac_have_year2038=no],
200
201 ["-D_TIME_BITS=64"],
202 [AC_DEFINE([_TIME_BITS], [64],
203@@ -189,7 +164,7 @@ AS_CASE([$ac_cv_sys_year2038_opts],
204 ["-U_USE_32_BIT_TIME_T"*],
205 [AC_MSG_FAILURE(m4_text_wrap(
206 [the 'time_t' type is currently forced to be 32-bit.
207- It will stop working after January 2038.
208+ It will stop working after mid-January 2038.
209 Remove _USE_32BIT_TIME_T from the compiler flags.],
210 [], [], [55]))],
211
212@@ -199,44 +174,23 @@ AS_CASE([$ac_cv_sys_year2038_opts],
213
214 # _AC_SYS_YEAR2038_ENABLE
215 # -----------------------
216-# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN.
217 # Depending on which of the YEAR2038 macros was used, add either an
218-# --enable-year2038, or a --disable-year2038, or no option at all to
219-# the configure script. Note that this is expanded very late and
220+# --enable-year2038 or a --disable-year2038 to
221+# the configure script. This is expanded very late and
222 # therefore there cannot be any code in the AC_ARG_ENABLE. The
223 # default value for 'enable_year2038' is emitted unconditionally
224 # because the generated code always looks at this variable.
225 m4_define([_AC_SYS_YEAR2038_ENABLE],
226 [m4_divert_text([DEFAULTS],
227- m4_provide_if([AC_SYS_YEAR2038_REQUIRED],
228- [ac_year2038_required=yes],
229- [ac_year2038_required=no]))dnl
230-m4_divert_text([DEFAULTS],
231 m4_provide_if([AC_SYS_YEAR2038],
232 [enable_year2038=yes],
233 [enable_year2038=no]))]dnl
234-[m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
235 [AC_ARG_ENABLE([year2038],
236 m4_provide_if([AC_SYS_YEAR2038],
237 [AS_HELP_STRING([--disable-year2038],
238- [omit support for dates after Jan 2038])],
239+ [don't support timestamps after 2038])],
240 [AS_HELP_STRING([--enable-year2038],
241- [include support for dates after Jan 2038])]))])])
242-
243-# _AC_SYS_YEAR2038_OPT_IN
244-# -----------------------
245-# If the --enable-year2038 option is given to configure, attempt to
246-# detect and activate support for large time_t on 32-bit systems.
247-# This macro is automatically invoked by AC_SYS_LARGEFILE when large
248-# *file* support is detected. It does not AC_REQUIRE AC_SYS_LARGEFILE
249-# to avoid a dependency loop, and is therefore unsafe to expose as a
250-# documented macro.
251-AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
252-[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
253- AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
254- [_AC_SYS_YEAR2038_PROBE])
255- AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
256-])])
257+ [support timestamps after 2038])]))])
258
259 # AC_SYS_YEAR2038
260 # ---------------
261@@ -244,28 +198,39 @@ AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
262 # On systems where time_t is not always 64 bits, this probe can be
263 # skipped by passing the --disable-year2038 option to configure.
264 AC_DEFUN([AC_SYS_YEAR2038],
265-[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
266- [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
267-[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
268- AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
269- [_AC_SYS_YEAR2038_PROBE])
270- AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
271-])])
272-
273-# AC_SYS_YEAR2038_REQUIRED
274-# ------------------------
275-# Same as AC_SYS_YEAR2038, but declares that this program *requires*
276-# support for large time_t. If we cannot find any way to make time_t
277-# capable of representing values larger than 2**31 - 1, configure will
278-# error out. Furthermore, no --enable-year2038 nor --disable-year2038
279-# option will be available.
280-AC_DEFUN([AC_SYS_YEAR2038_REQUIRED],
281-[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
282- [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
283-[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
284- _AC_SYS_YEAR2038_PROBE
285- AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
286-])])
287+[AC_REQUIRE([AC_SYS_LARGEFILE])dnl
288+AS_IF([test "$enable_year2038,$ac_have_year2038,$cross_compiling" = yes,no,no],
289+ [# If we're not cross compiling and 'touch' works with a large
290+ # timestamp, then we can presume the system supports wider time_t
291+ # *somehow* and we just weren't able to detect it. One common
292+ # case that we deliberately *don't* probe for is a system that
293+ # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
294+ # wide time_t. (It would be inappropriate for us to override an
295+ # intentional use of -m32.) Error out, demanding use of
296+ # --disable-year2038 if this is intentional.
297+ AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
298+ [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
299+ [*'Feb 7 2106'* | *'Feb 7 17:10'*],
300+ [AC_MSG_FAILURE(m4_text_wrap(
301+ [this system appears to support timestamps after mid-January 2038,
302+ but no mechanism for enabling wide 'time_t' was detected.
303+ Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
304+ To proceed with 32-bit time_t, configure with '--disable-year2038'.],
305+ [], [], [55]))])])])])
306+
307+# AC_SYS_YEAR2038_RECOMMENDED
308+# ---------------------------
309+# Same as AC_SYS_YEAR2038, but recommend support for large time_t.
310+# If we cannot find any way to make time_t capable of representing
311+# values larger than 2**31 - 1, error out unless --disable-year2038 is given.
312+AC_DEFUN([AC_SYS_YEAR2038_RECOMMENDED],
313+[AC_REQUIRE([AC_SYS_YEAR2038])dnl
314+AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
315+ [AC_MSG_FAILURE(m4_text_wrap(
316+ [could not enable timestamps after mid-January 2038.
317+ Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
318+ To proceed with 32-bit time_t, configure with '--disable-year2038'.],
319+ [], [], [55]))])])
320
321 # _AC_SYS_LARGEFILE_TEST_CODE
322 # ---------------------------
323@@ -342,9 +307,7 @@ AS_CASE([$ac_cv_sys_largefile_opts],
324 ["none needed"], [],
325 ["supported through gnulib"], [],
326 ["support not detected"],
327- [ac_have_largefile=no
328- AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
329- [AC_MSG_FAILURE([support for large files is required])])],
330+ [ac_have_largefile=no],
331
332 ["-D_FILE_OFFSET_BITS=64"],
333 [AC_DEFINE([_FILE_OFFSET_BITS], [64],
334@@ -360,30 +323,9 @@ AS_CASE([$ac_cv_sys_largefile_opts],
335 [AC_MSG_ERROR(
336 [internal error: bad value for \$ac_cv_sys_largefile_opts])])
337
338-_AC_SYS_YEAR2038_OPT_IN
339-])
340-
341-# _AC_SYS_LARGEFILE_ENABLE
342-# ------------------------
343-# Subroutine of AC_SYS_LARGEFILE. If AC_SYS_LARGEFILE_REQUIRED was
344-# not used at any point in this configure script, add a
345-# --disable-largefile option to the configure script. Note that this
346-# is expanded very late and therefore there cannot be any code in the
347-# AC_ARG_ENABLE. The default value for 'enable_largefile' is emitted
348-# unconditionally because the generated shell code always looks at
349-# this variable.
350-m4_define([_AC_SYS_LARGEFILE_ENABLE],
351-[m4_divert_text([DEFAULTS],
352- m4_provide_if([AC_SYS_LARGEFILE_REQUIRED],
353- [ac_largefile_required=yes],
354- [ac_largefile_required=no]))dnl
355-m4_divert_text([DEFAULTS],
356- [enable_largefile=yes])]dnl
357-[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
358- [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
359- [AC_ARG_ENABLE([largefile],
360- [AS_HELP_STRING([--disable-largefile],
361- [omit support for large files])])])])])
362+AS_IF([test "$enable_year2038" != no],
363+ [_AC_SYS_YEAR2038_PROBE])
364+AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])])
365
366 # AC_SYS_LARGEFILE
367 # ----------------
368@@ -394,29 +336,12 @@ m4_divert_text([DEFAULTS],
369 # Additionally, on Linux file systems with 64-bit inodes a file that happens
370 # to have a 64-bit inode number cannot be accessed by 32-bit applications on
371 # Linux x86/x86_64. This can occur with file systems such as XFS and NFS.
372-# This macro allows configuration to continue if the system doesn't support
373-# large files; see also AC_SYS_LARGEFILE_REQUIRED.
374 AC_DEFUN([AC_SYS_LARGEFILE],
375-[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
376- AS_IF([test "$ac_largefile_required,$enable_largefile,$ac_year2038_required" != no,no,no],
377- [_AC_SYS_LARGEFILE_PROBE])
378- AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
379-])])
380-
381-# AC_SYS_LARGEFILE_REQUIRED
382-# -------------------------
383-# Same as AC_SYS_LARGEFILE, but declares that this program *requires*
384-# support for large files. If we cannot find a combination of compiler
385-# options and #defines that makes 'off_t' capable of representing 2**63 - 1,
386-# 'configure' will error out. Furthermore, 'configure' will not offer a
387-# --disable-largefile command line option.
388-# If both AC_SYS_LARGEFILE and AC_SYS_LARGEFILE_REQUIRED are used in the
389-# same configure script -- in either order -- AC_SYS_LARGEFILE_REQUIRED wins.
390-AC_DEFUN([AC_SYS_LARGEFILE_REQUIRED],
391-[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
392- _AC_SYS_LARGEFILE_PROBE
393- AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
394-])])
395+[AC_ARG_ENABLE([largefile],
396+ [AS_HELP_STRING([--disable-largefile],
397+ [omit support for large files])])dnl
398+AS_IF([test "$enable_largefile,$enable_year2038" != no,no],
399+ [_AC_SYS_LARGEFILE_PROBE])])
400
401 # AC_SYS_LONG_FILE_NAMES
402 # ----------------------
403--
4042.41.0
405
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch
new file mode 100644
index 0000000000..56bcbb6ca1
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch
@@ -0,0 +1,98 @@
1From 028526149ee804617a302ccef22cc6adbda681b0 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Wed, 10 May 2023 17:20:49 -0700
4Subject: [PATCH 21/29] Port AC_FUNC_MMAP to more-modern systems
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Don’t call
10getpagesize, as it’s tricky to configure, modern POSIX doesn’t
11require it, and calling it without including <unistd.h> provokes a
12compile-time error on modern systems. Instead, rework the test
13to not need getpagesize. Add a FIXME comment for unnecessary
14tests; I don't want to remove them now as we're too close to
15a release. Remove long-obsolete comment about GNU grep.
16
17Upstream-Status: Backport
18Signed-off-by: Khem Raj <raj.khem@gmail.com>
19---
20 lib/autoconf/functions.m4 | 44 +++++----------------------------------
21 1 file changed, 5 insertions(+), 39 deletions(-)
22
23diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
24index 499e4c024..5a0f01856 100644
25--- a/lib/autoconf/functions.m4
26+++ b/lib/autoconf/functions.m4
27@@ -1283,6 +1283,7 @@ AU_ALIAS([AM_FUNC_MKTIME], [AC_FUNC_MKTIME])
28 AN_FUNCTION([mmap], [AC_FUNC_MMAP])
29 AC_DEFUN([AC_FUNC_MMAP],
30 [AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
31+dnl FIXME: Remove the unnecessary checks for unistd.h, sys/param.h, getpagesize.
32 AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
33 AC_CHECK_FUNCS_ONCE([getpagesize])
34 AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
35@@ -1305,48 +1306,11 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
36 VM page cache was not coherent with the file system buffer cache
37 like early versions of FreeBSD and possibly contemporary NetBSD.)
38 For shared mappings, we should conversely verify that changes get
39- propagated back to all the places they're supposed to be.
40-
41- Grep wants private fixed already mapped.
42- The main things grep needs to know about mmap are:
43- * does it exist and is it safe to write into the mmap'd area
44- * how to use it (BSD variants) */
45+ propagated back to all the places they're supposed to be. */
46
47 #include <fcntl.h>
48 #include <sys/mman.h>
49
50-/* This mess was copied from the GNU getpagesize.h. */
51-#ifndef HAVE_GETPAGESIZE
52-# ifdef _SC_PAGESIZE
53-# define getpagesize() sysconf(_SC_PAGESIZE)
54-# else /* no _SC_PAGESIZE */
55-# ifdef HAVE_SYS_PARAM_H
56-# include <sys/param.h>
57-# ifdef EXEC_PAGESIZE
58-# define getpagesize() EXEC_PAGESIZE
59-# else /* no EXEC_PAGESIZE */
60-# ifdef NBPG
61-# define getpagesize() NBPG * CLSIZE
62-# ifndef CLSIZE
63-# define CLSIZE 1
64-# endif /* no CLSIZE */
65-# else /* no NBPG */
66-# ifdef NBPC
67-# define getpagesize() NBPC
68-# else /* no NBPC */
69-# ifdef PAGESIZE
70-# define getpagesize() PAGESIZE
71-# endif /* PAGESIZE */
72-# endif /* no NBPC */
73-# endif /* no NBPG */
74-# endif /* no EXEC_PAGESIZE */
75-# else /* no HAVE_SYS_PARAM_H */
76-# define getpagesize() 8192 /* punt totally */
77-# endif /* no HAVE_SYS_PARAM_H */
78-# endif /* no _SC_PAGESIZE */
79-
80-#endif /* no HAVE_GETPAGESIZE */
81-
82 int
83 main (void)
84 {
85@@ -1355,7 +1319,9 @@ main (void)
86 int i, pagesize;
87 int fd, fd2;
88
89- pagesize = getpagesize ();
90+ /* The "page size" need not equal the system page size,
91+ and need not even be a power of 2. */
92+ pagesize = 8192;
93
94 /* First, make a file with some known garbage in it. */
95 data = (char *) malloc (pagesize);
96--
972.41.0
98
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0022-Fix-port-of-AC_FUNC_MMAP.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0022-Fix-port-of-AC_FUNC_MMAP.patch
new file mode 100644
index 0000000000..1b168c7b55
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0022-Fix-port-of-AC_FUNC_MMAP.patch
@@ -0,0 +1,91 @@
1From 33c26d2700f927432c756ccf7a4fc89403d35b95 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Wed, 10 May 2023 22:57:27 -0700
4Subject: [PATCH 22/29] Fix port of AC_FUNC_MMAP
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Problem reported by Matt Turner in:
10https://lists.gnu.org/r/bug-autoconf/2023-05/msg00005.html
11* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Go back to getting the
12page size, since the zero-fill test needs this after all.
13However, prefer sysconf (_SC_PAGESIZE) or sysconf (_SC_PAGE_SIZE)
14to getpagesize (), and use ‘long’ not ‘int’ to store the page size.
15Also, declare getpagesize if it is used as a function.
16
17Upstream-Status: Backport
18Signed-off-by: Khem Raj <raj.khem@gmail.com>
19---
20 lib/autoconf/functions.m4 | 41 ++++++++++++++++++++++++++++++++++-----
21 1 file changed, 36 insertions(+), 5 deletions(-)
22
23diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
24index 5a0f01856..3d6e4aca8 100644
25--- a/lib/autoconf/functions.m4
26+++ b/lib/autoconf/functions.m4
27@@ -1283,7 +1283,6 @@ AU_ALIAS([AM_FUNC_MKTIME], [AC_FUNC_MKTIME])
28 AN_FUNCTION([mmap], [AC_FUNC_MMAP])
29 AC_DEFUN([AC_FUNC_MMAP],
30 [AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
31-dnl FIXME: Remove the unnecessary checks for unistd.h, sys/param.h, getpagesize.
32 AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
33 AC_CHECK_FUNCS_ONCE([getpagesize])
34 AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
35@@ -1311,17 +1310,49 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
36 #include <fcntl.h>
37 #include <sys/mman.h>
38
39+#ifndef getpagesize
40+# ifdef _SC_PAGESIZE
41+# define getpagesize() sysconf (_SC_PAGESIZE)
42+# elif defined _SC_PAGE_SIZE
43+# define getpagesize() sysconf (_SC_PAGE_SIZE)
44+# elif HAVE_GETPAGESIZE
45+int getpagesize ();
46+# else
47+# ifdef HAVE_SYS_PARAM_H
48+# include <sys/param.h>
49+# ifdef EXEC_PAGESIZE
50+# define getpagesize() EXEC_PAGESIZE
51+# else /* no EXEC_PAGESIZE */
52+# ifdef NBPG
53+# define getpagesize() NBPG * CLSIZE
54+# ifndef CLSIZE
55+# define CLSIZE 1
56+# endif /* no CLSIZE */
57+# else /* no NBPG */
58+# ifdef NBPC
59+# define getpagesize() NBPC
60+# else /* no NBPC */
61+# ifdef PAGESIZE
62+# define getpagesize() PAGESIZE
63+# endif /* PAGESIZE */
64+# endif /* no NBPC */
65+# endif /* no NBPG */
66+# endif /* no EXEC_PAGESIZE */
67+# else /* no HAVE_SYS_PARAM_H */
68+# define getpagesize() 8192 /* punt totally */
69+# endif /* no HAVE_SYS_PARAM_H */
70+# endif
71+#endif
72+
73 int
74 main (void)
75 {
76 char *data, *data2, *data3;
77 const char *cdata2;
78- int i, pagesize;
79+ long i, pagesize;
80 int fd, fd2;
81
82- /* The "page size" need not equal the system page size,
83- and need not even be a power of 2. */
84- pagesize = 8192;
85+ pagesize = getpagesize ();
86
87 /* First, make a file with some known garbage in it. */
88 data = (char *) malloc (pagesize);
89--
902.41.0
91
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch
new file mode 100644
index 0000000000..9fb33c3196
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch
@@ -0,0 +1,38 @@
1From ccc0d640c4d829504568330f9674408af5092ffc Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Sat, 13 May 2023 09:56:33 -0700
4Subject: [PATCH 23/29] Improve AC_SYS_YEAR2038_RECOMMENDED diagnostic
5
6* lib/autoconf/specific.m4 (AC_SYS_YEAR2038_RECOMMENDED):
7Do not recommend gcc -m64, as that likely will not work.
8Problem reported by Bruno Haible in:
9https://lists.gnu.org/r/bug-gnulib/2023-05/msg00060.html
10Instead, mention that 32-bit time_t is not recommended
11for this package, before telling the builder how
12to configure with 32-bit time_t anyway.
13
14Upstream-Status: Backport
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16---
17 lib/autoconf/specific.m4 | 5 +++--
18 1 file changed, 3 insertions(+), 2 deletions(-)
19
20diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
21index 88e0479e8..91f20bf0d 100644
22--- a/lib/autoconf/specific.m4
23+++ b/lib/autoconf/specific.m4
24@@ -228,8 +228,9 @@ AC_DEFUN([AC_SYS_YEAR2038_RECOMMENDED],
25 AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
26 [AC_MSG_FAILURE(m4_text_wrap(
27 [could not enable timestamps after mid-January 2038.
28- Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
29- To proceed with 32-bit time_t, configure with '--disable-year2038'.],
30+ This package recommends support for these later timestamps.
31+ However, to proceed with signed 32-bit time_t even though it
32+ will fail then, configure with '--disable-year2038'.],
33 [], [], [55]))])])
34
35 # _AC_SYS_LARGEFILE_TEST_CODE
36--
372.41.0
38
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0024-Improve-AC_FUNC_MMAP-comments.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0024-Improve-AC_FUNC_MMAP-comments.patch
new file mode 100644
index 0000000000..2644c57836
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0024-Improve-AC_FUNC_MMAP-comments.patch
@@ -0,0 +1,29 @@
1From 8e7281d7bebb5e389befe6e9a5afbb7b2ae13ae0 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Wed, 17 May 2023 11:50:27 -0700
4Subject: [PATCH 24/29] Improve AC_FUNC_MMAP comments
5
6* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Add comment.
7
8Upstream-Status: Backport
9Signed-off-by: Khem Raj <raj.khem@gmail.com>
10---
11 lib/autoconf/functions.m4 | 2 ++
12 1 file changed, 2 insertions(+)
13
14diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
15index 3d6e4aca8..54d04cc38 100644
16--- a/lib/autoconf/functions.m4
17+++ b/lib/autoconf/functions.m4
18@@ -1311,6 +1311,8 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
19 #include <sys/mman.h>
20
21 #ifndef getpagesize
22+/* Prefer sysconf to the legacy getpagesize function, as getpagesize has
23+ been removed from POSIX and is limited to page sizes that fit in 'int'. */
24 # ifdef _SC_PAGESIZE
25 # define getpagesize() sysconf (_SC_PAGESIZE)
26 # elif defined _SC_PAGE_SIZE
27--
282.41.0
29
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch
new file mode 100644
index 0000000000..b7affed40d
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch
@@ -0,0 +1,62 @@
1From 103514e40da5f20aebf83a3446452ccebe5172bb Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Mon, 19 Jun 2023 14:04:29 -0700
4Subject: [PATCH 25/29] Fix AC_SYS_LARGEFILE on GNU/Linux alpha, s390x
5
6Problem reported by Matoro <https://bugs.gnu.org/64123>.
7* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_CODE):
8New overridable macro FTYPE, to test types other than off_t.
9(_AC_SYS_LARGEFILE_TEST_CODE): Test ino_t for
10-D_FILE_OFFSETBITS=64 too, if no flags are needed for off_t.
11Needed for GNU/Linux on alpha and s390x.
12
13Upstream-Status: Backport
14Signed-off-by: Khem Raj <raj.khem@gmail.com>
15---
16 lib/autoconf/specific.m4 | 21 +++++++++++++++------
17 1 file changed, 15 insertions(+), 6 deletions(-)
18
19diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
20index 91f20bf0d..9d5974548 100644
21--- a/lib/autoconf/specific.m4
22+++ b/lib/autoconf/specific.m4
23@@ -238,13 +238,16 @@ AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
24 # C code used to probe for large file support.
25 m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
26 [@%:@include <sys/types.h>
27- /* Check that off_t can represent 2**63 - 1 correctly.
28- We can't simply define LARGE_OFF_T to be 9223372036854775807,
29+@%:@ifndef FTYPE
30+@%:@ define FTYPE off_t
31+@%:@endif
32+ /* Check that FTYPE can represent 2**63 - 1 correctly.
33+ We can't simply define LARGE_FTYPE to be 9223372036854775807,
34 since some C++ compilers masquerading as C compilers
35 incorrectly reject 9223372036854775807. */
36-@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
37- int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
38- && LARGE_OFF_T % 2147483647 == 1)
39+@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31))
40+ int FTYPE_is_large[[(LARGE_FTYPE % 2147483629 == 721
41+ && LARGE_FTYPE % 2147483647 == 1)
42 ? 1 : -1]];[]dnl
43 ])
44 # Defined by Autoconf 2.71 and circa 2022 Gnulib unwisely depended on it.
45@@ -284,7 +287,13 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
46 AS_IF([test x"$ac_opt" != x"none needed"],
47 [CC="$ac_save_CC $ac_opt"])
48 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])],
49- [ac_cv_sys_largefile_opts="$ac_opt"
50+ [AS_IF([test x"$ac_opt" = x"none needed"],
51+ [# GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
52+ CC="$CC -DFTYPE=ino_t"
53+ AC_COMPILE_IFELSE([], [],
54+ [CC="$CC -D_FILE_OFFSET_BITS=64"
55+ AC_COMPILE_IFELSE([], [ac_opt='-D_FILE_OFFSET_BITS=64'])])])
56+ ac_cv_sys_largefile_opts=$ac_opt
57 ac_opt_found=yes])
58 test $ac_opt_found = no || break
59 done
60--
612.41.0
62
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0026-Modernize-INSTALL.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0026-Modernize-INSTALL.patch
new file mode 100644
index 0000000000..8d2539611d
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0026-Modernize-INSTALL.patch
@@ -0,0 +1,270 @@
1From a7421b411b4359b97528c8f4e9dd8abe82235813 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Tue, 20 Jun 2023 13:23:19 -0700
4Subject: [PATCH 26/29] Modernize INSTALL
5
6Problem reported for gettext bootstrap by Julien Palard in:
7https://savannah.gnu.org/bugs/?62196
8* doc/install.texi: Give a brief info as to how to bootstrap,
9on packages built from Git rather from a distribution tarball.
10Remove aging details about c99, macOS, X, HP-UX, OSF/1, Solaris,
11Haiku, sun4. Improve documentation for enable/disable and
12with/without options.
13
14Upstream-Status: Backport
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16---
17 doc/install.texi | 157 +++++++++++++++++++++--------------------------
18 1 file changed, 70 insertions(+), 87 deletions(-)
19
20diff --git a/doc/install.texi b/doc/install.texi
21index e06689613..cec245fd0 100644
22--- a/doc/install.texi
23+++ b/doc/install.texi
24@@ -18,9 +18,21 @@ warranty of any kind.
25 @node Basic Installation
26 @section Basic Installation
27
28-Briefly, the shell command
29-@samp{./configure@tie{}&& make@tie{}&& make@tie{}install}
30-should configure, build, and install this package. The following
31+Briefly, the following shell commands:
32+
33+@example
34+test -f configure || ./bootstrap
35+./configure
36+make
37+make install
38+@end example
39+
40+@noindent
41+should configure, build, and install this package.
42+The @command{./bootstrap} line is intended for developers;
43+you can omit it when building from a distribution tarball.
44+
45+The following
46 more-detailed instructions are generic; see the @file{README} file for
47 instructions specific to this package.
48 @ifclear autoconf
49@@ -32,6 +44,17 @@ More recommendations for GNU packages can be found in
50 @ref{Makefile Conventions, , Makefile Conventions, standards,
51 GNU Coding Standards}.
52
53+If the @command{bootstrap} shell script exists, it attempts to build the
54+@command{configure} shell script and related files, perhaps by
55+downloading other software components from the network, and by using
56+developer tools that are less commonly installed. Because the output of
57+@command{bootstrap} is system-independent, it is normally run by a
58+package developer so that its output can be put into the distribution
59+tarball and ordinary builders and users need not run @command{bootstrap}.
60+Some packages have commands like @command{./autopull.sh} and
61+@command {./autogen.sh} that you can run instead of @command{./bootstrap},
62+for more fine-grained control over bootstrapping.
63+
64 The @command{configure} shell script attempts to guess correct values
65 for various system-dependent variables used during compilation. It uses
66 those values to create a @file{Makefile} in each directory of the
67@@ -63,8 +86,15 @@ The simplest way to compile this package is:
68
69 @enumerate
70 @item
71-@command{cd} to the directory containing the package's source code and type
72-@samp{./configure} to configure the package for your system.
73+@command{cd} to the directory containing the package's source code.
74+
75+@item
76+If this is a developer checkout and file @samp{configure} does not yet exist,
77+type @samp{./bootstrap} to create it.
78+You may need special developer tools and network access to bootstrap.
79+
80+@item
81+Type @samp{./configure} to configure the package for your system.
82
83 Running @command{configure} might take a while. While running, it prints some
84 messages telling which features it is checking for.
85@@ -124,7 +154,7 @@ parameters by setting variables in the command line or in the environment.
86 Here is an example:
87
88 @example
89-./configure CC=c99 CFLAGS=-g LIBS=-lposix
90+./configure CC=gcc CFLAGS=-g LIBS=-lposix
91 @end example
92
93 @xref{Defining Variables}, for more details.
94@@ -148,21 +178,10 @@ architecture at a time in the source code directory. After you have
95 installed the package for one architecture, use @samp{make distclean}
96 before reconfiguring for another architecture.
97
98-On MacOS X 10.5 and later systems, you can create libraries and
99-executables that work on multiple system types---known as @dfn{fat} or
100-@dfn{universal} binaries---by specifying multiple @option{-arch} options
101-to the compiler but only a single @option{-arch} option to the
102-preprocessor. Like this:
103-
104-@example
105-./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
106- CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
107- CPP="gcc -E" CXXCPP="g++ -E"
108-@end example
109-
110-This is not guaranteed to produce working output in all cases, you may
111-have to build one architecture at a time and combine the results
112-using the @command{lipo} tool if you have problems.
113+Some platforms, notably macOS, support ``fat'' or ``universal'' binaries,
114+where a single binary can execute on different architectures.
115+On these platforms you can configure and compile just once,
116+with options specific to that platform.
117
118 @node Installation Names
119 @section Installation Names
120@@ -227,20 +246,16 @@ an extra prefix or suffix on their names by giving @command{configure}
121 the option @option{--program-prefix=@var{PREFIX}} or
122 @option{--program-suffix=@var{SUFFIX}}.
123
124-Some packages pay attention to @option{--enable-@var{feature}} options
125+Some packages pay attention to @option{--enable-@var{feature}}
126+and @option{--disable-@var{feature}} options
127 to @command{configure}, where @var{feature} indicates an optional part
128 of the package. They may also pay attention to
129-@option{--with-@var{package}} options, where @var{package} is something
130-like @samp{gnu-as} or @samp{x} (for the X Window System). The
131-@file{README} should mention any @option{--enable-} and @option{--with-}
132+@option{--with-@var{package}} and @option{--without-@var{package}} options,
133+where @var{package} is something like @samp{gnu-ld}.
134+@samp{./configure --help} should mention the
135+@option{--enable-...} and @option{--with-...}
136 options that the package recognizes.
137
138-For packages that use the X Window System, @command{configure} can
139-usually find the X include and library files automatically, but if it
140-doesn't, you can use the @command{configure} options
141-@option{--x-includes=@var{dir}} and @option{--x-libraries=@var{dir}} to
142-specify their locations.
143-
144 Some packages offer the ability to configure how verbose the execution
145 of @command{make} will be. For these packages, running
146 @samp{./configure --enable-silent-rules} sets the default to minimal
147@@ -248,53 +263,6 @@ output, which can be overridden with @code{make V=1}; while running
148 @samp{./configure --disable-silent-rules} sets the default to verbose,
149 which can be overridden with @code{make V=0}.
150
151-@node Particular Systems
152-@section Particular systems
153-
154-On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is
155-not installed, it is recommended to use the following options in order to
156-use an ANSI C compiler:
157-
158-@example
159-./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
160-@end example
161-
162-@noindent
163-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
164-
165-HP-UX @command{make} updates targets which have the same timestamps as
166-their prerequisites, which makes it generally unusable when shipped
167-generated files such as @command{configure} are involved. Use GNU
168-@command{make} instead.
169-
170-On OSF/1 a.k.a.@: Tru64, some versions of the default C compiler cannot
171-parse its @code{<wchar.h>} header file. The option @option{-nodtk} can be
172-used as a workaround. If GNU CC is not installed, it is therefore
173-recommended to try
174-
175-@example
176-./configure CC="cc"
177-@end example
178-
179-@noindent
180-and if that doesn't work, try
181-
182-@example
183-./configure CC="cc -nodtk"
184-@end example
185-
186-On Solaris, don't put @code{/usr/ucb} early in your @env{PATH}. This
187-directory contains several dysfunctional programs; working variants
188-of these programs are available in @code{/usr/bin}. So, if you need
189-@code{/usr/ucb} in your @env{PATH}, put it @emph{after} @code{/usr/bin}.
190-
191-On Haiku, software installed for all users goes in @file{/boot/common},
192-not @file{/usr/local}. It is recommended to use the following options:
193-
194-@example
195-./configure --prefix=/boot/common
196-@end example
197-
198 @node System Type
199 @section Specifying the System Type
200
201@@ -304,7 +272,8 @@ will run on. Usually, assuming the package is built to be run on the
202 @emph{same} architectures, @command{configure} can figure that out, but
203 if it prints a message saying it cannot guess the machine type, give it
204 the @option{--build=@var{type}} option. @var{type} can either be a
205-short name for the system type, such as @samp{sun4}, or a canonical name
206+short name like @samp{mingw64} for the system type, or a canonical name
207+like @samp{x86_64-pc-linux-gnu}
208 which has the form:
209
210 @example
211@@ -319,6 +288,7 @@ where @var{system} can have one of these forms:
212 @var{kernel}-@var{os}
213 @end example
214
215+@noindent
216 See the file @file{config.sub} for the possible values of each field.
217 If @file{config.sub} isn't included in this package, then this package
218 doesn't need to know the machine type.
219@@ -405,13 +375,6 @@ traditionally @file{config.cache}. @var{file} defaults to
220 @itemx -C
221 Alias for @option{--cache-file=config.cache}.
222
223-@item --quiet
224-@itemx --silent
225-@itemx -q
226-Do not print messages saying which checks are being made. To suppress
227-all normal output, redirect it to @file{/dev/null} (any error messages
228-will still be shown).
229-
230 @item --srcdir=@var{dir}
231 Look for the package's source code in directory @var{dir}. Usually
232 @command{configure} can determine that directory automatically.
233@@ -421,13 +384,33 @@ Use @var{dir} as the installation prefix. @ref{Installation Names}
234 for more details, including other options available for fine-tuning
235 the installation locations.
236
237+@item --build=@var{type}
238+Build for architecture @var{type}. @ref{Specifying the System Type}
239+for more details, including other system type options.
240+
241+@item --enable-@var{feature}
242+@itemx --disable-@var{feature}
243+Enable or disable the optional @var{feature}. @xref{Optional Features}.
244+
245+@item --with-@var{package}
246+@itemx --without-@var{package}
247+Use or omit @var{package} when building. @xref{Optional Features}.
248+
249+@item --quiet
250+@itemx --silent
251+@itemx -q
252+Do not print messages saying which checks are being made. To suppress
253+all normal output, redirect it to @file{/dev/null} (any error messages
254+will still be shown).
255+
256 @item --no-create
257 @itemx -n
258 Run the configure checks, but stop before creating any output files.
259 @end table
260
261 @noindent
262-@command{configure} also accepts some other, not widely useful, options.
263+@command{configure} also recognizes several environment variables,
264+and accepts some other, less widely useful, options.
265 Run @samp{configure --help} for more details.
266
267 @c Local Variables:
268--
2692.41.0
270
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0027-doc-fix-broken-cross-refs.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0027-doc-fix-broken-cross-refs.patch
new file mode 100644
index 0000000000..7ab5074755
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0027-doc-fix-broken-cross-refs.patch
@@ -0,0 +1,58 @@
1From eaea61e4485cdecf989fa777ff4e166c945a6eea Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Tue, 20 Jun 2023 13:39:15 -0700
4Subject: [PATCH 27/29] doc: fix broken cross-refs
5
6Upstream-Status: Backport
7Signed-off-by: Khem Raj <raj.khem@gmail.com>
8---
9 doc/autoconf.texi | 5 +----
10 doc/install.texi | 2 +-
11 2 files changed, 2 insertions(+), 5 deletions(-)
12
13diff --git a/doc/autoconf.texi b/doc/autoconf.texi
14index 0f3047b31..7817fc1b5 100644
15--- a/doc/autoconf.texi
16+++ b/doc/autoconf.texi
17@@ -604,7 +604,6 @@ Running @command{configure} Scripts
18 * Multiple Architectures:: Compiling for multiple architectures at once
19 * Installation Names:: Installing in different directories
20 * Optional Features:: Selecting optional features
21-* Particular Systems:: Particular systems
22 * System Type:: Specifying the system type
23 * Sharing Defaults:: Setting site-wide defaults for @command{configure}
24 * Defining Variables:: Specifying the compiler etc.
25@@ -23304,7 +23303,6 @@ may use comes with Autoconf.
26 * Multiple Architectures:: Compiling for multiple architectures at once
27 * Installation Names:: Installing in different directories
28 * Optional Features:: Selecting optional features
29-* Particular Systems:: Particular systems
30 * System Type:: Specifying the system type
31 * Sharing Defaults:: Setting site-wide defaults for @command{configure}
32 * Defining Variables:: Specifying the compiler etc.
33@@ -26990,8 +26988,7 @@ for simple differences.
34 @item
35 Most tests which produce their result in a substituted variable allow to
36 override the test by setting the variable on the @command{configure}
37-command line (@pxref{Compilers and Options}, @pxref{Defining Variables},
38-@pxref{Particular Systems}).
39+command line (@pxref{Compilers and Options}, @pxref{Defining Variables}).
40
41 @item
42 Many tests store their result in a cache variable (@pxref{Caching
43diff --git a/doc/install.texi b/doc/install.texi
44index cec245fd0..6d9788fa9 100644
45--- a/doc/install.texi
46+++ b/doc/install.texi
47@@ -385,7 +385,7 @@ for more details, including other options available for fine-tuning
48 the installation locations.
49
50 @item --build=@var{type}
51-Build for architecture @var{type}. @ref{Specifying the System Type}
52+Build for architecture @var{type}. @ref{System Type}.
53 for more details, including other system type options.
54
55 @item --enable-@var{feature}
56--
572.41.0
58
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch
new file mode 100644
index 0000000000..95ad80df5e
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch
@@ -0,0 +1,224 @@
1From 328f9b88ef896e8e31818c50d9ec2ade5c892ea4 Mon Sep 17 00:00:00 2001
2From: Bruno Haible <bruno@clisp.org>
3Date: Fri, 23 Jun 2023 17:37:35 +0200
4Subject: [PATCH 28/29] INSTALL: Clarify --build, --host, --target, and the
5 system types.
6
7* doc/install.texi (Compilers and Options): Add another reference.
8(System Types): Renamed from System Type. Explain how to canonicalize
9and how to validate a system type. Don't explain --build, --host,
10--target here.
11(Building for a different system type): New section.
12(Troubleshooting the Build Type): New section.
13(Configuring a Compiler): New section.
14(configure Invocation): Mention the --host option, not the --build
15option, since --build is so rarely needed.
16
17Upstream-Status: Backport
18Signed-off-by: Khem Raj <raj.khem@gmail.com>
19---
20 doc/autoconf.texi | 6 +--
21 doc/install.texi | 132 +++++++++++++++++++++++++++++++++++++---------
22 2 files changed, 111 insertions(+), 27 deletions(-)
23
24diff --git a/doc/autoconf.texi b/doc/autoconf.texi
25index 7817fc1b5..043f7fb21 100644
26--- a/doc/autoconf.texi
27+++ b/doc/autoconf.texi
28@@ -604,7 +604,7 @@ Running @command{configure} Scripts
29 * Multiple Architectures:: Compiling for multiple architectures at once
30 * Installation Names:: Installing in different directories
31 * Optional Features:: Selecting optional features
32-* System Type:: Specifying the system type
33+* System Types:: Specifying a system type
34 * Sharing Defaults:: Setting site-wide defaults for @command{configure}
35 * Defining Variables:: Specifying the compiler etc.
36 * configure Invocation:: Changing how @command{configure} runs
37@@ -22383,7 +22383,7 @@ system it's running on. To do so it runs a script called
38 command or symbols predefined by the C preprocessor.
39
40 Alternately, the user can specify the system type with command line
41-arguments to @command{configure} (@pxref{System Type}. Doing so is
42+arguments to @command{configure} (@pxref{System Types}. Doing so is
43 necessary when
44 cross-compiling. In the most complex case of cross-compiling, three
45 system types are involved. The options to specify them are:
46@@ -23303,7 +23303,7 @@ may use comes with Autoconf.
47 * Multiple Architectures:: Compiling for multiple architectures at once
48 * Installation Names:: Installing in different directories
49 * Optional Features:: Selecting optional features
50-* System Type:: Specifying the system type
51+* System Types:: Specifying a system type
52 * Sharing Defaults:: Setting site-wide defaults for @command{configure}
53 * Defining Variables:: Specifying the compiler etc.
54 * configure Invocation:: Changing how @command{configure} runs
55diff --git a/doc/install.texi b/doc/install.texi
56index 6d9788fa9..a3ef17828 100644
57--- a/doc/install.texi
58+++ b/doc/install.texi
59@@ -157,8 +157,16 @@ Here is an example:
60 ./configure CC=gcc CFLAGS=-g LIBS=-lposix
61 @end example
62
63-@xref{Defining Variables}, for more details.
64-
65+See
66+@ref{Defining Variables} and
67+@ifset autoconf
68+@ref{Preset Output Variables}
69+@end ifset
70+@ifclear autoconf
71+@ref{Preset Output Variables,,, autoconf, Autoconf}
72+@c (@url{https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Preset-Output-Variables.html})
73+@end ifclear
74+for more details.
75
76 @node Multiple Architectures
77 @section Compiling For Multiple Architectures
78@@ -263,18 +271,17 @@ output, which can be overridden with @code{make V=1}; while running
79 @samp{./configure --disable-silent-rules} sets the default to verbose,
80 which can be overridden with @code{make V=0}.
81
82-@node System Type
83-@section Specifying the System Type
84+@node System Types
85+@section Specifying a System Type
86
87-There may be some features @command{configure} cannot figure out
88-automatically, but needs to determine by the type of machine the package
89-will run on. Usually, assuming the package is built to be run on the
90-@emph{same} architectures, @command{configure} can figure that out, but
91-if it prints a message saying it cannot guess the machine type, give it
92-the @option{--build=@var{type}} option. @var{type} can either be a
93-short name like @samp{mingw64} for the system type, or a canonical name
94-like @samp{x86_64-pc-linux-gnu}
95-which has the form:
96+The following sections go into details regarding situations where you
97+may have to specify a system type, either through the option
98+@option{--host=@var{type}}, or through the option
99+@option{--build=@var{type}}, or -- in the case of compilers -- through
100+@option{--target=@var{type}}.
101+
102+A system type @var{type} can either be a short name like @samp{mingw64},
103+or a canonical name like @samp{x86_64-pc-linux-gnu} which has the form:
104
105 @example
106 @var{cpu}-@var{company}-@var{system}
107@@ -291,16 +298,93 @@ where @var{system} can have one of these forms:
108 @noindent
109 See the file @file{config.sub} for the possible values of each field.
110 If @file{config.sub} isn't included in this package, then this package
111-doesn't need to know the machine type.
112+doesn't need to know any machine type.
113+
114+The file @file{config.sub} is a program that validates and canonicalizes
115+a system type.
116+It can do canonicalization, as in
117+
118+@example
119+$ sh config.sub x86_64-linux
120+x86_64-pc-linux-gnu
121+$ sh config.sub arm64-linux
122+aarch64-unknown-linux-gnu
123+@end example
124+
125+@noindent
126+It also validates the parts. For example, this interaction tells you
127+that ``crusoe'' is not a valid cpu architecture name:
128
129-If you are @emph{building} compiler tools for cross-compiling, you
130-should use the option @option{--target=@var{type}} to select the type of
131-system they will produce code for.
132+@example
133+$ sh config.sub crusoe-linux
134+Invalid configuration `crusoe-linux': machine `crusoe-unknown' not recognized
135+@end example
136+
137+@node Building for a different system type
138+@section Creating binaries for a different system type
139+
140+When you want to create binaries that will run on a different machine
141+type than the one you are building on, you need to specify both
142+@itemize @bullet
143+@item
144+a @option{--host=@var{type}} option, specifying the machine type on
145+which the binaries shall run,
146+@item
147+compiler variables (@code{CC} for the C compiler, @code{CXX} for the C++
148+compiler, and so on), pointing to compilers that generate object code
149+for that machine type.
150+@end itemize
151+
152+For example, to create binaries intended to run on a 64-bit ARM
153+processor:
154+@example
155+./configure --host=aarch64-linux-gnu \
156+ CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
157+@end example
158
159-If you want to @emph{use} a cross compiler, that generates code for a
160-platform different from the build platform, you should specify the
161-@dfn{host} platform (i.e., that on which the generated programs will
162-eventually be run) with @option{--host=@var{type}}.
163+If you do this on a machine that can execute such binaries (e.g.@: by
164+virtue of the @code{qemu-aarch64} program, system libraries for that
165+architecture under @code{$QEMU_LD_PREFIX}, and a Linux
166+@code{binfmt_misc} configuration), the build behaves like a native
167+build.
168+If not, the build is a cross-build, in the sense that @code{configure}
169+will make cross-compilation guesses instead of running test programs,
170+and ``make check'' will not work.
171+
172+@node Troubleshooting the Build Type
173+@section Fixing a ``cannot guess build type'' error
174+
175+In rare cases, it may happen that @code{configure} fails with the error
176+message ``cannot guess build type''.
177+This error means that the files @file{config.guess} and
178+@file{config.sub} don't recognize the type of the system on which you
179+are building.
180+In this case, first fetch the newest versions of these files, from
181+@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess}
182+and
183+@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub},
184+respectively, and use these as drop-in replacement for the files
185+@file{config.guess} and @file{config.sub} that were shipped with this
186+package.
187+
188+If this resolves the problem, feel free to report the solution to the
189+maintainers of this package.
190+
191+Otherwise, it means that your system is not yet supported by
192+@file{config.guess} and @file{config.sub}.
193+As a workaround, you can use a configure option
194+@option{--build=@var{type}}, where @var{type} comes closest to your
195+system type.
196+Also, you're welcome to file a report to
197+@email{config-patches@@gnu.org}.
198+
199+@node Configuring a Compiler
200+@section Configuration options specific to a compiler
201+
202+If you are building a compiler, and this compiler should generate code
203+for a system type that is different from the one on which the compiler
204+binaries shall run on, use the option @option{--target=@var{type}} to
205+select the type of system for which the compiler should produce code.
206
207 @node Sharing Defaults
208 @section Sharing Defaults
209@@ -384,9 +468,9 @@ Use @var{dir} as the installation prefix. @ref{Installation Names}
210 for more details, including other options available for fine-tuning
211 the installation locations.
212
213-@item --build=@var{type}
214-Build for architecture @var{type}. @ref{System Type}.
215-for more details, including other system type options.
216+@item --host=@var{type}
217+Build binaries for architecture @var{type}. @ref{System Types} and
218+@ref{Building for a different system type} for more details.
219
220 @item --enable-@var{feature}
221 @itemx --disable-@var{feature}
222--
2232.41.0
224
diff --git a/meta/recipes-devtools/autoconf/autoconf/backports/0029-Shorten-and-improve-INSTALL.patch b/meta/recipes-devtools/autoconf/autoconf/backports/0029-Shorten-and-improve-INSTALL.patch
new file mode 100644
index 0000000000..9129ab789a
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/backports/0029-Shorten-and-improve-INSTALL.patch
@@ -0,0 +1,366 @@
1From d8ca8b323873e5cd9d969a062f70b31db450ba53 Mon Sep 17 00:00:00 2001
2From: Paul Eggert <eggert@cs.ucla.edu>
3Date: Sat, 24 Jun 2023 14:39:34 -0700
4Subject: [PATCH 29/29] Shorten and improve INSTALL
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Rewrite install.texi so that INSTALL is shorter and hopefully
10more useful for new installers.
11* doc/install.texi: When not building the Autoconf manual, put
12copyright notice at the end, and omit external references as they
13do not work in INSTALL.
14Avoid long URLs as they do not work well in INSTALL or
15in info files. Be more consistent (though not entirely
16consistent) about “system” vs “architecture”.
17(System Types, Building for a different system type)
18(Troubleshooting the Build Type): Coalesce into a single section
19and rewrite for clarity and brevity. Mention build-aux. Do not
20mention --target here as it’s too rare to make the cut.
21
22Upstream-Status: Backport
23Signed-off-by: Khem Raj <raj.khem@gmail.com>
24---
25 doc/install.texi | 224 +++++++++++++++++------------------------------
26 1 file changed, 82 insertions(+), 142 deletions(-)
27
28diff --git a/doc/install.texi b/doc/install.texi
29index a3ef17828..6c3a9c21c 100644
30--- a/doc/install.texi
31+++ b/doc/install.texi
32@@ -2,23 +2,13 @@
33 @c the INSTALL file.
34
35 @ifclear autoconf
36-
37 @unnumbered Installation Instructions
38-
39-Copyright @copyright{} 1994--1996, 1999--2002, 2004--2017, 2020--2023
40-Free Software Foundation, Inc.
41-
42-Copying and distribution of this file, with or without modification, are
43-permitted in any medium without royalty provided the copyright notice
44-and this notice are preserved. This file is offered as-is, without
45-warranty of any kind.
46-
47 @end ifclear
48
49 @node Basic Installation
50 @section Basic Installation
51
52-Briefly, the following shell commands:
53+The following shell commands:
54
55 @example
56 test -f configure || ./bootstrap
57@@ -41,8 +31,13 @@ of the features documented below. The lack of an optional feature in a
58 given package is not necessarily a bug.
59 @end ifclear
60 More recommendations for GNU packages can be found in
61+@ifset autoconf
62 @ref{Makefile Conventions, , Makefile Conventions, standards,
63 GNU Coding Standards}.
64+@end ifset
65+@ifclear autoconf
66+the GNU Coding Standards.
67+@end ifclear
68
69 If the @command{bootstrap} shell script exists, it attempts to build the
70 @command{configure} shell script and related files, perhaps by
71@@ -61,8 +56,8 @@ those values to create a @file{Makefile} in each directory of the
72 package. It may also create one or more @file{.h} files containing
73 system-dependent definitions. Finally, it creates a shell script
74 @file{config.status} that you can run in the future to recreate the
75-current configuration, and a file @file{config.log} containing compiler
76-output (useful mainly for debugging @command{configure}).
77+current configuration, and a file @file{config.log} containing
78+output useful for debugging @command{configure}.
79
80 It can also use an optional file (typically called @file{config.cache}
81 and enabled with @option{--cache-file=config.cache} or simply
82@@ -77,10 +72,9 @@ they can be considered for the next release. If you are using the
83 cache, and at some point @file{config.cache} contains results you don't
84 want to keep, you may remove or edit it.
85
86-The file @file{configure.ac} (or @file{configure.in}) is used to create
87-@file{configure} by a program called @command{autoconf}. You need
88-@file{configure.ac} if you want to change it or regenerate
89-@file{configure} using a newer version of @command{autoconf}.
90+The @command{autoconf} program generates @file{configure} from the file
91+@file{configure.ac}. Normally you should edit @file{configure.ac}
92+instead of editing @file{configure} directly.
93
94 The simplest way to compile this package is:
95
96@@ -95,8 +89,7 @@ You may need special developer tools and network access to bootstrap.
97
98 @item
99 Type @samp{./configure} to configure the package for your system.
100-
101-Running @command{configure} might take a while. While running, it prints some
102+This might take a while. While running, @command{configure} prints
103 messages telling which features it is checking for.
104
105 @item
106@@ -125,21 +118,11 @@ code directory by typing @samp{make clean}. To also remove the files
107 that @command{configure} created (so you can compile the package for a
108 different kind of computer), type @samp{make distclean}. There is also
109 a @samp{make maintainer-clean} target, but that is intended mainly for
110-the package's developers. If you use it, you may have to get all sorts
111-of other programs in order to regenerate files that came with the
112-distribution.
113+the package's developers. If you use it, you may have to bootstrap again.
114
115 @item
116-Often, you can also type @samp{make uninstall} to remove the installed
117-files again. In practice, not all packages have tested that
118-uninstallation works correctly, even though it is required by the
119-GNU Coding Standards.
120-
121-@item
122-Some packages, particularly those that use Automake, provide @samp{make
123-distcheck}, which can by used by developers to test that all other
124-targets like @samp{make install} and @samp{make uninstall} work
125-correctly. This target is generally not run by end users.
126+If the package follows the GNU Coding Standards,
127+you can type @samp{make uninstall} to remove the installed files.
128 @end enumerate
129
130 @node Compilers and Options
131@@ -158,21 +141,17 @@ Here is an example:
132 @end example
133
134 See
135-@ref{Defining Variables} and
136+@ref{Defining Variables}
137 @ifset autoconf
138-@ref{Preset Output Variables}
139+and @ref{Preset Output Variables}
140 @end ifset
141-@ifclear autoconf
142-@ref{Preset Output Variables,,, autoconf, Autoconf}
143-@c (@url{https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Preset-Output-Variables.html})
144-@end ifclear
145 for more details.
146
147 @node Multiple Architectures
148 @section Compiling For Multiple Architectures
149
150 You can compile the package for more than one kind of computer at the
151-same time, by placing the object files for each architecture in their
152+same time, by placing the object files for each system in their
153 own directory. To do this, you can use GNU @command{make}.
154 @command{cd} to the directory where you want the object files and
155 executables to go and run the @command{configure} script.
156@@ -182,9 +161,9 @@ known as a @dfn{VPATH} build.
157
158 With a non-GNU @command{make},
159 it is safer to compile the package for one
160-architecture at a time in the source code directory. After you have
161-installed the package for one architecture, use @samp{make distclean}
162-before reconfiguring for another architecture.
163+system at a time in the source code directory. After you have
164+installed the package for one system, use @samp{make distclean}
165+before reconfiguring for another system.
166
167 Some platforms, notably macOS, support ``fat'' or ``universal'' binaries,
168 where a single binary can execute on different architectures.
169@@ -274,117 +253,65 @@ which can be overridden with @code{make V=0}.
170 @node System Types
171 @section Specifying a System Type
172
173-The following sections go into details regarding situations where you
174-may have to specify a system type, either through the option
175-@option{--host=@var{type}}, or through the option
176-@option{--build=@var{type}}, or -- in the case of compilers -- through
177-@option{--target=@var{type}}.
178-
179-A system type @var{type} can either be a short name like @samp{mingw64},
180-or a canonical name like @samp{x86_64-pc-linux-gnu} which has the form:
181-
182-@example
183-@var{cpu}-@var{company}-@var{system}
184-@end example
185-
186-@noindent
187-where @var{system} can have one of these forms:
188+By default @command{configure} builds for the current system.
189+To create binaries that can run on a different system type,
190+specify a @option{--host=@var{type}} option along with compiler
191+variables that specify how to generate object code for @var{type}.
192+For example, to create binaries intended to run on a 64-bit ARM
193+processor:
194
195 @example
196-@var{os}
197-@var{kernel}-@var{os}
198+./configure --host=aarch64-linux-gnu \
199+ CC=aarch64-linux-gnu-gcc \
200+ CXX=aarch64-linux-gnu-g++
201 @end example
202
203 @noindent
204-See the file @file{config.sub} for the possible values of each field.
205-If @file{config.sub} isn't included in this package, then this package
206-doesn't need to know any machine type.
207-
208-The file @file{config.sub} is a program that validates and canonicalizes
209-a system type.
210-It can do canonicalization, as in
211+If done on a machine that can execute these binaries
212+(e.g., via @command{qemu-aarch64}, @env{$QEMU_LD_PREFIX}, and Linux's
213+@code{binfmt_misc} capability), the build behaves like a native build.
214+Otherwise it is a cross-build: @code{configure}
215+will make cross-compilation guesses instead of running test programs,
216+and @code{make check} will not work.
217+
218+A system type can either be a short name like @samp{mingw64},
219+or a canonical name like @samp{x86_64-pc-linux-gnu}.
220+Canonical names have the form @var{cpu}-@var{company}-@var{system}
221+where @var{system} is either @var{os} or @var{kernel}-@var{os}.
222+To canonicalize and validate a system type,
223+you can run the command @file{config.sub},
224+which is often squirreled away in a subdirectory like @file{build-aux}.
225+For example:
226
227 @example
228-$ sh config.sub x86_64-linux
229-x86_64-pc-linux-gnu
230-$ sh config.sub arm64-linux
231+$ build-aux/config.sub arm64-linux
232 aarch64-unknown-linux-gnu
233+$ build-aux/config.sub riscv-lnx
234+Invalid configuration 'riscv-lnx': OS 'lnx' not recognized
235 @end example
236
237 @noindent
238-It also validates the parts. For example, this interaction tells you
239-that ``crusoe'' is not a valid cpu architecture name:
240-
241-@example
242-$ sh config.sub crusoe-linux
243-Invalid configuration `crusoe-linux': machine `crusoe-unknown' not recognized
244-@end example
245-
246-@node Building for a different system type
247-@section Creating binaries for a different system type
248-
249-When you want to create binaries that will run on a different machine
250-type than the one you are building on, you need to specify both
251-@itemize @bullet
252-@item
253-a @option{--host=@var{type}} option, specifying the machine type on
254-which the binaries shall run,
255-@item
256-compiler variables (@code{CC} for the C compiler, @code{CXX} for the C++
257-compiler, and so on), pointing to compilers that generate object code
258-for that machine type.
259-@end itemize
260-
261-For example, to create binaries intended to run on a 64-bit ARM
262-processor:
263-@example
264-./configure --host=aarch64-linux-gnu \
265- CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
266-@end example
267-
268-If you do this on a machine that can execute such binaries (e.g.@: by
269-virtue of the @code{qemu-aarch64} program, system libraries for that
270-architecture under @code{$QEMU_LD_PREFIX}, and a Linux
271-@code{binfmt_misc} configuration), the build behaves like a native
272-build.
273-If not, the build is a cross-build, in the sense that @code{configure}
274-will make cross-compilation guesses instead of running test programs,
275-and ``make check'' will not work.
276-
277-@node Troubleshooting the Build Type
278-@section Fixing a ``cannot guess build type'' error
279-
280-In rare cases, it may happen that @code{configure} fails with the error
281-message ``cannot guess build type''.
282-This error means that the files @file{config.guess} and
283-@file{config.sub} don't recognize the type of the system on which you
284-are building.
285-In this case, first fetch the newest versions of these files, from
286-@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess}
287-and
288-@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub},
289-respectively, and use these as drop-in replacement for the files
290-@file{config.guess} and @file{config.sub} that were shipped with this
291-package.
292-
293-If this resolves the problem, feel free to report the solution to the
294-maintainers of this package.
295-
296-Otherwise, it means that your system is not yet supported by
297-@file{config.guess} and @file{config.sub}.
298-As a workaround, you can use a configure option
299-@option{--build=@var{type}}, where @var{type} comes closest to your
300-system type.
301-Also, you're welcome to file a report to
302+You can look at the @file{config.sub} file to see which types are recognized.
303+If the file is absent, this package does not need the system type.
304+
305+If @command{configure} fails with the diagnostic ``cannot guess build type''.
306+@file{config.sub} did not recognize your system's type.
307+In this case, first fetch the newest versions of these files
308+from the @url{https://savannah.gnu.org/projects/config, GNU config package}.
309+If that fixes things, please report it to the
310+maintainers of the package containing @command{configure}.
311+Otherwise, you can try the configure option
312+@option{--build=@var{type}} where @var{type} comes close to your
313+system type; also, please report the problem to
314 @email{config-patches@@gnu.org}.
315
316-@node Configuring a Compiler
317-@section Configuration options specific to a compiler
318-
319-If you are building a compiler, and this compiler should generate code
320-for a system type that is different from the one on which the compiler
321-binaries shall run on, use the option @option{--target=@var{type}} to
322-select the type of system for which the compiler should produce code.
323+For more details about configuring system types, see
324+@ifset autoconf
325+@ref{Manual Configuration}.
326+@end ifset
327+@ifclear autoconf
328+the Autoconf documentation.
329+@end ifclear
330
331 @node Sharing Defaults
332 @section Sharing Defaults
333@@ -469,8 +396,8 @@ for more details, including other options available for fine-tuning
334 the installation locations.
335
336 @item --host=@var{type}
337-Build binaries for architecture @var{type}. @ref{System Types} and
338-@ref{Building for a different system type} for more details.
339+Build binaries for system @var{type}.
340+@xref{System Types}.
341
342 @item --enable-@var{feature}
343 @itemx --disable-@var{feature}
344@@ -497,6 +424,19 @@ Run the configure checks, but stop before creating any output files.
345 and accepts some other, less widely useful, options.
346 Run @samp{configure --help} for more details.
347
348+@ifclear autoconf
349+@node Copyright notice
350+@section Copyright notice
351+
352+Copyright @copyright{} 1994--1996, 1999--2002, 2004--2017, 2020--2023
353+Free Software Foundation, Inc.
354+
355+Copying and distribution of this file, with or without modification, are
356+permitted in any medium without royalty provided the copyright notice
357+and this notice are preserved. This file is offered as-is, without
358+warranty of any kind.
359+@end ifclear
360+
361 @c Local Variables:
362 @c fill-column: 72
363 @c ispell-local-dictionary: "american"
364--
3652.41.0
366
diff --git a/meta/recipes-devtools/autoconf/autoconf_2.72c.bb b/meta/recipes-devtools/autoconf/autoconf_2.72c.bb
index fe9779e4dd..76130d58a5 100644
--- a/meta/recipes-devtools/autoconf/autoconf_2.72c.bb
+++ b/meta/recipes-devtools/autoconf/autoconf_2.72c.bb
@@ -19,9 +19,41 @@ SRC_URI = " \
19 file://preferbash.patch \ 19 file://preferbash.patch \
20 file://autotest-automake-result-format.patch \ 20 file://autotest-automake-result-format.patch \
21 file://man-host-perl.patch \ 21 file://man-host-perl.patch \
22 " 22 ${BACKPORTS} \
23"
23SRC_URI:append:class-native = " file://no-man.patch" 24SRC_URI:append:class-native = " file://no-man.patch"
24 25
26BACKPORTS = "\
27 file://backports/0001-mention-prototypes-more-prominently-in-NEWS.patch \
28 file://backports/0002-build-run-make-fetch-which-updated-these.patch \
29 file://backports/0003-NEWS-Tighten-up-wording.patch \
30 file://backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch \
31 file://backports/0006-Fix-timing-bug-on-high-speed-builds.patch \
32 file://backports/0007-Support-underquoted-callers-better.patch \
33 file://backports/0008-New-script-for-building-inside-Guix-containers.patch \
34 file://backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch \
35 file://backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch \
36 file://backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch \
37 file://backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch \
38 file://backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch \
39 file://backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch \
40 file://backports/0015-Support-circa-early-2022-Gnulib.patch \
41 file://backports/0016-Improve-year2038-largefile-option-processing.patch \
42 file://backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch \
43 file://backports/0018-Document-limitation-of-BusyBox-tr.patch \
44 file://backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch \
45 file://backports/0020-Tone-down-year-2038-changes.patch \
46 file://backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch \
47 file://backports/0022-Fix-port-of-AC_FUNC_MMAP.patch \
48 file://backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch \
49 file://backports/0024-Improve-AC_FUNC_MMAP-comments.patch \
50 file://backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch \
51 file://backports/0026-Modernize-INSTALL.patch \
52 file://backports/0027-doc-fix-broken-cross-refs.patch \
53 file://backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch \
54 file://backports/0029-Shorten-and-improve-INSTALL.patch \
55"
56
25SRC_URI[sha256sum] = "21b64169c820c6cdf27fc981ca9c2fb615546e5dead92bccf8d92d0784cdd364" 57SRC_URI[sha256sum] = "21b64169c820c6cdf27fc981ca9c2fb615546e5dead92bccf8d92d0784cdd364"
26 58
27RDEPENDS:${PN} = "m4 gnu-config \ 59RDEPENDS:${PN} = "m4 gnu-config \