Patchwork bash: fix to build bash/po/ correctly

login
register
mail settings
Submitter Wenlin Kang
Date June 9, 2014, 6:29 a.m.
Message ID <1402295373-27606-2-git-send-email-wenlin.kang@windriver.com>
Download mbox | patch
Permalink /patch/73479/
State New
Headers show

Comments

Wenlin Kang - June 9, 2014, 6:29 a.m.
There was an ignored error while building bash, causing the po/
directory not built out correctly, the log follow:
make[1]: *** No rule to make target `/config.status',
needed by `Makefile'. Stop.
make: [installdirs] Error 2 (ignored)

The cause is that some variable,PACKAGE and VERSION don't be defined,
and others don't get correct value, eg, top_builddir in po/Makevar,
GETTEXT_MACRO_VERSION and MKDIR_P in po/Makefile.in.in and so on.

The patch fixed above problem.

Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
---
 .../bash/bash/fix-to-build-po-correctly.patch      |   87 ++++++++++++++++++++
 meta/recipes-extended/bash/bash_4.3.bb             |    1 +
 2 files changed, 88 insertions(+)
 create mode 100644 meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch
Robert Yang - July 2, 2014, 9:48 a.m.
There are always errors in bash/4.3-r0/temp/log.do_install if we check it:

[snip]
make[1]: *** No rule to make target `/config.status', needed by `Makefile'.  Stop.
[snip]

This patch can fix the problem, and we may also need fix bash's Makefile
to let it exit 1 when error so that bitbake can catch the error.

// Robert

On 06/09/2014 02:29 PM, Wenlin Kang wrote:
> There was an ignored error while building bash, causing the po/
> directory not built out correctly, the log follow:
> make[1]: *** No rule to make target `/config.status',
> needed by `Makefile'. Stop.
> make: [installdirs] Error 2 (ignored)
>
> The cause is that some variable,PACKAGE and VERSION don't be defined,
> and others don't get correct value, eg, top_builddir in po/Makevar,
> GETTEXT_MACRO_VERSION and MKDIR_P in po/Makefile.in.in and so on.
>
> The patch fixed above problem.
>
> Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
> ---
>   .../bash/bash/fix-to-build-po-correctly.patch      |   87 ++++++++++++++++++++
>   meta/recipes-extended/bash/bash_4.3.bb             |    1 +
>   2 files changed, 88 insertions(+)
>   create mode 100644 meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch
>
> diff --git a/meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch b/meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch
> new file mode 100644
> index 0000000..ae3c86a
> --- /dev/null
> +++ b/meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch
> @@ -0,0 +1,87 @@
> +
> +Upstream-Status: Inappropriate [OE specific]
> +Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
> +
> +diff -aurN bash-4.3-org/aclocal.m4 bash-4.3/aclocal.m4
> +--- bash-4.3-org/aclocal.m4	2014-05-23 15:28:54.252565146 +0800
> ++++ bash-4.3/aclocal.m4	2014-05-23 15:33:19.924570133 +0800
> +@@ -3710,6 +3710,14 @@
> +   AC_REQUIRE([AC_PROG_INSTALL])dnl
> +   AC_REQUIRE([AM_MKINSTALLDIRS])dnl
> +   AC_REQUIRE([AM_NLS])dnl
> ++  AC_REQUIRE([AC_PROG_MKDIR_P])dnl
> ++  AC_REQUIRE([AC_PROG_SED])dnl
> ++
> ++  AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
> ++
> ++  dnl Release version of the gettext macros. This is used to ensure that
> ++  dnl the gettext macros and po/Makefile.in.in are in sync.
> ++  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
> +
> +   dnl Perform the following tests also if --disable-nls has been given,
> +   dnl because they are needed for "make dist" to work.
> +@@ -3723,6 +3731,22 @@
> +     :)
> +   AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
> +
> ++ dnl Test whether it is GNU msgfmt >= 0.15.
> ++changequote(,)dnl
> ++  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
> ++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
> ++    *) MSGFMT_015=$MSGFMT ;;
> ++  esac
> ++changequote([,])dnl
> ++  AC_SUBST([MSGFMT_015])
> ++changequote(,)dnl
> ++  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
> ++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
> ++    *) GMSGFMT_015=$GMSGFMT ;;
> ++  esac
> ++changequote([,])dnl
> ++  AC_SUBST([GMSGFMT_015])
> ++
> +   dnl Search for GNU xgettext 0.12 or newer in the PATH.
> +   dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
> +   dnl The second test excludes FreeBSD xgettext.
> +@@ -3733,6 +3757,15 @@
> +   dnl Remove leftover from FreeBSD xgettext call.
> +   rm -f messages.po
> +
> ++  dnl Test whether it is GNU xgettext >= 0.15.
> ++changequote(,)dnl
> ++  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
> ++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
> ++    *) XGETTEXT_015=$XGETTEXT ;;
> ++  esac
> ++changequote([,])dnl
> ++  AC_SUBST([XGETTEXT_015])
> ++
> +   dnl Search for GNU msgmerge 0.11 or newer in the PATH.
> +   AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
> +     [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
> +diff -aurN bash-4.3-org/configure.ac bash-4.3/configure.ac
> +--- bash-4.3-org/configure.ac	2014-05-23 15:28:54.208565145 +0800
> ++++ bash-4.3/configure.ac	2014-05-23 15:29:35.640565923 +0800
> +@@ -1201,6 +1201,10 @@
> + #AC_SUBST(ALLOCA_SOURCE)
> + #AC_SUBST(ALLOCA_OBJECT)
> +
> ++# Define the identity of the package.
> ++AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
> ++AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])dnl
> ++
> + AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
> + 	  lib/intl/Makefile \
> + 	  lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
> +diff -aurN bash-4.3-org/po/Makevars bash-4.3/po/Makevars
> +--- bash-4.3-org/po/Makevars	2014-05-23 15:28:54.204565145 +0800
> ++++ bash-4.3/po/Makevars	2014-05-23 15:30:04.772566469 +0800
> +@@ -5,7 +5,7 @@
> +
> + # These two variables depend on the location of this directory.
> + subdir = po
> +-top_builddir = $(BUILD_DIR)
> ++top_builddir = ..
> +
> + # These options get passed to xgettext.
> + XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ -C
> diff --git a/meta/recipes-extended/bash/bash_4.3.bb b/meta/recipes-extended/bash/bash_4.3.bb
> index 25b7410..a6d7d40 100644
> --- a/meta/recipes-extended/bash/bash_4.3.bb
> +++ b/meta/recipes-extended/bash/bash_4.3.bb
> @@ -10,6 +10,7 @@ SRC_URI = "${GNU_MIRROR}/bash/${BPN}-${PV}.tar.gz;name=tarball \
>              file://build-tests.patch \
>              file://test-output.patch \
>              file://run-ptest \
> +           file://fix-to-build-po-correctly.patch \
>              "
>
>   SRC_URI[tarball.md5sum] = "81348932d5da294953e15d4814c74dd1"
>
Ross Burton - July 2, 2014, 11:21 a.m.
On 2 July 2014 10:48, Robert Yang <liezhi.yang@windriver.com> wrote:
> There are always errors in bash/4.3-r0/temp/log.do_install if we check it:
>
> [snip]
> make[1]: *** No rule to make target `/config.status', needed by `Makefile'.
> Stop.
> [snip]
>
> This patch can fix the problem, and we may also need fix bash's Makefile
> to let it exit 1 when error so that bitbake can catch the error.

Patching aclocal is pointless as it's about to be rewritten, and I
think you'll need a good rationale as to why the configure.ac patches
to export more variables are correct if they're also OE-specific.

Interestingly, telling autotools to invoke autopoint also resolves
this bug, which implies that the real bug is that our home-grown
install-the-i18n-stuff code isn't complete.  So do we fix that, or
just enable autopoint (see poky-contrib:ross/i18n2 for my WIP).

Ross

Patch

diff --git a/meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch b/meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch
new file mode 100644
index 0000000..ae3c86a
--- /dev/null
+++ b/meta/recipes-extended/bash/bash/fix-to-build-po-correctly.patch
@@ -0,0 +1,87 @@ 
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+
+diff -aurN bash-4.3-org/aclocal.m4 bash-4.3/aclocal.m4
+--- bash-4.3-org/aclocal.m4	2014-05-23 15:28:54.252565146 +0800
++++ bash-4.3/aclocal.m4	2014-05-23 15:33:19.924570133 +0800
+@@ -3710,6 +3710,14 @@
+   AC_REQUIRE([AC_PROG_INSTALL])dnl
+   AC_REQUIRE([AM_MKINSTALLDIRS])dnl
+   AC_REQUIRE([AM_NLS])dnl
++  AC_REQUIRE([AC_PROG_MKDIR_P])dnl
++  AC_REQUIRE([AC_PROG_SED])dnl
++
++  AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
++
++  dnl Release version of the gettext macros. This is used to ensure that
++  dnl the gettext macros and po/Makefile.in.in are in sync.
++  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
+ 
+   dnl Perform the following tests also if --disable-nls has been given,
+   dnl because they are needed for "make dist" to work.
+@@ -3723,6 +3731,22 @@
+     :)
+   AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ 
++ dnl Test whether it is GNU msgfmt >= 0.15.
++changequote(,)dnl
++  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
++    *) MSGFMT_015=$MSGFMT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([MSGFMT_015])
++changequote(,)dnl
++  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
++    *) GMSGFMT_015=$GMSGFMT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([GMSGFMT_015])
++
+   dnl Search for GNU xgettext 0.12 or newer in the PATH.
+   dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+   dnl The second test excludes FreeBSD xgettext.
+@@ -3733,6 +3757,15 @@
+   dnl Remove leftover from FreeBSD xgettext call.
+   rm -f messages.po
+ 
++  dnl Test whether it is GNU xgettext >= 0.15.
++changequote(,)dnl
++  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
++    *) XGETTEXT_015=$XGETTEXT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([XGETTEXT_015])
++
+   dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+   AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+     [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
+diff -aurN bash-4.3-org/configure.ac bash-4.3/configure.ac
+--- bash-4.3-org/configure.ac	2014-05-23 15:28:54.208565145 +0800
++++ bash-4.3/configure.ac	2014-05-23 15:29:35.640565923 +0800
+@@ -1201,6 +1201,10 @@
+ #AC_SUBST(ALLOCA_SOURCE)
+ #AC_SUBST(ALLOCA_OBJECT)
+ 
++# Define the identity of the package.
++AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
++AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])dnl
++
+ AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
+ 	  lib/intl/Makefile \
+ 	  lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
+diff -aurN bash-4.3-org/po/Makevars bash-4.3/po/Makevars
+--- bash-4.3-org/po/Makevars	2014-05-23 15:28:54.204565145 +0800
++++ bash-4.3/po/Makevars	2014-05-23 15:30:04.772566469 +0800
+@@ -5,7 +5,7 @@
+ 
+ # These two variables depend on the location of this directory.
+ subdir = po
+-top_builddir = $(BUILD_DIR)
++top_builddir = ..
+ 
+ # These options get passed to xgettext.
+ XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ -C
diff --git a/meta/recipes-extended/bash/bash_4.3.bb b/meta/recipes-extended/bash/bash_4.3.bb
index 25b7410..a6d7d40 100644
--- a/meta/recipes-extended/bash/bash_4.3.bb
+++ b/meta/recipes-extended/bash/bash_4.3.bb
@@ -10,6 +10,7 @@  SRC_URI = "${GNU_MIRROR}/bash/${BPN}-${PV}.tar.gz;name=tarball \
            file://build-tests.patch \
            file://test-output.patch \
            file://run-ptest \
+           file://fix-to-build-po-correctly.patch \
            "
 
 SRC_URI[tarball.md5sum] = "81348932d5da294953e15d4814c74dd1"