From c2a5953f179814dd0f4b7e627aae9a009181ed6a Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 29 Apr 2023 11:44:13 -0700 Subject: year2038-recommended: new module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove year2038-required and largefile-required, replacing the former with year2038-recommended and simply removing the latter. This syncs with Autoconf master. * MODULES.html.sh, NEWS, doc/largefile.texi: * all-modules (exclude): Exclude year2038-recommended, not -required. * doc/posix-headers/sys_types.texi, doc/posix-headers/time.texi: * doc/year2038.texi: Mention this. * m4/largefile.m4: Sync from Autoconf. Override existing macros if AC_SYS_YEAR2038_RECOMMENDED is not defined, rather than if AC_SYS_LARGEFILE_REQUIRED is not defined. * modules/largefile-required, modules/year2038-required: Removed. * modules/year2038: Do not depend on largefile; simply use m4/largefile.m4, since we shouldn’t need the extra goodies largefile supplies. * modules/year2038-recommended: New module. --- doc/largefile.texi | 13 ++++++++----- doc/posix-headers/sys_types.texi | 3 +-- doc/posix-headers/time.texi | 3 +-- doc/year2038.texi | 38 +++++++++++++++++++------------------- 4 files changed, 29 insertions(+), 28 deletions(-) (limited to 'doc') diff --git a/doc/largefile.texi b/doc/largefile.texi index b5bfa5116a..574753f10a 100644 --- a/doc/largefile.texi +++ b/doc/largefile.texi @@ -1,22 +1,25 @@ @node Large File Support @section Large File Support -The Gnulib @samp{largefile-required} module provides support for files -2 GiB and larger, or with device or inode numbers exceeding 32 bits. -To this effect, it ensures that types like @code{off_t} and +This module provides support for files 2 GiB and larger, or with +device or inode numbers exceeding 32 bits. +To this effect, it attempts to ensure that types like @code{off_t} and @code{ino_t} are 64-bit, at least on the following platforms: glibc, Mac OS X, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, IRIX, Solaris, Cygwin, mingw, MSVC. -The Gnulib @samp{largefile} module is similar, except that it gives +If the types cannot be made 64-bit, @command{configure} issues a +warning and proceeds. + +This module gives @command{configure} an option @samp{--disable-largefile} that suppresses support for large files. This may be useful if the package links to other libraries whose user-facing ABIs still require @code{off_t} or most other file-related types to be 32-bit on your platform. -Both modules also add to @command{configure} an option +This module also adds to @command{configure} an option @code{--enable-year2038}, needed on some platforms to access files with timestamps past the year 2038. @xref{Avoiding the year 2038 problem}. diff --git a/doc/posix-headers/sys_types.texi b/doc/posix-headers/sys_types.texi index 7590e78695..8739cc2625 100644 --- a/doc/posix-headers/sys_types.texi +++ b/doc/posix-headers/sys_types.texi @@ -38,7 +38,6 @@ are signed integer types that are wider than @code{long}: glibc x32 @end itemize -This module, together with the modules @code{largefile-required} -or @code{largefile}, also defines the type +This module, together with the module @code{largefile}, also defines the type @code{off_t} to a 64-bit integer type on some platforms: mingw, MSVC 14. diff --git a/doc/posix-headers/time.texi b/doc/posix-headers/time.texi index 70814d6cda..c1e22b9369 100644 --- a/doc/posix-headers/time.texi +++ b/doc/posix-headers/time.texi @@ -18,8 +18,7 @@ expressions: NetBSD 5.0. @end itemize -Portability problems fixed by the Gnulib module -@code{year2038} or @code{year2038-required}: +Portability problems fixed by the Gnulib module @code{year2038}: @itemize @item On some platforms where @code{time_t} defaults to 32-bit but can be diff --git a/doc/year2038.texi b/doc/year2038.texi index f0f6d51516..5964601831 100644 --- a/doc/year2038.texi +++ b/doc/year2038.texi @@ -1,7 +1,7 @@ @node Avoiding the year 2038 problem @section Avoiding the year 2038 problem -The ``year 2038 problem'' denotes unpredictable behaviour that will +The @dfn{year 2038 problem} denotes unpredictable behaviour that will likely occur in the year 2038, for programs that use a 32-bit signed integer @samp{time_t} type that cannot represent timestamps on or after 2038-01-19 03:14:08 UTC@. See @@ -26,32 +26,32 @@ suppresses support for post-2038 timestamps. This may be useful if the package links to other libraries whose user-facing ABIs still require @code{time_t} to be 32-bit on your platform. -The Gnulib module @samp{year2038-required} is like @samp{year2038}, -except it rejects platforms where @code{time_t} cannot represent -timestamps after 2038, and it lacks a @option{--disable-year2038} -option. If this module is used and a 32-platform cannot support +The Gnulib module @samp{year2038-recommended} is like @samp{year2038}, +except it by default rejects platforms where @code{time_t} cannot represent +timestamps after 2038. If this module is used and a 32-platform cannot support 64-bit @code{time_t}, one can still fix the year-2038 problem by using a 64-bit instead of a 32-bit build, as noted in the architecture list below. If all else fails one can configure with -@samp{ac_year2038_required=no}; however, the resulting programs will +@option{--disable-year2038}; however, the resulting programs will mishandle timestamps after 2038. -The Gnulib module @samp{year2038-required} is -recommended for packages intended for use on 32-bit platforms -after the year 2038. However, if your package needs to support +The Gnulib module @samp{year2038-recommended} is designed +for packages intended for use on 32-bit platforms +after the year 2038. If your package is commonly built on 32-bit platforms that will not be used after the year 2038, -you can use the @samp{year2038} module instead. +you can use the @samp{year2038} module instead, to save builders +the trouble of configuring with @option{--disable-year2038}. If the Gnulib module @samp{largefile} is used but neither -@samp{year2038} nor @samp{year2038-required} is used, +@samp{year2038} nor @samp{year2038-recommended} is used, @command{configure} will have an option @option{--enable-year2038} that causes @code{configure} to behave as if @samp{year2038} was used. This is for packages that have long used @samp{largefile} but have not gotten around to upgrading their Gnulib module list to include -@samp{year2038} or @samp{year2038-required}. +@samp{year2038} or @samp{year2038-recommended}. @xref{Large File Support}. -With the @samp{year2038-required} module, @command{configure} by +With the @samp{year2038-recommended} module, @command{configure} by default should work on the following 32-bit platforms (or 32-bit ABIs in bi-arch systems): @@ -70,18 +70,18 @@ OpenBSD 5.5 (2014) and later on x86, @item FreeBSD/arm, @item -Minix 3.3. +Minix 3.3 (2014). @end itemize @noindent -Whereas @command{configure} with @samp{year2038-required} will fail on -earlier versions of the abovementioned platforms if a version is listed, -and it will also fail on all versions of the following older 32-bit -platforms or ABIs: +Whereas with @samp{year2038-recommended}, @command{configure} should +by default fail on earlier versions of the abovementioned platforms if +a version is listed, and it should also by default fail on all +versions of the following older 32-bit platforms or ABIs: @itemize @item -Android, +Android on ARMv7 or x86, @item Mac OS X 10.6 (2009) and earlier on x86 and powerpc, @item -- cgit v1.2.1