]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Make internationalization tests stricter on musl systems.
authorBruno Haible <bruno@clisp.org>
Tue, 13 Jun 2023 23:43:50 +0000 (01:43 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 15 Jun 2023 09:26:58 +0000 (11:26 +0200)
* gettext-tools/m4/locale-de.m4 (gt_LOCALE_DE_UTF8): On musl systems, set
LOCALE_DE_UTF8 to "de_DE.UTF-8" instead of "none".

gettext-tools/m4/locale-de.m4

index b252a25ece9bf5245ff7ed1725a4fc733af55c07..b5ab877cf08c457dc00736c606146b959019bf9e 100644 (file)
@@ -1,5 +1,5 @@
-# locale-de.m4 serial 2
-dnl Copyright (C) 2003, 2005-2018 Free Software Foundation, Inc.
+# locale-de.m4 serial 3
+dnl Copyright (C) 2003-2023 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -9,9 +9,19 @@ dnl From Bruno Haible.
 dnl Determine the name of a german locale with UTF-8 encoding.
 AC_DEFUN([gt_LOCALE_DE_UTF8],
 [
+  AC_REQUIRE([AC_CANONICAL_HOST])
   AC_REQUIRE([AM_LANGINFO_CODESET])
   AC_CACHE_CHECK([for a german Unicode locale], [gt_cv_locale_de_utf8], [
-    AC_LANG_CONFTEST([AC_LANG_SOURCE([[
+    case "$host_os" in
+      *-musl* | midipix*)
+        dnl On musl libc, all kinds of ll_CC.UTF-8 locales exist, even without
+        dnl any locale file on disk. But they are effectively equivalent to the
+        dnl C.UTF-8 locale, except for locale categories (such as LC_MESSSAGES)
+        dnl for which localizations (.mo files) have been installed.
+        gt_cv_locale_de_utf8=de_DE.UTF-8
+        ;;
+      *)
+        AC_LANG_CONFTEST([AC_LANG_SOURCE([[
 #include <locale.h>
 #include <time.h>
 #if HAVE_LANGINFO_CODESET
@@ -73,50 +83,52 @@ int main () {
 #endif
   return 0;
 }
-      ]])])
-    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
-      case "$host_os" in
-        # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
-        # "fr" or "fra" as "French" or "French_France.1252",
-        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
-        # and similar.
-        mingw*)
-          # Test for the hypothetical native Windows locale name.
-          if (LC_ALL=German_Germany.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
-            gt_cv_locale_de_utf8=German_Germany.65001
-          else
-            # None found.
-            gt_cv_locale_de_utf8=none
-          fi
-          ;;
-        *)
-          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
-          # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
-          # configure script would override the LC_ALL setting. Likewise for
-          # LC_CTYPE, which is also set at the beginning of the configure script.
-          # Test for the usual locale name.
-          if (LC_ALL=de_DE LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
-            gt_cv_locale_de_utf8=de_DE
-          else
-            # Test for the locale name with explicit encoding suffix.
-            if (LC_ALL=de_DE.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
-              gt_cv_locale_de_utf8=de_DE.UTF-8
-            else
-              # Test for the Solaris 7 locale name.
-              if (LC_ALL=de.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
-                gt_cv_locale_de_utf8=de.UTF-8
+          ]])])
+        if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+          case "$host_os" in
+            # Handle native Windows specially, because there setlocale() interprets
+            # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+            # "fr" or "fra" as "French" or "French_France.1252",
+            # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+            # "ja" as "Japanese" or "Japanese_Japan.932",
+            # and similar.
+            mingw*)
+              # Test for the hypothetical native Windows locale name.
+              if (LC_ALL=German_Germany.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_de_utf8=German_Germany.65001
               else
                 # None found.
                 gt_cv_locale_de_utf8=none
               fi
-            fi
-          fi
-          ;;
-      esac
-    fi
-    rm -fr conftest*
+              ;;
+            *)
+              # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+              # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
+              # configure script would override the LC_ALL setting. Likewise for
+              # LC_CTYPE, which is also set at the beginning of the configure script.
+              # Test for the usual locale name.
+              if (LC_ALL=de_DE LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_de_utf8=de_DE
+              else
+                # Test for the locale name with explicit encoding suffix.
+                if (LC_ALL=de_DE.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_de_utf8=de_DE.UTF-8
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=de.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_de_utf8=de.UTF-8
+                  else
+                    # None found.
+                    gt_cv_locale_de_utf8=none
+                  fi
+                fi
+              fi
+              ;;
+          esac
+        fi
+        rm -fr conftest*
+        ;;
+    esac
   ])
   LOCALE_DE_UTF8=$gt_cv_locale_de_utf8
   AC_SUBST([LOCALE_DE_UTF8])