From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCHv2 3/6] gettext: optimize build time
Date: Mon, 9 Jun 2014 00:26:19 +0200 [thread overview]
Message-ID: <20140608222619.GU3266@free.fr> (raw)
In-Reply-To: <1401654214-19384-4-git-send-email-thomas.petazzoni@free-electrons.com>
Thomas, All,
On 2014-06-01 22:23 +0200, Thomas Petazzoni spake thusly:
> 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_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.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Tested-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>
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.
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> .../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
>
> diff --git a/package/gettext/gettext-03-option-to-disable-tools.patch b/package/gettext/gettext-03-option-to-disable-tools.patch
> deleted file mode 100644
> index 24a9996..0000000
> --- a/package/gettext/gettext-03-option-to-disable-tools.patch
> +++ /dev/null
> @@ -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 <thomas.petazzoni@free-electrons.com>
> -
> -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 \
> diff --git a/package/gettext/gettext-04-remove-examples-tests.patch b/package/gettext/gettext-04-remove-examples-tests.patch
> deleted file mode 100644
> index f7d88d9..0000000
> --- a/package/gettext/gettext-04-remove-examples-tests.patch
> +++ /dev/null
> @@ -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 <thomas.petazzoni@free-electrons.com>
> -
> -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
> diff --git a/package/gettext/gettext.mk b/package/gettext/gettext.mk
> index 52a72db..948ab9d 100644
> --- a/package/gettext/gettext.mk
> +++ b/package/gettext/gettext.mk
> @@ -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
> --
> 1.9.3
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| 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. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2014-06-08 22:26 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-01 20:23 [Buildroot] [PATCHv2 0/6] gettext improvements Thomas Petazzoni
2014-06-01 20:23 ` [Buildroot] [PATCHv2 1/6] minidlna: do not select BR2_PACKAGE_GETTEXT_TOOLS Thomas Petazzoni
2014-06-02 20:29 ` Bernd Kuhls
2014-06-08 20:55 ` Yann E. MORIN
2014-06-01 20:23 ` [Buildroot] [PATCHv2 2/6] gettext: remove support for gettext-tools on target Thomas Petazzoni
2014-06-08 21:27 ` Yann E. MORIN
2014-06-01 20:23 ` [Buildroot] [PATCHv2 3/6] gettext: optimize build time Thomas Petazzoni
2014-06-08 22:26 ` Yann E. MORIN [this message]
2014-06-01 20:23 ` [Buildroot] [PATCHv2 4/6] gettext: allow building when BR2_NEEDS_GETTEXT is not selected Thomas Petazzoni
2014-06-01 20:23 ` [Buildroot] [PATCHv2 5/6] ecryptfs-utils: select gettext, needed for command line utilities Thomas Petazzoni
2014-06-01 20:23 ` [Buildroot] [PATCHv2 6/6] docs/manual: update documentation about gettext handling Thomas Petazzoni
2014-06-02 5:50 ` Thomas De Schampheleire
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140608222619.GU3266@free.fr \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox