Patchwork [3/3] gettext: fix implicit build result

login
register
mail settings
Submitter Ming Liu
Date July 17, 2014, 7:58 a.m.
Message ID <1405583899-13188-3-git-send-email-ming.liu@windriver.com>
Download mbox | patch
Permalink /patch/75895/
State New
Headers show

Comments

Ming Liu - July 17, 2014, 7:58 a.m.
Some "once only" variants are being defined instead of standard autoconf
macros, for instance, AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS. The
advantage is that the check for each of the headers will be put only once
into the 'configure' file, therefore it keeps the size down. But there
is also a drawback that the checks then will turn to be statically inserted
to the configure and cannot be conditionalized any more. It will
definitely break the dependencies chosen as internally included.

Turns AC_CHECK_HEADERS_ONCE back to AC_CHECK_HEADERS for those cases.

Signed-off-by: Ming Liu <ming.liu@windriver.com>
---
 .../fix-absolute-header-macro.patch                | 28 ++++++++++++++++++++++
 meta/recipes-core/gettext/gettext_0.18.3.2.bb      |  3 ++-
 2 files changed, 30 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-core/gettext/gettext-0.18.3.2/fix-absolute-header-macro.patch
Ross Burton - July 17, 2014, 9:21 a.m.
On 17 July 2014 08:58, Ming Liu <ming.liu@windriver.com> wrote:
> Some "once only" variants are being defined instead of standard autoconf
> macros, for instance, AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS. The
> advantage is that the check for each of the headers will be put only once
> into the 'configure' file, therefore it keeps the size down. But there
> is also a drawback that the checks then will turn to be statically inserted
> to the configure and cannot be conditionalized any more. It will
> definitely break the dependencies chosen as internally included.

I'm confused as to why this breaks anything, and if it does break
gettext then it's not embedded-specific but an upstream bug in the
configure script, surely.  Can you explain what the problem is?

Ross
Ming Liu - July 17, 2014, 9:38 a.m.
On 07/17/2014 05:21 PM, Burton, Ross wrote:
> On 17 July 2014 08:58, Ming Liu <ming.liu@windriver.com> wrote:
>> Some "once only" variants are being defined instead of standard autoconf
>> macros, for instance, AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS. The
>> advantage is that the check for each of the headers will be put only once
>> into the 'configure' file, therefore it keeps the size down. But there
>> is also a drawback that the checks then will turn to be statically inserted
>> to the configure and cannot be conditionalized any more. It will
>> definitely break the dependencies chosen as internally included.
> I'm confused as to why this breaks anything, and if it does break
> gettext then it's not embedded-specific but an upstream bug in the
> configure script, surely.  Can you explain what the problem is?
Yes, I'd like to explain it a little more.
AC_CHECK_HEADERS_ONCE will statically add some code to 'configure' file 
to force checking headers no matter it's in a condition or not. For example:
   ......
   if test "$gl_cv_libxml_use_included" != yes; then
     ......
     AC_CHECK_HEADERS_ONCE([somehead.h])
     ......
   fi

will always check somehead.h even gl_cv_libxml_use_included equal to 
'yes', then there will be a problem if we want to choose some 
dependency, for instance, libxml2, to be internally included, that means 
not refer to any headers or libraries in system, but oppositely, 
AC_CHECK_HEADERS_ONCE will pull in the header that it's supposed to 
check, and that would break the dependency we intended to set.

//Ming Liu
>
> Ross
>
>

Patch

diff --git a/meta/recipes-core/gettext/gettext-0.18.3.2/fix-absolute-header-macro.patch b/meta/recipes-core/gettext/gettext-0.18.3.2/fix-absolute-header-macro.patch
new file mode 100644
index 0000000..7b6935f
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.18.3.2/fix-absolute-header-macro.patch
@@ -0,0 +1,28 @@ 
+Upstream-Status: Inappropriate [embedded specific]
+
+Some "once only" variants are being defined instead of standard autoconf
+macros, for instance, AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS. The
+advantage is that the check for each of the headers will be put only once
+into the 'configure' file, therefore it keeps the size down. But there is
+also a drawback that the checks then will turn to be statically inserted
+to the configure and cannot be conditionalized any more. It will
+definitely break the dependencies chosen as internally included.
+
+Turns AC_CHECK_HEADERS_ONCE back to AC_CHECK_HEADERS for those cases.
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+---
+ absolute-header.m4 |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gettext-tools/gnulib-m4/absolute-header.m4
++++ b/gettext-tools/gnulib-m4/absolute-header.m4
+@@ -29,7 +29,7 @@ m4_foreach_w([gl_HEADER_NAME], [$1],
+     m4_defn([gl_absolute_header]),
+     [AS_VAR_PUSHDEF([ac_header_exists],
+                     [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl
+-    AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl
++    AC_CHECK_HEADERS(m4_defn([gl_HEADER_NAME]))dnl
+     if test AS_VAR_GET(ac_header_exists) = yes; then
+       gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME]))
+     fi
diff --git a/meta/recipes-core/gettext/gettext_0.18.3.2.bb b/meta/recipes-core/gettext/gettext_0.18.3.2.bb
index 65d4103..9375e86 100644
--- a/meta/recipes-core/gettext/gettext_0.18.3.2.bb
+++ b/meta/recipes-core/gettext/gettext_0.18.3.2.bb
@@ -11,7 +11,8 @@  PROVIDES = "virtual/libintl virtual/gettext"
 PROVIDES_class-native = "virtual/gettext-native"
 RCONFLICTS_${PN} = "proxy-libintl"
 SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
-	   file://parallel.patch \
+           file://parallel.patch \
+           file://fix-absolute-header-macro.patch \
           "
 
 PACKAGECONFIG[msgcat-curses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/..,--disable-curses,ncurses,"