Hello, Masanori Ogino <masanori.og...@gmail.com> writes:
> 2016-04-07 11:26 GMT+09:00 Daiki Ueno <u...@gnu.org>: >> Masanori Ogino <masanori.og...@gmail.com> writes: >>> That is why I proposed to have a blacklist of "broken" implementations >>> as an option. >>> >>> AFAIK there have already been some blacklisting in autotools e.g. >>> checking the version of glibc to reject specific broken implementation >>> of a function. Thus, I think it's acceptable to use a blacklist. What >>> do you think about it? >> >> Yes, that sounds like a good idea. But I guess we then need to collect >> information about incompatible implementations. In this regard I'm >> actually not sure if the gettext-tools test coverage can be used as an >> indicator of compatibility. > > Indeed. I was wondering if there is anything could be done in the upcoming gettext release. Let's go back to the original explanation by Bruno: https://lists.gnu.org/archive/html/bug-gnu-utils/2006-03/msg00011.html where he states two things: 1. The purpose of the checks are excluding incompatible implementations, e.g., NetBSD (around 1.5?) and Solaris 7 2. The __GNU_GETTEXT_SUPPORTED_REVISION macro is a recent addition In that case, I guess we could bypass the symbol checks if __GNU_GETTEXT_SUPPORTED_REVISION is defined, as long as broken implementations do not define it. How about the attached patch? Regards, -- Daiki Ueno
>From 77a71921d4925db2abc53a4610e89799e19fb113 Mon Sep 17 00:00:00 2001 From: Daiki Ueno <u...@gnu.org> Date: Thu, 26 May 2016 13:38:57 +0900 Subject: [PATCH] m4: Rely less on internal symbols * gettext-runtime/m4/gettext.m4 (AM_GNU_GETTEXT): Skip checks for the internal symbols _nl_msg_cat_cntr, _nl_domain_bindings, and _nl_expand_alias, if __GNU_GETTEXT_SUPPORTED_REVISION is defined. --- gettext-runtime/m4/gettext.m4 | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/gettext-runtime/m4/gettext.m4 b/gettext-runtime/m4/gettext.m4 index 1f6979a..32ff263 100644 --- a/gettext-runtime/m4/gettext.m4 +++ b/gettext-runtime/m4/gettext.m4 @@ -1,4 +1,4 @@ -# gettext.m4 serial 67 (gettext-0.19.6) +# gettext.m4 serial 68 (gettext-0.19.6) dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -161,13 +161,18 @@ changequote([,])dnl [AC_LANG_PROGRAM( [[ #include <libintl.h> -$gt_revision_test_code +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; +#define _GT_COMPAT (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define _GT_COMPAT 0 +#endif +$gt_revision_test_code ]], [[ bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings +return * gettext ("")$gt_expression_test_code + _GT_COMPAT ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) @@ -193,17 +198,22 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_b [AC_LANG_PROGRAM( [[ #include <libintl.h> -$gt_revision_test_code +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); +#define _GT_COMPAT (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define _GT_COMPAT 0 +#endif +$gt_revision_test_code ]], [[ bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") +return * gettext ("")$gt_expression_test_code + _GT_COMPAT ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) @@ -214,17 +224,22 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a [AC_LANG_PROGRAM( [[ #include <libintl.h> -$gt_revision_test_code +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); +#define _GT_COMPAT (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define _GT_COMPAT 0 +#endif +$gt_revision_test_code ]], [[ bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") +return * gettext ("")$gt_expression_test_code + _GT_COMPAT ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" -- 2.5.5