]> Savannah Git Hosting - gnulib.git/commitdiff
Fix recognition of musl libc on Alpine Linux 3.10.
authorBruno Haible <bruno@clisp.org>
Sat, 19 Sep 2020 13:08:43 +0000 (15:08 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 19 Sep 2020 13:08:43 +0000 (15:08 +0200)
Reported by Jeffrey Walton <noloader@gmail.com> in
<https://lists.gnu.org/archive/html/grep-devel/2020-09/msg00020.html>.

* m4/musl.m4 (gl_MUSL_CANONICAL_HOST): New macro.
(gl_MUSL_LIBC): Require it.
* m4/setlocale_null.m4 (gl_FUNC_SETLOCALE_NULL): Likewise.
* modules/setlocale-null (Files): Add m4/musl.m4.

ChangeLog
m4/musl.m4
m4/setlocale_null.m4
modules/setlocale-null

index 1aa1acc583f51e633c1d1f86e63c3fe8491955ca..ebaa5fb2af632762d923abdce2aafc6f01dcde86 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2020-09-19  Bruno Haible  <bruno@clisp.org>
+
+       Fix recognition of musl libc on Alpine Linux 3.10.
+       Reported by Jeffrey Walton <noloader@gmail.com> in
+       <https://lists.gnu.org/archive/html/grep-devel/2020-09/msg00020.html>.
+       * m4/musl.m4 (gl_MUSL_CANONICAL_HOST): New macro.
+       (gl_MUSL_LIBC): Require it.
+       * m4/setlocale_null.m4 (gl_FUNC_SETLOCALE_NULL): Likewise.
+       * modules/setlocale-null (Files): Add m4/musl.m4.
+
 2020-09-19  Bruno Haible  <bruno@clisp.org>
 
        nl_langinfo: Make multithread-safe on Solaris 10 and Solaris 11.3.
index 252054c99bf9b93fee782f0c8d08b38b65005a74..343c71a7ce5a1d1b04f60000b378a3b2627c192f 100644 (file)
@@ -1,4 +1,4 @@
-# musl.m4 serial 1
+# musl.m4 serial 2
 dnl Copyright (C) 2019-2020 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -9,10 +9,40 @@ dnl with or without modifications, as long as this notice is preserved.
 # <https://lists.gnu.org/archive/html/bug-gnulib/2018-02/msg00079.html>.
 # From Bruno Haible.
 
+# There are three ways to test for musl libc:
+# a. Look at the 'ldd --version' output. This is how config.guess
+#    does it. But it fails on Alpine Linux 3.10, because on this system
+#    'ldd' is a shell script that does not understand the '--version'
+#    option.
+# b. Test whether the header file <bits/alltypes.h> exists.
+# c. Test whether the header file <stdarg.h> defines the macro
+#    __DEFINED_va_list.
+# We use a+c.
+
 AC_DEFUN_ONCE([gl_MUSL_LIBC],
 [
-  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_MUSL_CANONICAL_HOST])
   case "$host_os" in
     *-musl*) AC_DEFINE([MUSL_LIBC], [1], [Define to 1 on musl libc.]) ;;
   esac
 ])
+
+# Like AC_CANONICAL_HOST, except for a fix regarding Alpine Linux 3.10.
+
+AC_DEFUN([gl_MUSL_CANONICAL_HOST],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  case "$host_os" in
+    linux*-gnu*)
+      AC_EGREP_CPP([actually_musl],
+        [#include <stdarg.h>
+         #ifdef __DEFINED_va_list
+          actually_musl
+         #endif
+        ],
+        [host=`echo "$host" | sed -e 's/gnu.*/musl/'`
+         host_os=`echo "$host_os" | sed -e 's/gnu.*/musl/'`
+        ])
+      ;;
+  esac
+])
index c1ee1f799ee2c9c7a33d5edc77b19ea63a06f7d1..20c5c99cc0e660e8d812624d989eac46a9cfcc1e 100644 (file)
@@ -1,4 +1,4 @@
-# setlocale_null.m4 serial 2
+# setlocale_null.m4 serial 3
 dnl Copyright (C) 2019-2020 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,7 +6,7 @@ dnl with or without modifications, as long as this notice is preserved.
 
 AC_DEFUN([gl_FUNC_SETLOCALE_NULL],
 [
-  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_MUSL_CANONICAL_HOST])
   AC_REQUIRE([gl_PTHREADLIB])
   AC_CHECK_HEADERS_ONCE([threads.h])
 
index 2774004ff1f3b4a92fe5b8552123d9a3f1d24c1f..d8c57a240e318e0f68022a84521add4d1ae72e46 100644 (file)
@@ -7,6 +7,7 @@ lib/setlocale_null.c
 lib/setlocale-lock.c
 lib/windows-initguard.h
 m4/setlocale_null.m4
+m4/musl.m4
 m4/threadlib.m4
 m4/visibility.m4