bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: make check fails for gettext-0.16 under Solaris 9


From: Bruno Haible
Subject: Re: make check fails for gettext-0.16 under Solaris 9
Date: Tue, 12 Dec 2006 15:11:00 +0100
User-agent: KMail/1.9.1

Ralf Menzel wrote:
> I had at look at the failure of the recode-sr-latin-2 test. Here is my
> conclusion:
> 
> 1. recode-sr-latin-2 tries to find out if there is a EUC-JP locale on
>    my system by calling testlocale (in gettext-tools/tests).
> 
> 2. I have no EUC-JP locale installed on my system.
> 
> 3. testlocale does only test locales on systems where the following
>    holds:
> 
>    defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2)
> 
> 4. As this doesn't hold here (Solaris 9) testlocale claims that my
>    system does have a EUC-JP locale.

Thank you for the analysis. I'm applying this patch, to fix it.


gettext-tools/ChangeLog
2006-12-10  Bruno Haible  <address@hidden>

        * configure.ac: Invoke gt_LOCALE_JA.

gettext-tools/m4/ChangeLog
2006-12-10  Bruno Haible  <address@hidden>

        * locale-ja.m4: New file.
        * Makefile.am (EXTRA_DIST): Add it.

gettext-tools/tests/ChangeLog
2006-12-10  Bruno Haible  <address@hidden>

        Fix a test failure on Solaris.
        * Makefile.am (TESTS_ENVIRONMENT): Also set LOCALE_JA.
        * recode-sr-latin-2: Use the LOCALE_JA value from the Makefile,
        instead of using the 'testlocale' program.

diff -r -c3 --exclude='*.po*' --exclude='*.info*' --exclude='*_*.html' 
--exclude='*.*.html' --exclude='*.[13]' --exclude='*.1.in' 
--exclude=Makefile.in --exclude=aclocal.m4 --exclude=configure 
--exclude=config.h.in --exclude=version.texi --exclude=stamp-vti 
--exclude='po-*-gen*.[ch]' --exclude='*.o' --exclude='*.lo' --exclude='*.gmo' 
--exclude=ABOUT-NLS --exclude=gnulib-lib --exclude=gnulib-m4 
--exclude=Makefile.gnulib --exclude='javadoc[12]' --exclude=CVS 
gettext-cvs/gettext-tools/configure.ac gettext-6/gettext-tools/configure.ac
*** gettext-cvs/gettext-tools/configure.ac      Thu Oct 26 04:59:28 2006
--- gettext-6/gettext-tools/configure.ac        Mon Dec 11 01:54:07 2006
***************
*** 289,298 ****
  CROSS_COMPILING=$cross_compiling
  AC_SUBST(CROSS_COMPILING)
  
! dnl Checks for optional programs for the tests/lang-* tests.
  gt_PROG_ANSI_CXX
  gt_LOCALE_FR
  gt_LOCALE_FR_UTF8
  
  dnl Check whether to execute tests that rely on libasprintf.
  dnl This test must be consistent with gettext-runtime/configure.ac.
--- 289,299 ----
  CROSS_COMPILING=$cross_compiling
  AC_SUBST(CROSS_COMPILING)
  
! dnl Checks for optional programs for the tests/lang-*, tests/recode-* tests.
  gt_PROG_ANSI_CXX
  gt_LOCALE_FR
  gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
  
  dnl Check whether to execute tests that rely on libasprintf.
  dnl This test must be consistent with gettext-runtime/configure.ac.
diff -r -c3 --exclude='*.po*' --exclude='*.info*' --exclude='*_*.html' 
--exclude='*.*.html' --exclude='*.[13]' --exclude='*.1.in' 
--exclude=Makefile.in --exclude=aclocal.m4 --exclude=configure 
--exclude=config.h.in --exclude=version.texi --exclude=stamp-vti 
--exclude='po-*-gen*.[ch]' --exclude='*.o' --exclude='*.lo' --exclude='*.gmo' 
--exclude=ABOUT-NLS --exclude=gnulib-lib --exclude=gnulib-m4 
--exclude=Makefile.gnulib --exclude='javadoc[12]' --exclude=CVS 
gettext-cvs/gettext-tools/m4/Makefile.am gettext-6/gettext-tools/m4/Makefile.am
*** gettext-cvs/gettext-tools/m4/Makefile.am    Sun Oct  1 21:35:42 2006
--- gettext-6/gettext-tools/m4/Makefile.am      Mon Dec 11 01:53:20 2006
***************
*** 48,53 ****
--- 48,54 ----
  hostname.m4 \
  libgrep.m4 \
  locale-fr.m4 \
+ locale-ja.m4 \
  openmp.m4 \
  regex.m4 \
  setlocale.m4 \
Only in gettext-6/gettext-tools/m4: locale-ja.m4
diff -r -c3 --exclude='*.po*' --exclude='*.info*' --exclude='*_*.html' 
--exclude='*.*.html' --exclude='*.[13]' --exclude='*.1.in' 
--exclude=Makefile.in --exclude=aclocal.m4 --exclude=configure 
--exclude=config.h.in --exclude=version.texi --exclude=stamp-vti 
--exclude='po-*-gen*.[ch]' --exclude='*.o' --exclude='*.lo' --exclude='*.gmo' 
--exclude=ABOUT-NLS --exclude=gnulib-lib --exclude=gnulib-m4 
--exclude=Makefile.gnulib --exclude='javadoc[12]' --exclude=CVS 
gettext-cvs/gettext-tools/tests/Makefile.am 
gettext-6/gettext-tools/tests/Makefile.am
*** gettext-cvs/gettext-tools/tests/Makefile.am Wed Oct  4 03:35:20 2006
--- gettext-6/gettext-tools/tests/Makefile.am   Mon Dec 11 01:54:56 2006
***************
*** 173,178 ****
--- 173,179 ----
                    TESTLIBASPRINTF='@TESTLIBASPRINTF@' \
                    LOCALE_FR='@LOCALE_FR@' \
                    LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+                   LOCALE_JA='@LOCALE_JA@' \
                    host_os='@host_os@' \
                    CONFIG_SHELL='$(SHELL)' \
                    $(SHELL)
diff -r -c3 --exclude='*.po*' --exclude='*.info*' --exclude='*_*.html' 
--exclude='*.*.html' --exclude='*.[13]' --exclude='*.1.in' 
--exclude=Makefile.in --exclude=aclocal.m4 --exclude=configure 
--exclude=config.h.in --exclude=version.texi --exclude=stamp-vti 
--exclude='po-*-gen*.[ch]' --exclude='*.o' --exclude='*.lo' --exclude='*.gmo' 
--exclude=ABOUT-NLS --exclude=gnulib-lib --exclude=gnulib-m4 
--exclude=Makefile.gnulib --exclude='javadoc[12]' --exclude=CVS 
gettext-cvs/gettext-tools/tests/recode-sr-latin-2 
gettext-6/gettext-tools/tests/recode-sr-latin-2
*** gettext-cvs/gettext-tools/tests/recode-sr-latin-2   Sun Jun 18 06:13:59 2006
--- gettext-6/gettext-tools/tests/recode-sr-latin-2     Mon Dec 11 02:03:22 2006
***************
*** 8,32 ****
  trap 'rm -fr $tmpfiles' 1 2 3 15
  
  # Test whether a specific EUC-JP locale is installed.
! case "$host_os" in
!   aix*)
!     LOCALE_JA_EUCJP=ja_JP ;;
!   hpux* | osf* | netbsd*)
!     LOCALE_JA_EUCJP=ja_JP.eucJP ;;
!   irix* | freebsd* | darwin*)
!     LOCALE_JA_EUCJP=ja_JP.EUC ;;
!   *)
!     LOCALE_JA_EUCJP=ja_JP.EUC-JP ;;
! esac
! if test $LOCALE_JA_EUCJP != none; then
!   LC_ALL=$LOCALE_JA_EUCJP ./testlocale 2>/dev/null
!   case $? in
!     0) ;;
!     77) LOCALE_JA_EUCJP=none;;
!     *) exit 1;;
!   esac
! fi
! if test $LOCALE_JA_EUCJP = none; then
    if test -f /usr/bin/localedef; then
      echo "Skipping test: no japanese EUC-JP locale is installed"
    else
--- 8,23 ----
  trap 'rm -fr $tmpfiles' 1 2 3 15
  
  # Test whether a specific EUC-JP locale is installed.
! : ${LOCALE_JA=ja_JP}
! #if test $LOCALE_JA != none; then
! #  LC_ALL=$LOCALE_JA ./testlocale 2>/dev/null
! #  case $? in
! #    0) ;;
! #    77) LOCALE_JA=none;;
! #    *) exit 1;;
! #  esac
! #fi
! if test $LOCALE_JA = none; then
    if test -f /usr/bin/localedef; then
      echo "Skipping test: no japanese EUC-JP locale is installed"
    else
***************
*** 37,49 ****
  
  # Test whether locale_charset() in this locale really returns EUC-JP.
  # (On some systems, config.charset supports only UTF-8 locales.)
! case "$host_os" in
!   darwin[56]*) ;;
!   darwin* | beos*)
!     echo "Skipping test: no EUC-JP locale is supported"
!     rm -fr $tmpfiles; exit 77
!     ;;
! esac
  
  tmpfiles="$tmpfiles rec-srl-2.in"
  cat <<\EOF > rec-srl-2.in
--- 28,40 ----
  
  # Test whether locale_charset() in this locale really returns EUC-JP.
  # (On some systems, config.charset supports only UTF-8 locales.)
! #case "$host_os" in
! #  darwin[56]*) ;;
! #  darwin* | beos*)
! #    echo "Skipping test: no EUC-JP locale is supported"
! #    rm -fr $tmpfiles; exit 77
! #    ;;
! #esac
  
  tmpfiles="$tmpfiles rec-srl-2.in"
  cat <<\EOF > rec-srl-2.in
***************
*** 53,59 ****
  
  tmpfiles="$tmpfiles rec-srl-2.out"
  : ${RECODE=recode}
! LC_ALL=$LOCALE_JA_EUCJP \
  ${RECODE}-sr-latin < rec-srl-2.in > rec-srl-2.out \
    || { rm -fr $tmpfiles; exit 1; }
  
--- 44,50 ----
  
  tmpfiles="$tmpfiles rec-srl-2.out"
  : ${RECODE=recode}
! LC_ALL=$LOCALE_JA \
  ${RECODE}-sr-latin < rec-srl-2.in > rec-srl-2.out \
    || { rm -fr $tmpfiles; exit 1; }
  
========================= gettext-tools/m4/locale-ja.m4 ======================
# locale-ja.m4 serial 1 (gettext-0.16.2)
dnl Copyright (C) 2003, 2005-2006 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.

dnl From Bruno Haible.

dnl Determine the name of a japanese locale with EUC-JP encoding.
AC_DEFUN([gt_LOCALE_JA],
[
  AC_REQUIRE([AC_CANONICAL_HOST])
  AC_REQUIRE([AM_LANGINFO_CODESET])
  AC_CACHE_CHECK([for a traditional japanese locale], gt_cv_locale_ja, [
    macosx=
    case "$host_os" in
      darwin[56]*) ;;
      darwin*) macosx=yes;;
    esac
    if test -n "$macosx"; then
      # On Darwin 7 (MacOS X), the libc supports some locales in non-UTF-8
      # encodings, but the kernel does not support them. The documentation
      # says:
      #   "... all code that calls BSD system routines should ensure
      #    that the const *char parameters of these routines are in UTF-8
      #    encoding. All BSD system functions expect their string
      #    parameters to be in UTF-8 encoding and nothing else."
      # See the comments in config.charset. Therefore we bypass the test.
      gt_cv_locale_ja=none
    else
      AC_LANG_CONFTEST([AC_LANG_SOURCE([
changequote(,)dnl
#include <locale.h>
#include <time.h>
#if HAVE_LANGINFO_CODESET
# include <langinfo.h>
#endif
struct tm t;
char buf[16];
int main ()
{
  const char *p;
  /* Check whether the given locale name is recognized by the system.  */
  if (setlocale (LC_ALL, "") == NULL) return 1;
  /* Check whether nl_langinfo(CODESET) is nonempty.
     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.  */
#if HAVE_LANGINFO_CODESET
  if (nl_langinfo (CODESET) [0] == '\0') return 1;
#endif
  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
     This excludes the UTF-8 encoding.  */
  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
  for (p = buf; *p != '\0'; p++)
    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
      return 1;
  return 0;
}
changequote([,])dnl
        ])])
      if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
        # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
        # otherwise on MacOS 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 AIX locale name.
        if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
          gt_cv_locale_ja=ja_JP
        else
          # Test for the locale name with explicit encoding suffix.
          if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
            gt_cv_locale_ja=ja_JP.EUC-JP
          else
            # Test for the HP-UX, OSF/1, NetBSD locale name.
            if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
              gt_cv_locale_ja=ja_JP.eucJP
            else
              # Test for the IRIX, FreeBSD locale name.
              if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
                gt_cv_locale_ja=ja_JP.EUC
              else
                # Test for the Solaris 7 locale name.
                if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; 
then
                  gt_cv_locale_ja=ja
                else
                  # Special test for NetBSD 1.6.
                  if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
                    gt_cv_locale_ja=ja_JP.eucJP
                  else
                    # None found.
                    gt_cv_locale_ja=none
                  fi
                fi
              fi
            fi
          fi
        fi
      fi
      rm -fr conftest*
    fi
  ])
  LOCALE_JA=$gt_cv_locale_ja
  AC_SUBST([LOCALE_JA])
])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]