Re: On time64 and Large File Support
> On 13 Nov 2022, at 05:11, Zack Weinberg wrote: > > On Sat, Nov 12, 2022, at 4:33 PM, Zack Weinberg wrote: >> On Sat, Nov 12, 2022, at 4:31 PM, Paul Eggert wrote: >>> Because of the concerns raised in this thread it's become clear that >>> what's in Autoconf now is too drastic, and I've proposed (though not yet >>> implemented) a change that will cause AC_SYS_LARGEFILE to continue to >>> not affect time_t unless there's an affirmative request like >>> "./configure --enable-year2038". >> >> I am tinkering with an implementation of this right now; more in a couple >> hours. > > "A couple hours" more like eight, ugh. > > I have not pushed this, and have only tested it lightly on a current Linux. > It needs testing on weird old systems, particularly old AIX, HP-UX, MinGW. > > I don't think a 2.72 release tomorrow is realistic anymore. The soonest > after that I will be able to do one is next weekend, but that should give > people time to experiment with this. > The approach sounds right from reading NEWS but I haven't looked at the patch itself yet (or tried it anywhere). I hope to find some time this week but all of the interesting systems I have access to are still Linux, so not that interesting for the purposes of testing this. signature.asc Description: Message signed with OpenPGP
Re: On time64 and Large File Support
[dropping non-autoconf lists from Cc] On 2022-11-13, Zack Weinberg wrote: > I have not pushed this, and have only tested it lightly on a current Linux. > It needs testing on weird old systems, particularly old AIX, HP-UX, MinGW. I'd be happy to give it a go on my weird old systems ... > > I don't think a 2.72 release tomorrow is realistic anymore. The soonest > after that I will be able to do one is next weekend, but that should give > people time to experiment with this. ... but I'm unable to build current git master at all: % ./bootstrap [ok, no errors] % ./configure [...] checking for Perl >=5.10.0 with Time::HiRes::stat... /usr/bin/perl [...] [ok, no errors] % make CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/srv/home/nbowler/misc/autoconf/build-aux/missing' aclocal-1.16 -I m4 configure.ac:28: warning: AC_INIT: not a literal: bug-autoc...@gnu.org cd . && /bin/sh /srv/home/nbowler/misc/autoconf/build-aux/missing automake-1.16 --gnu configure.ac:28: warning: AC_INIT: not a literal: bug-autoc...@gnu.org CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/srv/home/nbowler/misc/autoconf/build-aux/missing' autoconf configure.ac:28: warning: AC_INIT: not a literal: bug-autoc...@gnu.org /bin/sh ./config.status --recheck running CONFIG_SHELL=/bin/sh /bin/sh ./configure --no-create --no-recursion ./configure: 6: cannot create .: Is a directory ./configure: 6: cannot create .: Is a directory [...] checking for Perl >=5.10.0 with Time::HiRes::stat... configure: error: no acceptable perl could be found in $PATH. Perl 5.10.0 or later is required, with Time::HiRes::stat. make: *** [Makefile:969: config.status] Error 1 Am I missing a step here? I normally build from releases. It looks like the bootstrap procedure has changed compared to 2.71, which builds OK for me from git (using autoreconf instead of the bootstrap script). Cheers, Nick
Re: On time64 and Large File Support
On Tue, Nov 15, 2022, at 12:49 PM, Nick Bowler wrote: > On 2022-11-13, Zack Weinberg wrote: >> I have not pushed this, and have only tested it lightly on a current Linux. >> It needs testing on weird old systems, particularly old AIX, HP-UX, MinGW. > > I'd be happy to give it a go on my weird old systems ... I forgot to mention at the time: Testing on systems *where time_t is only 32 bits wide by default* is especially useful. > /bin/sh ./config.status --recheck > running CONFIG_SHELL=/bin/sh /bin/sh ./configure --no-create > --no-recursion > ./configure: 6: cannot create .: Is a directory > ./configure: 6: cannot create .: Is a directory > [...] > checking for Perl >=5.10.0 with Time::HiRes::stat... configure: > error: no acceptable perl could be found in $PATH. > Perl 5.10.0 or later is required, with Time::HiRes::stat. > make: *** [Makefile:969: config.status] Error 1 The procedure you used should have worked, assuming $PATH did not change from step to step. One possible explanation is that there's a bug with building in the source directory -- at step 2, try instead mkdir _build cd _build ../configure Another possible explanation is that the bootstrap operation didn't set file timestamps accurately (perhaps because the filesystem you're on doesn't support high-resolution time stamps) and so it's trying to regenerate 'configure' with an _older_ autoconf which trips over some state left by the bootstrap process. Another thing to try is ./bootstrap sleep 2 && touch aclocal.m4 && sleep 2 && touch Makefile.in && sleep 2 && touch configure ./configure sleep 2 && touch config.status && sleep 2 && touch tests/aclocal Makefile lib/version.m4 make Please let us know if either of those things helps. zw
Re: On time64 and Large File Support
On 2022-11-15, Zack Weinberg wrote: > On Tue, Nov 15, 2022, at 12:49 PM, Nick Bowler wrote: >> On 2022-11-13, Zack Weinberg wrote: >>> I have not pushed this, and have only tested it lightly on a current >>> Linux. >>> It needs testing on weird old systems, particularly old AIX, HP-UX, >>> MinGW. >> >> I'd be happy to give it a go on my weird old systems ... > > I forgot to mention at the time: Testing on systems *where time_t is only > 32 bits wide by default* is especially useful. > >> /bin/sh ./config.status --recheck >> running CONFIG_SHELL=/bin/sh /bin/sh ./configure --no-create >> --no-recursion >> ./configure: 6: cannot create .: Is a directory >> ./configure: 6: cannot create .: Is a directory >> [...] >> checking for Perl >=5.10.0 with Time::HiRes::stat... configure: >> error: no acceptable perl could be found in $PATH. >> Perl 5.10.0 or later is required, with Time::HiRes::stat. >> make: *** [Makefile:969: config.status] Error 1 > > The procedure you used should have worked, assuming $PATH did not change > from step to step. One possible explanation is that there's a bug with > building in the source directory -- at step 2, try instead > > mkdir _build > cd _build > ../configure > > Another possible explanation is that the bootstrap operation didn't set file > timestamps accurately (perhaps because the filesystem you're on doesn't > support high-resolution time stamps) and so it's trying to regenerate > 'configure' with an _older_ autoconf which trips over some state left by the > bootstrap process. Another thing to try is > > ./bootstrap > sleep 2 && touch aclocal.m4 && sleep 2 && touch Makefile.in && sleep 2 && > touch configure > ./configure > sleep 2 && touch config.status && sleep 2 && touch tests/aclocal Makefile > lib/version.m4 > make > > Please let us know if either of those things helps. It does appear to be regenerating configure with an old autoconf version (2.69). But neither suggestion makes any difference. Timestamps seem OK; it appears that make is deciding to aclocal.m4 (and then configure) because of prerequisites that do not exist outright: % make -d [...] Considering target file 'aclocal.m4'. [...] Prerequisite 'autoconf/autoupdate.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/autoscan.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/general.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/status.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/autoheader.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/autotest.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/programs.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/lang.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/c.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/erlang.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/fortran.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/go.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/functions.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/headers.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/types.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/libs.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/specific.m4' of target 'aclocal.m4' does not exist. Prerequisite 'autoconf/oldnames.m4' of target 'aclocal.m4' does not exist. Prerequisite 'm4/autobuild.m4' is older than target 'aclocal.m4'. Prerequisite 'm4/m4.m4' is older than target 'aclocal.m4'. Prerequisite 'm4/make-case.m4' is older than target 'aclocal.m4'. Prerequisite 'm4/perl-time-hires.m4' is older than target 'aclocal.m4'. Prerequisite 'configure.ac' is older than target 'aclocal.m4'. Must remake target 'aclocal.m4'. (as there is a dummy rule for all of these files their non-existence triggers a rebuild instead of a fatal error). OK, the files seem to be in lib/autoconf in the repository, so I used the following procedure which seems to to work: % mkdir autoconf % cp lib/autoconf/*.m4 autoconf/ % ./bootstrap % ./configure % make Cheers, Nick
Re: On time64 and Large File Support
On Tue, Nov 15, 2022, at 2:02 PM, Nick Bowler wrote: > But neither suggestion makes any difference. Timestamps seem OK; it > appears that make is deciding to aclocal.m4 (and then configure) because > of prerequisites that do not exist outright: > > % make -d > [...] >Considering target file 'aclocal.m4'. > [...] > Prerequisite 'autoconf/autoupdate.m4' of target 'aclocal.m4' > does not exist. > Prerequisite 'autoconf/autoscan.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'autoconf/general.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'autoconf/status.m4' of target 'aclocal.m4' does not exist. > Prerequisite 'autoconf/autoheader.m4' of target 'aclocal.m4' > does not exist. > Prerequisite 'autoconf/autotest.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'autoconf/programs.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'autoconf/lang.m4' of target 'aclocal.m4' does not exist. > Prerequisite 'autoconf/c.m4' of target 'aclocal.m4' does not exist. > Prerequisite 'autoconf/erlang.m4' of target 'aclocal.m4' does not exist. > Prerequisite 'autoconf/fortran.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'autoconf/go.m4' of target 'aclocal.m4' does not exist. > Prerequisite 'autoconf/functions.m4' of target 'aclocal.m4' does > not exist. > Prerequisite 'autoconf/headers.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'autoconf/types.m4' of target 'aclocal.m4' does not exist. > Prerequisite 'autoconf/libs.m4' of target 'aclocal.m4' does not exist. > Prerequisite 'autoconf/specific.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'autoconf/oldnames.m4' of target 'aclocal.m4' does not > exist. > Prerequisite 'm4/autobuild.m4' is older than target 'aclocal.m4'. > Prerequisite 'm4/m4.m4' is older than target 'aclocal.m4'. > Prerequisite 'm4/make-case.m4' is older than target 'aclocal.m4'. > Prerequisite 'm4/perl-time-hires.m4' is older than target 'aclocal.m4'. > Prerequisite 'configure.ac' is older than target 'aclocal.m4'. Huh. This is probably a bug in the bootstrap script. The files from lib/autoconf/ shouldn't be dependencies of aclocal.m4 at all, I don't think. I'll look into this more on the weekend. zw