From: Bruno Haible <bruno@clisp.org>
To: bug-gnulib@gnu.org
Cc: Autoconf <autoconf@gnu.org>, Zack Weinberg <zackw@panix.com>
Subject: Re: gnulib / autoconf sync
Date: Wed, 23 Dec 2020 21:13:41 +0100 [thread overview]
Message-ID: <3651672.U1Lx4NDzno@omega> (raw)
In-Reply-To: <2928710.Y4y4159soz@omega>
[-- Attachment #1: Type: text/plain, Size: 1205 bytes --]
Hi Zack,
Here are patches to sync autoconf with gnulib:
AC_FUNC_CHOWN chown.m4 -> functions.m4
AC_FUNC_GETGROUPS getgroups.m4 -> functions.m4
AC_FUNC_MBRTOWC mbrtowc.m4 -> functions.m4
AC_TYPE_MBSTATE_T mbstate_t.m4 -> types.m4
AC_FUNC_GETMNTENT mountlist.m4 -> functions.m4
AC_FUNC_OBSTACK obstack.m4 -> functions.m4
The changes are mostly minor; the main purpose is
1) to be able to do this sync more easily in the future,
2) to wrap some of these definitions in
m4_version_prereq([2.70.1], [], [
in Gnulib.
There are still some remaining differences: Gnulib offers a
configure option --enable-cross-guesses={conservative|risky}
that determines how cross-compilation guesses work in case of
unknown platforms. --enable-cross-guesses=conservative is
the default. However, when an operating system developer (on a
platform which is not yet known to gnulib) builds packages for
their platform, they want to expose, not hide, possible platform
bugs; in this case, --enable-cross-guesses=risky is the appropriate
choice. Autoconf does not have such an option.
Bruno
[-- Attachment #2: 0001-Port-AC_FUNC_CHOWN-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 3681 bytes --]
From f6f709a5d37fa5b8309bfd7d88f2b7f3daeeac1c Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:13:17 +0100
Subject: [PATCH 1/6] Port AC_FUNC_CHOWN fixes from Gnulib.
* lib/autoconf/functions.m4 (AC_FUNC_CHOWN): Support compiling without
-loldnames on native Windows. Improve cross-compilation guesses. When
cross-compiling, say "guessing ...".
---
lib/autoconf/functions.m4 | 82 ++++++++++++++++++++++++++++-------------------
1 file changed, 49 insertions(+), 33 deletions(-)
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 12f60b9..a86048f 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -470,39 +470,55 @@ AU_ALIAS([AC_ALLOCA], [AC_FUNC_ALLOCA])
# Determine whether chown accepts arguments of -1 for uid and gid.
AN_FUNCTION([chown], [AC_FUNC_CHOWN])
AC_DEFUN([AC_FUNC_CHOWN],
-[AC_REQUIRE([AC_TYPE_UID_T])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-AC_CACHE_CHECK([for working chown], ac_cv_func_chown_works,
-[AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
-#include <fcntl.h>
-],
-[[ char *f = "conftest.chown";
- struct stat before, after;
-
- if (creat (f, 0600) < 0)
- return 1;
- if (stat (f, &before) < 0)
- return 1;
- if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
- return 1;
- if (stat (f, &after) < 0)
- return 1;
- return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid);
-]])],
- [ac_cv_func_chown_works=yes],
- [ac_cv_func_chown_works=no],
- [case "$host_os" in # ((
- # Guess yes on glibc systems.
- *-gnu*) ac_cv_func_chown_works=yes ;;
- # If we don't know, assume the worst.
- *) ac_cv_func_chown_works=no ;;
- esac])
-rm -f conftest.chown
-])
-if test $ac_cv_func_chown_works = yes; then
- AC_DEFINE(HAVE_CHOWN, 1,
- [Define to 1 if your system has a working `chown' function.])
-fi
+[
+ AC_REQUIRE([AC_TYPE_UID_T])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+ AC_CACHE_CHECK([for working chown],
+ [ac_cv_func_chown_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT
+ [#include <fcntl.h>
+ #if defined _WIN32 && !defined __CYGWIN__
+ #define creat _creat
+ #endif
+ ]],
+ [[
+ char *f = "conftest.chown";
+ struct stat before, after;
+
+ if (creat (f, 0600) < 0)
+ return 1;
+ if (stat (f, &before) < 0)
+ return 1;
+ if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
+ return 1;
+ if (stat (f, &after) < 0)
+ return 1;
+ return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid);
+ ]])
+ ],
+ [ac_cv_func_chown_works=yes],
+ [ac_cv_func_chown_works=no],
+ [case "$host_os" in # ((
+ # Guess yes on Linux systems.
+ linux-* | linux) ac_cv_func_chown_works="guessing yes" ;;
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) ac_cv_func_chown_works="guessing yes" ;;
+ # Guess no on native Windows.
+ mingw*) ac_cv_func_chown_works="guessing no" ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_chown_works="guessing no" ;;
+ esac
+ ])
+ rm -f conftest.chown
+ ])
+ case "$ac_cv_func_chown_works" in
+ *yes)
+ AC_DEFINE([HAVE_CHOWN], [1],
+ [Define to 1 if your system has a working `chown' function.])
+ ;;
+ esac
])# AC_FUNC_CHOWN
--
2.7.4
[-- Attachment #3: 0002-Port-AC_FUNC_GETGROUPS-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 3870 bytes --]
From 9e34baba2a6ed10b31de343c25bb28e7ac8f290d Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:19:05 +0100
Subject: [PATCH 2/6] Port AC_FUNC_GETGROUPS fixes from Gnulib.
* lib/autoconf/functions.m4 (AC_FUNC_GETGROUPS): Improve cross-compilation
guesses.
---
lib/autoconf/functions.m4 | 79 ++++++++++++++++++++++++++---------------------
1 file changed, 43 insertions(+), 36 deletions(-)
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index a86048f..003e9ce 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -689,44 +689,51 @@ fi
# When cross-compiling, assume getgroups is broken.
AN_FUNCTION([getgroups], [AC_FUNC_GETGROUPS])
AC_DEFUN([AC_FUNC_GETGROUPS],
-[AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
-AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-AC_CHECK_FUNC(getgroups)
+[
+ AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+ AC_CHECK_FUNC([getgroups])
-# If we don't yet have getgroups, see if it's in -lbsd.
-# This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
-ac_save_LIBS=$LIBS
-if test $ac_cv_func_getgroups = no; then
- AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
-fi
+ # If we don't yet have getgroups, see if it's in -lbsd.
+ # This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
+ ac_save_LIBS=$LIBS
+ if test $ac_cv_func_getgroups = no; then
+ AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
+ fi
-# Run the program to test the functionality of the system-supplied
-# getgroups function only if there is such a function.
-if test $ac_cv_func_getgroups = yes; then
- AC_CACHE_CHECK([for working getgroups], ac_cv_func_getgroups_works,
- [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
- [[/* On Ultrix 4.3, getgroups (0, 0) always fails. */
- return getgroups (0, 0) == -1;]])],
- [ac_cv_func_getgroups_works=yes],
- [ac_cv_func_getgroups_works=no],
- [case "$host_os" in # ((
- # Guess yes on glibc systems.
- *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) ac_cv_func_getgroups_works="guessing no" ;;
- esac])
- ])
-else
- ac_cv_func_getgroups_works=no
-fi
-case "$ac_cv_func_getgroups_works" in
- *yes)
- AC_DEFINE(HAVE_GETGROUPS, 1,
- [Define to 1 if your system has a working `getgroups' function.])
- ;;
-esac
-LIBS=$ac_save_LIBS
+ # Run the program to test the functionality of the system-supplied
+ # getgroups function only if there is such a function.
+ if test $ac_cv_func_getgroups = yes; then
+ AC_CACHE_CHECK([for working getgroups], [ac_cv_func_getgroups_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT],
+ [[/* On NeXTstep 3.2, getgroups (0, 0) always fails. */
+ return getgroups (0, 0) == -1;]])
+ ],
+ [ac_cv_func_getgroups_works=yes],
+ [ac_cv_func_getgroups_works=no],
+ [case "$host_os" in # ((
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) ac_cv_func_getgroups_works="guessing yes" ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_getgroups_works="guessing no" ;;
+ esac
+ ])
+ ])
+ else
+ ac_cv_func_getgroups_works=no
+ fi
+ case "$ac_cv_func_getgroups_works" in
+ *yes)
+ AC_DEFINE([HAVE_GETGROUPS], [1],
+ [Define to 1 if your system has a working `getgroups' function.])
+ ;;
+ esac
+ LIBS=$ac_save_LIBS
])# AC_FUNC_GETGROUPS
--
2.7.4
[-- Attachment #4: 0003-Port-minor-AC_FUNC_MBRTOWC-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 1404 bytes --]
From 15afcdea97a17a48fff9c8c1bf51b9a1264916b1 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:24:29 +0100
Subject: [PATCH 3/6] Port minor AC_FUNC_MBRTOWC fixes from Gnulib.
* lib/autoconf/functions.m4 (AC_FUNC_MBRTOWC): Quote systematically. Don't use
quadrigraphs.
---
lib/autoconf/functions.m4 | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 003e9ce..a74c6c4 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1016,19 +1016,19 @@ AN_FUNCTION([mbrtowc], [AC_FUNC_MBRTOWC])
AC_DEFUN([AC_FUNC_MBRTOWC],
[
AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
- ac_cv_func_mbrtowc,
+ [ac_cv_func_mbrtowc],
[AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
- [[@%:@include <wchar.h>]],
+ [[#include <wchar.h>]],
[[wchar_t wc;
char const s[] = "";
size_t n = 1;
mbstate_t state;
return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
- ac_cv_func_mbrtowc=yes,
- ac_cv_func_mbrtowc=no)])
+ [ac_cv_func_mbrtowc=yes],
+ [ac_cv_func_mbrtowc=no])])
if test $ac_cv_func_mbrtowc = yes; then
- AC_DEFINE([HAVE_MBRTOWC], 1,
+ AC_DEFINE([HAVE_MBRTOWC], [1],
[Define to 1 if mbrtowc and mbstate_t are properly declared.])
fi
])
--
2.7.4
[-- Attachment #5: 0004-Provide-minor-AC_FUNC_GETMNTENT-improvements-from-Gn.patch --]
[-- Type: text/x-patch, Size: 1250 bytes --]
From 2191713f6d145ef1c7f889fe01f08ed2b55edec8 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:31:37 +0100
Subject: [PATCH 4/6] Provide minor AC_FUNC_GETMNTENT improvements from Gnulib.
* lib/autoconf/functions.m4 (AC_FUNC_GETMNTENT): Drop support for IRIX 4 and
Dynix/ptx.
---
lib/autoconf/functions.m4 | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index a74c6c4..001a165 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -891,13 +891,11 @@ AU_ALIAS([AC_GETLOADAVG], [AC_FUNC_GETLOADAVG])
# -----------------
AN_FUNCTION([getmntent], [AC_FUNC_GETMNTENT])
AC_DEFUN([AC_FUNC_GETMNTENT],
-[# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
-# -lseq on Dynix/PTX, -lgen on Unixware.
-AC_SEARCH_LIBS(getmntent, [sun seq gen],
- [ac_cv_func_getmntent=yes
- AC_DEFINE([HAVE_GETMNTENT], 1,
- [Define to 1 if you have the `getmntent' function.])],
- [ac_cv_func_getmntent=no])
+[
+ # getmntent is in the standard C library on most systems, but in -lgen on
+ # Unixware.
+ AC_SEARCH_LIBS([getmntent], [gen])
+ AC_CHECK_FUNCS([getmntent])
])
--
2.7.4
[-- Attachment #6: 0005-Port-AC_FUNC_OBSTACK-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 2293 bytes --]
From eea496940c993b84ef5139846d891276ef0f3117 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:37:04 +0100
Subject: [PATCH 5/6] Port AC_FUNC_OBSTACK fixes from Gnulib.
* lib/autoconf/functions.m4 (AC_FUNC_OBSTACK): Do not assume system-supplied
obstack is size_t safe.
---
lib/autoconf/functions.m4 | 41 ++++++++++++++++++++++++-----------------
1 file changed, 24 insertions(+), 17 deletions(-)
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 001a165..c56a71a 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1444,23 +1444,30 @@ AU_ALIAS([AC_MMAP], [AC_FUNC_MMAP])
AN_FUNCTION([obstack_init], [AC_FUNC_OBSTACK])
AN_IDENTIFIER([obstack], [AC_FUNC_OBSTACK])
AC_DEFUN([AC_FUNC_OBSTACK],
-[AC_LIBSOURCES([obstack.h, obstack.c])dnl
-AC_CACHE_CHECK([for obstacks], ac_cv_func_obstack,
-[AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
- [@%:@include "obstack.h"]],
- [[struct obstack mem;
- @%:@define obstack_chunk_alloc malloc
- @%:@define obstack_chunk_free free
- obstack_init (&mem);
- obstack_free (&mem, 0);]])],
- [ac_cv_func_obstack=yes],
- [ac_cv_func_obstack=no])])
-if test $ac_cv_func_obstack = yes; then
- AC_DEFINE(HAVE_OBSTACK, 1, [Define to 1 if libc includes obstacks.])
-else
- AC_LIBOBJ(obstack)
-fi
+[
+ AC_LIBSOURCES([obstack.h, obstack.c])dnl
+ AC_CACHE_CHECK([for obstacks that work with any size object],
+ [ac_cv_func_obstack],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include "obstack.h"
+ void *obstack_chunk_alloc (size_t n) { return 0; }
+ void obstack_chunk_free (void *p) { }
+ /* Check that an internal function returns size_t, not int. */
+ size_t _obstack_memory_used (struct obstack *);
+ ]],
+ [[struct obstack mem;
+ obstack_init (&mem);
+ obstack_free (&mem, 0);
+ ]])],
+ [ac_cv_func_obstack=yes],
+ [ac_cv_func_obstack=no])])
+ if test "$ac_cv_func_obstack" = yes; then
+ AC_DEFINE([HAVE_OBSTACK], [1],
+ [Define to 1 if the system has obstacks that work with any size object.])
+ else
+ AC_LIBOBJ([obstack])
+ fi
])# AC_FUNC_OBSTACK
--
2.7.4
[-- Attachment #7: 0006-Port-AC_TYPE_MBSTATE_T-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 1879 bytes --]
From 71692c4b05af76c55bdedd90fb046346a7c84884 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:40:34 +0100
Subject: [PATCH 6/6] Port AC_TYPE_MBSTATE_T fixes from Gnulib.
* lib/autoconf/types.m4 (AC_TYPE_MBSTATE_T): Add support for HP-UX 11.11. Quote
systematically.
---
lib/autoconf/types.m4 | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
index fff850a..05ed1d5 100644
--- a/lib/autoconf/types.m4
+++ b/lib/autoconf/types.m4
@@ -570,21 +570,25 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
# AC_TYPE_MBSTATE_T
# -----------------
AC_DEFUN([AC_TYPE_MBSTATE_T],
- [AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [AC_INCLUDES_DEFAULT
-# include <wchar.h>],
- [mbstate_t x; return sizeof x;])],
- [ac_cv_type_mbstate_t=yes],
- [ac_cv_type_mbstate_t=no])])
- if test $ac_cv_type_mbstate_t = yes; then
- AC_DEFINE([HAVE_MBSTATE_T], 1,
- [Define to 1 if <wchar.h> declares mbstate_t.])
- else
- AC_DEFINE([mbstate_t], int,
- [Define to a type if <wchar.h> does not define.])
- fi])
+[
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11
+
+ AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT[
+ #include <wchar.h>]],
+ [[mbstate_t x; return sizeof x;]])],
+ [ac_cv_type_mbstate_t=yes],
+ [ac_cv_type_mbstate_t=no])])
+ if test $ac_cv_type_mbstate_t = yes; then
+ AC_DEFINE([HAVE_MBSTATE_T], [1],
+ [Define to 1 if <wchar.h> declares mbstate_t.])
+ else
+ AC_DEFINE([mbstate_t], [int],
+ [Define to a type if <wchar.h> does not define.])
+ fi
+])
# AC_TYPE_UID_T
--
2.7.4
next prev parent reply other threads:[~2020-12-23 20:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAAnfSTuEDX_Wv+GtdRuRVtr72qP5oZQEJ12BVOMyTHx9mtMNCg@mail.gmail.com>
[not found] ` <CAKCAbMic4FXC-aDz1BRXH6T-obyQEbTLKCA1-YFc-82jDbF6Fg@mail.gmail.com>
[not found] ` <CAAnfSTu5zYm=4zrpHf-i8x9tyXBLJ-4yy+BJLKM-HFncLvm3zw@mail.gmail.com>
[not found] ` <CAKCAbMjSsJK8hkgkT+OTGcOrUqJGUvptZmK3AeC9ZsmVGAD1TQ@mail.gmail.com>
2020-12-20 14:49 ` Request to revert the C version change Zack Weinberg
2020-12-20 16:46 ` Bruno Haible
2020-12-20 16:54 ` Ross Burton
2020-12-20 17:09 ` Zack Weinberg
2020-12-20 17:48 ` Zack Weinberg
2020-12-23 19:20 ` Zack Weinberg
2021-01-04 14:23 ` Ross Burton
2020-12-20 17:02 ` Zack Weinberg
2020-12-23 20:04 ` gnulib / autoconf sync Bruno Haible
2020-12-23 20:13 ` Bruno Haible [this message]
2020-12-24 0:58 ` Autoconf version number after 2.70 Paul Eggert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://lists.gnu.org/mailman/listinfo/bug-gnulib
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3651672.U1Lx4NDzno@omega \
--to=bruno@clisp.org \
--cc=autoconf@gnu.org \
--cc=bug-gnulib@gnu.org \
--cc=zackw@panix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).