gettext improvements
v2 cover gettext improvements
Hello,
This patch series is an extension of the gettext/host-gettext speedup patch series sent previously.
The first three patches are almost identical, with just a few minor changes:
- Improved the prompt of the Config.in.legacy option in "gettext:
remove support for gettext-tools on target", as suggested by Thomas DS.
- Remove the --disable-tools option from gettext configure options, as suggested by Baruch.
- Add Tested-by tags from Andrew Ruder
Those first three patches can be applied without looking at the last three patches, which are not directly related.
The last three patches fix a situation that our gettext handling was not handling. We were assuming that gettext was *never* necessary for glibc-based builds. However, it turns out that certain programs (for example ecryptfs-utils) need the 'gettext' binary program on the target to get translated strings. It is used in shell scripts in ecryptfs-utils. This was reported at
https://bugs.busybox.net/show_bug.cgi?id=7136 and discussed on IRC with the bug submitter, who tested the proposed patches and confirmed that they work.
The approach is to allow the gettext package to be built even with glibc toolchains. In this case, the gettext-runtime configure script detects that it's not necessary to build libintl, and therefore only the gettext utilities are built and installed on the target. Of course, only packages that need this will select gettext unconditionally (i.e without depending on BR2_NEEDS_GETTEXT or BR2_NEEDS_GETTEXT_IF_LOCALE). This is a quite sensitive change, but I believe it's good to do it early in the development cycle.
Thomas
Thomas Petazzoni (6):
minidlna: do not select BR2_PACKAGE_GETTEXT_TOOLS
gettext: remove support for gettext-tools on target
gettext: optimize build time
gettext: allow building when BR2_NEEDS_GETTEXT is not selected
ecryptfs-utils: select gettext, needed for command line utilities docs/manual: update documentation about gettext handling
Config.in.legacy | 12 +++++++ docs/manual/adding-packages-gettext.txt | 22 +++++++++--- package/ecryptfs-utils/Config.in | 8 +++-- package/gettext/Config.in | 15 -------- .../gettext-03-option-to-disable-tools.patch | 42 ---------------------- .../gettext/gettext-04-remove-examples-tests.patch | 20 ----------- package/gettext/gettext.mk | 30 ++++++++-------- package/minidlna/Config.in | 1 - 8 files changed, 52 insertions(+), 98 deletions(-) delete mode 100644 package/gettext/gettext-03-option-to-disable-tools.patch delete mode 100644 package/gettext/gettext-04-remove-examples-tests.patch
Signature · 1 line
1.9.3
PATCH v2 1/6 minidlna: do not select BR2_PACKAGE_GETTEXT_TOOLS
Commit 9ff640ae30ca588228030faf2c6fd13af292cb66 ("minidlna: needs gettext and host-gettext tools if locale is enabled") modified the minidlna package to fix gettext related issues. As part of this patch, a select of BR2_PACKAGE_GETTEXT_TOOLS was added, which according to the commit title is used to have host-gettext tools installed.
However, this is not what this option is about: this option is about having gettext tools installed on the target.
Since this is not what minidlna needs, and we anyway plan to remove this BR2_PACKAGE_GETTEXT_TOOLS option, this commit removes this incorrect select statement.
--- package/minidlna/Config.in | 1 - 1 file changed, 1 deletion(-)
package/minidlna/Config.in +0 -1
@@ -14,7 +14,6 @@ config BR2_PACKAGE_MINIDLNA select BR2_PACKAGE_LIBJPEG select BR2_PACKAGE_SQLITE select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE - select BR2_PACKAGE_GETTEXT_TOOLS if BR2_NEEDS_GETTEXT_IF_LOCALE help MiniDLNA (aka ReadyDLNA) is server software with the aim of being fully compliant with DLNA/UPnP-AV clients.
Signature · 1 line
1.9.3
PATCH v2 1/6 minidlna: do not select BR2_PACKAGE_GETTEXT_TOOLS
Thomas Petazzoni
<[email protected]> wrote
in
news:1401654214-19384-2-git-send-email-thomas.petazzoni at free-electrons.com:
package/minidlna/Config.in config BR2_PACKAGE_MINIDLNA · line 19
Quoted 12 lines
package/minidlna/Config.in +0
-1@@ -14,7 +14,6 @@ config BR2_PACKAGE_MINIDLNA select BR2_PACKAGE_LIBJPEG select BR2_PACKAGE_SQLITE select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE - select BR2_PACKAGE_GETTEXT_TOOLS if BR2_NEEDS_GETTEXT_IF_LOCALE help MiniDLNA (aka ReadyDLNA) is server software with the aim of being fully compliant with DLNA/UPnP-AV clients.
using this minimal defconfig:
BR2_TOOLCHAIN_BUILDROOT_LARGEFILE=y
BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_PACKAGE_MINIDLNA=y
PATCH v2 1/6 minidlna: do not select BR2_PACKAGE_GETTEXT_TOOLS
In reply to Thomas PetazzoniThomas, All,
On 2014-06-01 22:23 +0200, Thomas Petazzoni spake thusly:
Quoted 9 lines
Commit
9ff640ae30ca588228030faf2c6fd13af292cb66("minidlna: needs gettext and host-gettext tools if locale is enabled") modified the minidlna package to fix gettext related issues. As part of this patch, a select ofBR2_PACKAGE_GETTEXT_TOOLSwas added, which according to the commit title is used to have host-gettext tools installed.However, this is not what this option is about: this option is about having gettext tools installed on the target.
Quoted 7 lines
Since this is not what minidlna needs, and we anyway plan to remove this
BR2_PACKAGE_GETTEXT_TOOLSoption, this commit removes this incorrect select statement.Signed-off-by Thomas Petazzoni <[email protected]>Tested-by Andrew Ruder <[email protected]>Cc Bernd Kuhls <[email protected]>
Regards,
Yann E. MORIN.
Quoted 23 lines
--- package/minidlna/Config.in | 1 - 1 file changed, 1 deletion(-)package/minidlna/Config.in +0
-1@@ -14,7 +14,6 @@ config BR2_PACKAGE_MINIDLNA select BR2_PACKAGE_LIBJPEG select BR2_PACKAGE_SQLITE select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE - select BR2_PACKAGE_GETTEXT_TOOLS if BR2_NEEDS_GETTEXT_IF_LOCALE help MiniDLNA (aka ReadyDLNA) is server software with the aim of being fully compliant with DLNA/UPnP-AV clients.Signature · 6 lines
1.9.3 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v2 2/6 gettext: remove support for gettext-tools on target
In reply to Thomas PetazzoniThis commit removes the BR2_PACKAGE_GETTEXT_TOOLS option, which could be used to install gettext tools on the target. This is not needed, because Buildroot is not designed to provide a full development environment on the target, and gettext translation files should be processed on the build machine, using the host gettext tools.
Remove this option will allow to optimize the build time of gettext on the target, by only building the gettext runtime libraries.
--- Config.in.legacy | 12 ++++++++++++ package/gettext/Config.in | 14 -------------- package/gettext/gettext.mk | 4 ---- 3 files changed, 12 insertions(+), 18 deletions(-)
Config.in.legacy +12 -0
@@ -99,6 +99,18 @@ comment "----------------------------------------------------" endif ############################################################################### +comment "Legacy options removed in 2014.08" + +config BR2_PACKAGE_GETTEXT_TOOLS + bool "support for gettext-tools on target has been removed" + select BR2_LEGACY + help + The option to install the gettext utilities on the target + has been removed. This is not necessary as Buildroot is not + designed to provide a full development environment on the + target. gettext tools should be used on the build machine + instead. + comment "Legacy options removed in 2014.05" config BR2_PACKAGE_EVTEST_CAPTURE
package/gettext/Config.in +0 -14
@@ -13,20 +13,6 @@ config BR2_PACKAGE_GETTEXT http://www.gnu.org/software/gettext/ -if BR2_PACKAGE_GETTEXT - -config BR2_PACKAGE_GETTEXT_TOOLS - bool "Install gettext tools" - depends on BR2_USE_MMU # fork() - depends on BR2_LARGEFILE - select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE - help - This option allows to install the complete gettext suite in - the target filesystem. This is typically not useful for - correct operation of programs. - -endif - comment "gettext needs a toolchain w/ wchar" depends on BR2_NEEDS_GETTEXT depends on !BR2_USE_WCHAR
package/gettext/gettext.mk +0 -4
@@ -46,16 +46,12 @@ ifeq ($(BR2_ENABLE_LOCALE),) GETTEXT_CONF_OPT += --enable-nls endif -# When the gettext tools are not enabled in the configuration, we only -# install libintl to the target. -ifeq ($(BR2_PACKAGE_GETTEXT_TOOLS),) # When static libs are preferred the .so files aren't created ifeq ($(BR2_PREFER_STATIC_LIB),) define GETTEXT_INSTALL_TARGET_CMDS cp -dpf $(STAGING_DIR)/usr/lib/libintl*.so* $(TARGET_DIR)/usr/lib/ endef endif -endif # GETTEXT_TOOLS = n # Disable interactive confirmation in host gettextize for package fixups define HOST_GETTEXT_GETTEXTIZE_CONFIRMATION
Signature · 1 line
1.9.3
PATCH v2 2/6 gettext: remove support for gettext-tools on target
Thomas, All,
On 2014-06-01 22:23 +0200, Thomas Petazzoni spake thusly:
Quoted 11 lines
This commit removes the
BR2_PACKAGE_GETTEXT_TOOLSoption, which could be used to install gettext tools on the target. This is not needed, because Buildroot is not designed to provide a full development environment on the target, and gettext translation files should be processed on the build machine, using the host gettext tools.Remove this option will allow to optimize the build time of gettext on the target, by only building the gettext runtime libraries.
Signed-off-by Thomas Petazzoni <[email protected]>Tested-by Andrew Ruder <[email protected]>
Regards,
Yann E. MORIN.
Quoted 82 lines
--- Config.in.legacy | 12 ++++++++++++ package/gettext/Config.in | 14 -------------- package/gettext/gettext.mk | 4 ---- 3 files changed, 12 insertions(+), 18 deletions(-)Config.in.legacy +12
-0@@ -99,6 +99,18 @@ comment "----------------------------------------------------" endif ############################################################################### +comment "Legacy options removed in 2014.08" + +config BR2_PACKAGE_GETTEXT_TOOLS + bool "support for gettext-tools on target has been removed" + select BR2_LEGACY + help + The option to install the gettext utilities on the target + has been removed. This is not necessary as Buildroot is not + designed to provide a full development environment on the + target. gettext tools should be used on the build machine + instead. + comment "Legacy options removed in 2014.05" config BR2_PACKAGE_EVTEST_CAPTUREpackage/gettext/Config.in +0
-14@@ -13,20 +13,6 @@ config BR2_PACKAGE_GETTEXT http://www.gnu.org/software/gettext/ -if BR2_PACKAGE_GETTEXT - -config BR2_PACKAGE_GETTEXT_TOOLS - bool "Install gettext tools" - depends on BR2_USE_MMU # fork() - depends on BR2_LARGEFILE - select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE - help - This option allows to install the complete gettext suite in - the target filesystem. This is typically not useful for - correct operation of programs. - -endif - comment "gettext needs a toolchain w/ wchar" depends on BR2_NEEDS_GETTEXT depends on !BR2_USE_WCHARpackage/gettext/gettext.mk +0
-4@@ -46,16 +46,12 @@ ifeq ($(BR2_ENABLE_LOCALE),) GETTEXT_CONF_OPT += --enable-nls endif -# When the gettext tools are not enabled in the configuration, we only -# install libintl to the target. -ifeq ($(BR2_PACKAGE_GETTEXT_TOOLS),) # When static libs are preferred the .so files aren't created ifeq ($(BR2_PREFER_STATIC_LIB),) define GETTEXT_INSTALL_TARGET_CMDS cp -dpf $(STAGING_DIR)/usr/lib/libintl*.so* $(TARGET_DIR)/usr/lib/ endef endif -endif # GETTEXT_TOOLS = n # Disable interactive confirmation in host gettextize for package fixups define HOST_GETTEXT_GETTEXTIZE_CONFIRMATIONSignature · 6 lines
1.9.3 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v2 3/6 gettext: optimize build time
In reply to Thomas PetazzoniThis commit significantly reduces the build time of host-gettext and gettext, by using the capacity of gettext to handle build things in a certain subdirectory:
- For the host variant of gettext, we only need the gettext-tools, available in the directory of the same name in the gettext sources.
- For the target variant of gettext, we only need the gettext library libintl, available in the gettext-runtime directory in the gettext sources.
So by using appropriate values of GETTEXT_SUBDIR and HOST_GETTEXT_SUBDIR, we only build what's necessary. Moreover, by manually patching gettext-tools/Makefile.in and gettext-runtime/Makefile.in, we make sure to not build and install things like examples, documentation and so on.
In addition to this, these changes avoid the need to autoreconfigure the gettext package, which was particularly long.
Thanks to these changes, the build time of gettext goes from 1 minutes and 37 seconds to just 24 seconds, and the build of host-gettext goes from 2 minutes and 18 seconds to 1 minute and 13 seconds.
--- .../gettext-03-option-to-disable-tools.patch | 42 ---------------------- .../gettext/gettext-04-remove-examples-tests.patch | 20 ----------- package/gettext/gettext.mk | 26 ++++++++------ 3 files changed, 16 insertions(+), 72 deletions(-) delete mode 100644 package/gettext/gettext-03-option-to-disable-tools.patch delete mode 100644 package/gettext/gettext-04-remove-examples-tests.patch
package/gettext/gettext-03-option-to-disable-tools.patch deleted +0 -42
@@ -1,42 +0,0 @@ -Add a --disable-tools option - -This patch adds a --disable-tools option that allows to disable the -compilation of the gettext tools, which may not be necessary on a -small embedded Linux system. - -Signed-off-by: Thomas Petazzoni <[email protected]> - -Index: b/configure.ac -=================================================================== ---- a/configure.ac -+++ b/configure.ac -@@ -37,6 +37,10 @@ - - dnl Checks for library functions. - -+AC_ARG_ENABLE([tools], [--disable-tools do not build tools], -+ [enable_tools=$enableval], [enable_tools=yes]) -+AM_CONDITIONAL([ENABLE_TOOLS], [test "$enable_tools" = "yes"]) -+ - AC_CONFIG_SUBDIRS([gettext-runtime gettext-tools]) - - dnl Ensure that "configure --help" lists all the command line options that -Index: b/Makefile.am -=================================================================== ---- a/Makefile.am -+++ b/Makefile.am -@@ -20,7 +20,13 @@ - ACLOCAL = build-aux/fixaclocal @ACLOCAL@ - ACLOCAL_AMFLAGS = -I m4 - --SUBDIRS = gnulib-local gettext-runtime gettext-tools -+if ENABLE_TOOLS -+TOOLS_SUBDIR = gettext-tools -+else -+TOOLS_SUBDIR = -+endif -+ -+SUBDIRS = gnulib-local gettext-runtime $(TOOLS_SUBDIR) - - EXTRA_DIST = \ - version.sh DEPENDENCIES PACKAGING HACKING ChangeLog.0 autogen.sh \
package/gettext/gettext-04-remove-examples-tests.patch deleted +0 -20
@@ -1,20 +0,0 @@ -Disable tests and examples - -This patch disables the gettext-tools tests and examples, which are -generally not necessary. - -Signed-off-by: Thomas Petazzoni <[email protected]> - -Index: b/gettext-tools/Makefile.am -=================================================================== ---- a/gettext-tools/Makefile.am -+++ b/gettext-tools/Makefile.am -@@ -20,7 +20,7 @@ - ACLOCAL = ../build-aux/fixaclocal @ACLOCAL@ - ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4 - --SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests examples -+SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 - - EXTRA_DIST = misc/DISCLAIM - MOSTLYCLEANFILES = core *.stackdump
package/gettext/gettext.mk +16 -10
@@ -9,7 +9,6 @@ GETTEXT_SITE = $(BR2_GNU_MIRROR)/gettext GETTEXT_INSTALL_STAGING = YES GETTEXT_LICENSE = GPLv2+ GETTEXT_LICENSE_FILES = COPYING -GETTEXT_AUTORECONF = YES GETTEXT_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) HOST_GETTEXT_DEPENDENCIES = # we don't want the libiconv dependency
@@ -23,8 +22,7 @@ GETTEXT_CONF_OPT += \ --disable-native-java \ --disable-csharp \ --disable-relocatable \ - --without-emacs \ - --disable-tools + --without-emacs HOST_GETTEXT_CONF_OPT = \ --disable-libasprintf \
@@ -37,6 +35,21 @@ HOST_GETTEXT_CONF_OPT = \ --disable-relocatable \ --without-emacs +# For the target version, we only need the runtime, and for the host +# version, we only need the tools. +GETTEXT_SUBDIR = gettext-runtime +HOST_GETTEXT_SUBDIR = gettext-tools + +# Disable the build of documentation and examples of gettext-tools, +# and the build of documentation and tests of gettext-runtime. +define HOST_GETTEXT_DISABLE_UNNEEDED + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/examples$$//' $(@D)/gettext-tools/Makefile.in + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/tests$$//' $(@D)/gettext-runtime/Makefile.in +endef + +GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED +HOST_GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED + # Force build with NLS support, otherwise libintl is not built # This is needed because some packages (eg. libglib2) requires # locales, but do not properly depend on BR2_ENABLE_LOCALE, and
@@ -46,13 +59,6 @@ ifeq ($(BR2_ENABLE_LOCALE),) GETTEXT_CONF_OPT += --enable-nls endif -# When static libs are preferred the .so files aren't created -ifeq ($(BR2_PREFER_STATIC_LIB),) -define GETTEXT_INSTALL_TARGET_CMDS - cp -dpf $(STAGING_DIR)/usr/lib/libintl*.so* $(TARGET_DIR)/usr/lib/ -endef -endif - # Disable interactive confirmation in host gettextize for package fixups define HOST_GETTEXT_GETTEXTIZE_CONFIRMATION $(SED) '/read dummy/d' $(HOST_DIR)/usr/bin/gettextize
Signature · 1 line
1.9.3
PATCH v2 3/6 gettext: optimize build time
Thomas, All,
On 2014-06-01 22:23 +0200, Thomas Petazzoni spake thusly:
Quoted 20 lines
This commit significantly reduces the build time of host-gettext and gettext, by using the capacity of gettext to handle build things in a certain subdirectory:
- For the host variant of gettext, we only need the gettext-tools, available in the directory of the same name in the gettext sources.
- For the target variant of gettext, we only need the gettext library libintl, available in the gettext-runtime directory in the gettext sources.
So by using appropriate values of
GETTEXT_SUBDIRandHOST_GETTEXT_SUBDIR, we only build what's necessary. Moreover, by manually patching gettext-tools/Makefile.in and gettext-runtime/Makefile.in, we make sure to not build and install things like examples, documentation and so on.In addition to this, these changes avoid the need to autoreconfigure the gettext package, which was particularly long.
Quoted 6 lines
Thanks to these changes, the build time of gettext goes from 1 minutes and 37 seconds to just 24 seconds, and the build of host-gettext goes from 2 minutes and 18 seconds to 1 minute and 13 seconds.
Signed-off-by Thomas Petazzoni <[email protected]>Tested-by Andrew Ruder <[email protected]>
On my machine, I got these results:
Before patch After patch Improvement
gettext: 2min 39s 38s x 4.18
host-gettext: 3min 41s 1min 51s x 1.99
Woot! :-)
Not counting the fact that host-automake, host-autoconf, host-libtool, and host-m4 are no longer needed!
I got the same set of libraries and utilities in the staging and target.
Regards,
Yann E. MORIN.
Quoted 147 lines
--- .../gettext-03-option-to-disable-tools.patch | 42 ---------------------- .../gettext/gettext-04-remove-examples-tests.patch | 20 ----------- package/gettext/gettext.mk | 26 ++++++++------ 3 files changed, 16 insertions(+), 72 deletions(-) delete mode 100644 package/gettext/gettext-03-option-to-disable-tools.patch delete mode 100644 package/gettext/gettext-04-remove-examples-tests.patchpackage/gettext/gettext-03-option-to-disable-tools.patch deleted +0
-42@@ -1,42 +0,0 @@ -Add a --disable-tools option - -This patch adds a --disable-tools option that allows to disable the -compilation of the gettext tools, which may not be necessary on a -small embedded Linux system. - -Signed-off-by: Thomas Petazzoni <[email protected]> - -Index: b/configure.ac -=================================================================== ---- a/configure.ac -+++ b/configure.ac -@@ -37,6 +37,10 @@ - - dnl Checks for library functions. - -+AC_ARG_ENABLE([tools], [--disable-tools do not build tools], -+ [enable_tools=$enableval], [enable_tools=yes]) -+AM_CONDITIONAL([ENABLE_TOOLS], [test "$enable_tools" = "yes"]) -+ - AC_CONFIG_SUBDIRS([gettext-runtime gettext-tools]) - - dnl Ensure that "configure --help" lists all the command line options that -Index: b/Makefile.am -=================================================================== ---- a/Makefile.am -+++ b/Makefile.am -@@ -20,7 +20,13 @@ - ACLOCAL = build-aux/fixaclocal @ACLOCAL@ - ACLOCAL_AMFLAGS = -I m4 - --SUBDIRS = gnulib-local gettext-runtime gettext-tools -+if ENABLE_TOOLS -+TOOLS_SUBDIR = gettext-tools -+else -+TOOLS_SUBDIR = -+endif -+ -+SUBDIRS = gnulib-local gettext-runtime $(TOOLS_SUBDIR) - - EXTRA_DIST = \ - version.sh DEPENDENCIES PACKAGING HACKING ChangeLog.0 autogen.sh \package/gettext/gettext-04-remove-examples-tests.patch deleted +0
-20@@ -1,20 +0,0 @@ -Disable tests and examples - -This patch disables the gettext-tools tests and examples, which are -generally not necessary. - -Signed-off-by: Thomas Petazzoni <[email protected]> - -Index: b/gettext-tools/Makefile.am -=================================================================== ---- a/gettext-tools/Makefile.am -+++ b/gettext-tools/Makefile.am -@@ -20,7 +20,7 @@ - ACLOCAL = ../build-aux/fixaclocal @ACLOCAL@ - ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4 - --SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests examples -+SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 - - EXTRA_DIST = misc/DISCLAIM - MOSTLYCLEANFILES = core *.stackdumppackage/gettext/gettext.mk +16
-10@@ -9,7 +9,6 @@ GETTEXT_SITE = $(BR2_GNU_MIRROR)/gettext GETTEXT_INSTALL_STAGING = YES GETTEXT_LICENSE = GPLv2+ GETTEXT_LICENSE_FILES = COPYING -GETTEXT_AUTORECONF = YES GETTEXT_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) HOST_GETTEXT_DEPENDENCIES = # we don't want the libiconv dependency@@ -23,8 +22,7 @@ GETTEXT_CONF_OPT += \ --disable-native-java \ --disable-csharp \ --disable-relocatable \ - --without-emacs \ - --disable-tools + --without-emacs HOST_GETTEXT_CONF_OPT = \ --disable-libasprintf \@@ -37,6 +35,21 @@ HOST_GETTEXT_CONF_OPT = \ --disable-relocatable \ --without-emacs +# For the target version, we only need the runtime, and for the host +# version, we only need the tools. +GETTEXT_SUBDIR = gettext-runtime +HOST_GETTEXT_SUBDIR = gettext-tools + +# Disable the build of documentation and examples of gettext-tools, +# and the build of documentation and tests of gettext-runtime. +define HOST_GETTEXT_DISABLE_UNNEEDED + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/examples$$//' $(@D)/gettext-tools/Makefile.in + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/tests$$//' $(@D)/gettext-runtime/Makefile.in +endef + +GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED +HOST_GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED + # Force build with NLS support, otherwise libintl is not built # This is needed because some packages (eg. libglib2) requires # locales, but do not properly depend on BR2_ENABLE_LOCALE, and@@ -46,13 +59,6 @@ ifeq ($(BR2_ENABLE_LOCALE),) GETTEXT_CONF_OPT += --enable-nls endif -# When static libs are preferred the .so files aren't created -ifeq ($(BR2_PREFER_STATIC_LIB),) -define GETTEXT_INSTALL_TARGET_CMDS - cp -dpf $(STAGING_DIR)/usr/lib/libintl*.so* $(TARGET_DIR)/usr/lib/ -endef -endif - # Disable interactive confirmation in host gettextize for package fixups define HOST_GETTEXT_GETTEXTIZE_CONFIRMATION $(SED) '/read dummy/d' $(HOST_DIR)/usr/bin/gettextizeSignature · 6 lines
1.9.3 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v2 4/6 gettext: allow building when BR2_NEEDS_GETTEXT is not selected
In reply to Thomas PetazzoniUntil now, we thought that gettext was only needed for the target for uClibc toolchains, to provide the gettext functions that are normally provided directly by glibc.
However, the gettext runtime actually does more than providing the equivalent of those C library functions: it also provides certain command line tools, like 'gettext' to get translated strings from the shell. This tool is for example used by certain ecryptfs-utils scripts to get translated strings. It is therefore necessary to be able to build the gettext package even for glibc toolchains.
--- package/gettext/Config.in | 1 - 1 file changed, 1 deletion(-)
package/gettext/Config.in +0 -1
@@ -1,6 +1,5 @@ config BR2_PACKAGE_GETTEXT bool "gettext" - depends on BR2_NEEDS_GETTEXT depends on BR2_USE_WCHAR help The GNU `gettext' utilities are a set of tools that provide a
Signature · 1 line
1.9.3
PATCH v2 5/6 ecryptfs-utils: select gettext, needed for command line utilities
In reply to Thomas PetazzoniThe ecryptfs-utils package requires the 'gettext' program, which is provided by the gettext package, to get translated strings. This is needed regardless of whether the toolchain uses glibc or uClibc.
This issue was reported by 'ausjke' on IRC.
--- package/ecryptfs-utils/Config.in | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
package/ecryptfs-utils/Config.in +6 -2
@@ -2,6 +2,10 @@ config BR2_PACKAGE_ECRYPTFS_UTILS bool "ecryptfs-utils" select BR2_PACKAGE_KEYUTILS select BR2_PACKAGE_LIBNSS + # runtime dependency only, some scripts are using the + # 'gettext' program to get translations + select BR2_PACKAGE_GETTEXT + depends on BR2_USE_WCHAR # gettext depends on BR2_USE_MMU # keyutils depends on !BR2_avr32 && !BR2_microblaze # keyutils depends on BR2_LARGEFILE # libnss
@@ -23,8 +27,8 @@ config BR2_PACKAGE_ECRYPTFS_UTILS http://ecryptfs.org -comment "ecryptfs-utils needs a toolchain w/ largefile, threads" +comment "ecryptfs-utils needs a toolchain w/ largefile, threads, wchar" depends on !BR2_avr32 && !BR2_microblaze depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT depends on BR2_USE_MMU - depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
Signature · 1 line
1.9.3
PATCH v2 6/6 docs/manual: update documentation about gettext handling
In reply to Thomas Petazzoni--- docs/manual/adding-packages-gettext.txt | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-)
docs/manual/adding-packages-gettext.txt +18 -4
@@ -8,10 +8,16 @@ library. Dependencies for this library are fairly complicated and therefore, deserve some explanation. The 'uClibc' C library doesn't implement gettext functionality; -therefore with this C library, a separate gettext must be compiled. On -the other hand, the 'glibc' C library does integrate its own gettext, -and in this case the separate gettext library should not be compiled, -because it creates various kinds of build failures. +therefore with this C library, a separate gettext must be compiled, +which will provide the libintl library. + +On the other hand, the 'glibc' C library does integrate its own +gettext library functions, so it is not necessary to build a separate +libintl library. + +However, certain packages will need some gettext utilities on the +target, such as the +gettext+ program itself, which allows, from the +command line, to retrieve translated strings. Additionally, some packages (such as +libglib2+) do require gettext unconditionally, while other packages (those who support
@@ -44,3 +50,11 @@ should: * use +$(if $(BR2_NEEDS_GETTEXT),gettext)+ in the package +DEPENDENCIES+ variable in the +.mk+ file. +Packages that need the +gettext+ utilities on the target (should be +rare) should: + +* use +select BR2_PACKAGE_GETTEXT+ in their +Config.in+ file, + indicating in a comment above that it's a runtime dependency only. + +* not add any dependency to their +.mk+ file +DEPENDENCIES+ variable. +
Signature · 1 line
1.9.3
PATCH v2 6/6 docs/manual: update documentation about gettext handling
Thomas Petazzoni <[email protected]> schreef:
Quoted 17 lines
Signed-off-by Thomas Petazzoni <[email protected]>---
docs/manual/adding-packages-gettext.txt| 22 ++++++++++++++++++----1 file changed, 18 insertions(+), 4 deletions(-)docs/manual/adding-packages-gettext.txt +0
-0@@ -8,10 +8,16 @@ library. Dependencies for this library are fairly complicated andtherefore, deserve some explanation.
The 'uClibc' C library doesn't implement gettext functionality;
docs/manual/adding-packages-gettext.txt +0
-4-therefore with this C library, a separate gettext must be compiled. On -the other hand, the 'glibc' C library does integrate its own gettext, -and in this case the separate gettext library should not be compiled, -because it creates various kinds of build failures.
docs/manual/adding-packages-gettext.txt library. Dependencies for this library are fairly complicated and · line 20
Quoted 10 lines
docs/manual/adding-packages-gettext.txt +10
-0+therefore with this C library, a separate gettext must be compiled, +which will provide the libintl library. + +On the other hand, the 'glibc' C library does integrate its own +gettext library functions, so it is not necessary to build a separate +libintl library. + +However, certain packages will need some gettext utilities on the +target, such as the +gettext+ program itself, which allows, from the +command line, to retrieve translated strings.
I would reorder as: ... which allows to retrieve translated strings, from the command line.
Quoted 4 lines
Additionally, some packages (such as +libglib2+) do require gettext unconditionally, while other packages (those who support
docs/manual/adding-packages-gettext.txt should: · line 59
Quoted 10 lines
docs/manual/adding-packages-gettext.txt +7
-0@@ -44,3 +50,11 @@ should: * use +$(if $(BR2_NEEDS_GETTEXT),gettext)+ in the package +DEPENDENCIES+ variable in the +.mk+ file. +Packages that need the +gettext+ utilities on the target (should be +rare) should: + +* use +select BR2_PACKAGE_GETTEXT+ in their +Config.in+ file, + indicating in a comment above that it's a runtime dependency only. + +* not add any dependency to their +.mk+ file +DEPENDENCIES+ variable.
I would clarify: not add any gettext dependency...
Also, it should probably be file's, or rewrite as ... to the DEPENDENCIES variable in their .mk file.
Best regards,
Thomas