grep-3.10 used this version of autoconf, and so far there's been no indication of trouble, so I'm going to proceed with a snapshot. But first, there was a test failure, and "make fetch" pulled in a few small changes, so here are those two diffs, just pushed. With these, the tests all pass for me on Fedora 37 x86_64.
>From 0b92bd72ca6cae6190ee6b6c95449e4243597e75 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@xxxxxx> Date: Sat, 25 Mar 2023 22:07:19 -0700 Subject: [PATCH 1/2] build: run "make fetch", which updated these: Preparing to make a pre-release snapshot, update these: * build-aux/announce-gen: Update from gnulib * build-aux/gnupload: Likewise. * build-aux/texinfo.tex: Update from texinfo. --- build-aux/announce-gen | 92 +++++++++++++++++++++-- build-aux/gnupload | 2 +- build-aux/texinfo.tex | 166 +++++++++++++++++++++++++++++------------ 3 files changed, 206 insertions(+), 54 deletions(-) diff --git a/build-aux/announce-gen b/build-aux/announce-gen index 6bf48e1b..850619a1 100755 --- a/build-aux/announce-gen +++ b/build-aux/announce-gen @@ -35,7 +35,7 @@ eval 'exec perl -wSx "$0" "$@"' if 0; -my $VERSION = '2022-07-10 01:47'; # UTC +my $VERSION = '2023-02-26 17:15'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -165,6 +165,17 @@ Print the SHA1 and SHA256 signature section for each C<@file>. =cut +# This digest function omits the "=" padding that is required by cksum, +# so add the 0..2 bytes of padding required for each of Digest's algorithms. +sub digest_file_base64_wrap ($$) +{ + my ($file, $alg) = @_; + my $h = digest_file_base64($file, $alg); + $alg =~ tr{-}{}d; + my %pad = (MD5 => 2, SHA1 => 1, SHA256 => 1, SHA384 => 0, SHA512 => 2); + return $h . '=' x $pad{$alg}; +} + sub print_checksums (@) { my (@file) = @_; @@ -176,11 +187,11 @@ sub print_checksums (@) foreach my $f (@file) { - print digest_file_hex($f, "SHA-1"), " $f\n"; - print digest_file_base64($f, "SHA-256"), " $f\n"; + print ' ', digest_file_hex ($f, "SHA-1"), " $f\n"; + print ' ', digest_file_base64_wrap ($f, "SHA-256"), " $f\n"; } - print "\nThe SHA256 checksum is base64 encoded, instead of the\n"; - print "hexadecimal encoding that most checksum tools default to.\n\n"; + print "\nVerify the base64 SHA256 checksum with cksum -a sha256 --check\n"; + print "from coreutils-9.2 or OpenBSD's cksum since 2007.\n\n"; } =item C<print_news_deltas ($news_file, $prev_version, $curr_version) @@ -365,6 +376,38 @@ sub get_tool_versions ($$) return @tool_version_pair; } +# Print a more human-friendly representation of $SEC seconds. +sub readable_interval0($) +{ + my $sec = shift; + $sec < 60 and return "$sec seconds"; + + my $min = int($sec / 60); $sec %= 60; + 30 < $sec and $min++; + $min < 60 and return "$min minutes"; + + my $hr = int($min / 60); $min %= 60; + 30 < $min and $hr++; + $hr < 24 and return "$hr hours"; + + my $day = int($hr / 24); $hr %= 24; + 12 < $hr and $day++; + $day < 50 and return "$day days"; + + my $wk = int($day / 7); $day %= 7; + 4 < $day and $wk++; + return "$wk weeks"; +} + +# Convert e.g., "1 weeks", to "1 week". +sub readable_interval($) +{ + my $interval_str = shift; + my $i = readable_interval0 $interval_str; + $i =~ m{^1 \w+s$} and chop $i; + return $i; +} + { # Use the C locale so that, for instance, "du" does not # print "1,2" instead of "1.2", which would confuse our regexps. @@ -493,9 +536,47 @@ sub get_tool_versions ($$) ${headers}Subject: $my_distdir released [$release_type] <\#secure method=pgpmime mode=sign> +This is to announce $package_name-$curr_version, a $release_type release. FIXME: put comments here +EOF + + my $v0 = $prev_version; + my $v1 = $curr_version; + + (my $first_name = `git config --global user.name|cut -d' ' -f1`) + =~ m{\S} or die "no name? set user.name in ~/.gitconfig\n"; + + chomp (my $n_ci = `git rev-list "v$v0..v$v1" | wc -l`); + chomp (my $n_p = `git shortlog "v$v0..v$v1" | grep -c '^[^ ]'`); + + my $prev_release_date = `git log --pretty=%ct -1 "v$v0"`; + my $this_release_date = `git log --pretty=%ct -1 "v$v1"`; + my $n_seconds = $this_release_date - $prev_release_date; + my $time_since_prev = readable_interval $n_seconds; + my $names = `git shortlog "v$v0..v$v1"|perl -lne '/^(\\w.*):/ and print " ".\$1'`; + + print <<EOF; +There have been $n_ci commits by $n_p people in the $time_since_prev since $v0. + +See the NEWS below for a brief summary. + +Thanks to everyone who has contributed! +The following people contributed changes to this release: + +$names +$first_name [on behalf of the $package_name maintainers] +================================================================== + +Here is the GNU $package_name home page: + http://gnu.org/s/$package_name/ + +For a summary of changes and contributors, see: + http://git.sv.gnu.org/gitweb/?p=$package_name.git;a=shortlog;h=v$v1 +or run this command from a git-cloned $package_name directory: + git shortlog v$v0..v$v1 + EOF if (@url_dir_list == 1 && @tarballs == 1) @@ -587,7 +668,6 @@ keyring: wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg gpg --keyring gnu-keyring.gpg --verify $tarballs[0].sig - EOF my @tool_versions = get_tool_versions (\@tool_list, $gnulib_version); diff --git a/build-aux/gnupload b/build-aux/gnupload index 215a9388..3e8f102e 100755 --- a/build-aux/gnupload +++ b/build-aux/gnupload @@ -398,7 +398,7 @@ upload () for f in $files $base.directive.asc do echo put $f - done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir + done | $dbg sftp -b - download.gnu.org.ua:/incoming/$destdir_topdir ;; /*) dest_host=`echo "$dest" | sed 's,:.*,,'` diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex index 94def084..d2516110 100644 --- a/build-aux/texinfo.tex +++ b/build-aux/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2023-01-17.19} +\def\texinfoversion{2023-03-21.06} % % Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc. % @@ -4722,13 +4722,11 @@ $$% % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} -% \newindex {foo} defines an index named IX. +% \newindex {IX} defines an index named IX. % It automatically defines \IXindex such that % \IXindex ...rest of line... puts an entry in the index IX. % It also defines \IXindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is IX. -% The name of an index should be no more than 2 characters long -% for the sake of vms. % \def\newindex#1{% \expandafter\chardef\csname#1indfile\endcsname=0 @@ -7557,11 +7555,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% \exdentamount=\defbodyindent } -\newtoks\defidx -\newtoks\deftext - -\def\useindex#1{\global\defidx={#1}\ignorespaces} - % Called as \printdefunline \deffooheader{text} % \def\printdefunline#1#2{% @@ -7569,10 +7562,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% \plainfrenchspacing % call \deffooheader: #1#2 \endheader - % create the index entry - \defcharsdefault - \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}% - \temp % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax @@ -7587,6 +7576,24 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\Edefun{\endgraf\medbreak} +% @defblock, @defline do not automatically create index entries +\envdef\defblock{% + \startdefun +} +\let\Edefblock\Edefun + +\def\defline{% + \doingtypefnfalse + \parseargusing\activeparens{\printdefunline\deflineheader}% +} +\def\deflineheader#1 #2 #3\endheader{% + \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} +\def\deftypeline{% + \doingtypefntrue + \parseargusing\activeparens{\printdefunline\deflineheader}% +} + % \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } % % Define \deffoo, \deffoox \Edeffoo and \deffooheader. @@ -7638,56 +7645,51 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi\fi } -\def\defind#1#2{ - \defidx={#1}% - \deftext={#2}% -} - % Untyped functions: % @deffn category name args \makedefun{deffn}#1 #2 #3\endheader{% - \defind{fn}{\code{#2}}% - \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% + \doind{fn}{\code{#2}}% + \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% } % @defop category class name args \makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} \def\defopheaderx#1#2 #3 #4\endheader{% - \defind{fn}{\code{#3}\space\putwordon\ \code{#2}}% - \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% + \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}% + \printdefname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}#1 #2 #3 #4\endheader{% - \defind{fn}{\code{#3}}% + \doind{fn}{\code{#3}}% \doingtypefntrue - \defname{#1}{#2}{#3}\defunargs{#4\unskip}% + \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}% } % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} \def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% - \defind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% + \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% \doingtypefntrue - \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% + \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}#1 #2 #3 #4\endheader{% - \defind{vr}{\code{#3}}% - \defname{#1}{#2}{#3}\defunargs{#4\unskip}% + \doind{vr}{\code{#3}}% + \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}% } % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} \def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% - \defind{vr}{\code{#4}\space\putwordof\ \code{#2}}% - \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% + \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}% + \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: @@ -7703,8 +7705,8 @@ might help (with 'rm \jobname.?? \jobname.??s')% % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% - \defind{tp}{\code{#2}}% - \defname{#1}{}{#2}\defunargs{#3\unskip}% + \doind{tp}{\code{#2}}% + \printdefname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: @@ -7720,14 +7722,14 @@ might help (with 'rm \jobname.?? \jobname.??s')% \makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof} -% \defname, which formats the name of the @def (not the args). +% \printdefname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % -\def\defname#1#2#3{% +\def\printdefname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent @@ -7852,7 +7854,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen -\def\amprm#1 {\ampseentrue{\bf\ }} +\def\amprm#1 {\ampseentrue{\rm\ }} \def\parenfont{% \ifampseen @@ -8176,12 +8178,12 @@ might help (with 'rm \jobname.?? \jobname.??s')% % % We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro % body to be transformed. -% Set \macrobody to the body of the macro, and call \defmacro. +% Set \macrobody to the body of the macro, and call \macrodef. % {\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% -\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}% {\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% -\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}% % Make @ a letter, so that we can make private-to-Texinfo macro names. \edef\texiatcatcode{\the\catcode`\@} @@ -8400,16 +8402,17 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \xdef is used so that macro definitions will survive the file % they're defined in: @include reads the file inside a group. % -\def\defmacro{% +\def\macrodef{% \let\hash=##% convert placeholders to macro parameter chars \ifnum\paramno=1 - \def\xeatspaces##1{##1}% - % This removes the pair of braces around the argument. We don't - % use \eatspaces, because this can cause ends of lines to be lost - % when the argument to \eatspaces is read, leading to line-based - % commands like "@itemize" not being read correctly. + \long\def\xeatspaces##1{##1}% + % We don't use \xeatspaces for single-argument macros, because we + % want to keep ends of lines. This definition removes \xeatspaces + % when \macrobody is expanded below. \else - \let\xeatspaces\relax % suppress expansion + \def\xeatspaces{\string\xeatspaces}% + % This expands \xeatspaces as a sequence of character tokens, which + % stops \scantokens inserting an extra space after the control sequence. \fi \ifcase\paramno % 0 @@ -8575,6 +8578,75 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi \macnamexxx} +% @linemacro + +\parseargdef\linemacro{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty + \paramno=0 + \let\hash\relax + \def\paramlist{\hash 1\endlinemacro}% + \else + \expandafter\linegetparamlist\argl;% + \fi + \begingroup \macrobodyctxt \usembodybackslash + \parselinemacrobody +} + +% Build up \paramlist which will be used as the parameter text for the macro. +% At the end it will be like "#1 #2 #3\endlinemacro". +\def\linegetparamlist#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \linegetparamlistxxx#1,;,% +} +\def\linegetparamlistxxx#1,{% + \if#1;\let\next=\linegetparamlistxxxx + \else \let\next=\linegetparamlistxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\hash\the\paramno}% + \edef\paramlist{\paramlist\hash\the\paramno\space}% + \fi\next} +\def\linegetparamlistxxxx{% + \expandafter\fixparamlist\paramlist\fixparamlist +} +% Replace final space token +\def\fixparamlist#1 \fixparamlist{% + \def\paramlist{#1\endlinemacro}% +} + +% Read the body of the macro, replacing backslash-surrounded variables +% +{\catcode`\ =\other\long\gdef\parselinemacrobody#1@end linemacro{% +\xdef\macrobody{#1}% +\endgroup +\linemacrodef +}} + +% Make the definition +\def\linemacrodef{% + \let\hash=##% + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\parsearg + \expandafter\noexpand\csname\the\macname @@\endcsname + } + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \egroup + \expandafter\noexpand + \csname\the\macname @@@\endcsname##1\noexpand\endlinemacro + } + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter\csname\the\macname @@@\endcsname\paramlist{% + \newlinechar=13 % split \macrobody into lines + \noexpand\scantokens{\macrobody}% + } +} + + + % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. @@ -9566,8 +9638,8 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} -\def\docaption{\checkenv\float \bgroup\scanctxt\defcaption} -\def\defcaption#1#2{\egroup \def#1{#2}} +\def\docaption{\checkenv\float \bgroup\scanctxt\docaptionz} +\def\docaptionz#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. -- 2.40.0.130.g27d43aaaf5 >From 2e25d42eb2f0601f7e780a622191f21a8c09aa48 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@xxxxxx> Date: Sun, 26 Mar 2023 22:08:02 -0700 Subject: [PATCH 2/2] tests: avoid an unwarranted test failure * tests/autotest.at (parallel autotest and signal handling): This test would consistently fail due to an exit status of 0. That was considered failure because the test required a SIGHUP-indicating exit status. However, an status of 0 is perfectly fine, too, so accept that. --- tests/autotest.at | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/autotest.at b/tests/autotest.at index 4367ff29..008153ef 100644 --- a/tests/autotest.at +++ b/tests/autotest.at @@ -1710,7 +1710,7 @@ AT_CHECK([($CONFIG_SHELL ./micro-suite -d -3 5-; echo $? >status) | sed 5q], AT_CHECK([grep '5.*ok' stdout], [1]) # Apparently some shells don't get around to creating 'status' any more. # And ksh93 on FreeBSD uses 256 + 13 instead of 128 + 13 -AT_CHECK([test ! -s status || grep 141 status || grep 269 status], +AT_CHECK([test ! -s status || grep 141 status || grep 269 status || grep ^0 status ], [], [ignore]) AT_CHECK([if test -f micro-suite.dir/7/micro-suite.log; then ]dnl [ echo "shell ignores SIGPIPE" > sigpipe-stamp ]dnl -- 2.40.0.130.g27d43aaaf5