diff mbox

package/gettext: host variant needs host-libxml2

Message ID 1451165734-15534-1-git-send-email-yann.morin.1998@free.fr
State Accepted
Headers show

Commit Message

Yann E. MORIN Dec. 26, 2015, 9:35 p.m. UTC
From: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>

Of host-gettext, we only build the tools. however some of those tools
have a --color option, which needs libxml2.

If the libxml2 development files are missing on the host, a bundled
subset of libxml2 is used, and all seems OK. But if they ar epresent,
then the host libxml2 is used. On some distros, lbxml2 is linked with
liblzma. And if we happend to _then_ build our host-liblzma, we may have
a conflict later when trying to run any of the host-gettext tools.

Always build host-gettext with our own host-libxml2 which is not linked
with liblzma.

Fixes https://bugs.busybox.net/show_bug.cgi?id=7886

Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
[nicolas: added extended commit message]
Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
[yann.morin.1998@free.fr: rebase; add comment; enhance commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/gettext/gettext.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Thomas Petazzoni Dec. 27, 2015, 10:44 a.m. UTC | #1
Yann,

On Sat, 26 Dec 2015 22:35:34 +0100, Yann E. MORIN wrote:
> From: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
> 
> Of host-gettext, we only build the tools. however some of those tools
> have a --color option, which needs libxml2.
> 
> If the libxml2 development files are missing on the host, a bundled
> subset of libxml2 is used, and all seems OK. But if they ar epresent,
> then the host libxml2 is used. On some distros, lbxml2 is linked with
> liblzma. And if we happend to _then_ build our host-liblzma, we may have
> a conflict later when trying to run any of the host-gettext tools.
> 
> Always build host-gettext with our own host-libxml2 which is not linked
> with liblzma.
> 
> Fixes https://bugs.busybox.net/show_bug.cgi?id=7886
> 
> Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
> [nicolas: added extended commit message]
> Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
> [yann.morin.1998@free.fr: rebase; add comment; enhance commit log]
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Thanks for reviving this old patch. I do remember it, and I believe
back then I raised the concern that unconditionally building
host-libxml2 as a dependency of host-gettext would add quite a bit of
build time (to a package that already takes an awful lot of time to
build for what it does, but that's another story).

So I did a measurement:

 * If we force the usage of the included libxml2, then the time needed
   to do "make host-gettext" from an empty build is:

	real	1m40.892s
	user	2m38.664s
	sys	0m13.132s

 * If we use your patch, which unconditionally adds the dependency on
   host-libxml2, the time needed to do a "make host-gettext" from an
   empty build is:

	real    2m21.035s
	user    3m51.956s
	sys     0m16.020s

So about a 40 seconds build time difference. I'm not sure what to
decide from that. 40 seconds is not that long, but host-gettext is
already quite long to build...

Thoughts ? Opinions ?

Thomas
Thomas Petazzoni Dec. 27, 2015, 11:22 a.m. UTC | #2
Yann,

On Sun, 27 Dec 2015 11:54:37 +0100, Yann E. MORIN wrote:

> Well, we also have to consider why we have to build host-gettext: it is
> a dependency of quite a few packages. I did not try to time-build all of
> them, but we have to really compare the extra time to the time it takes
> to build the real packages that need host-gettext. Surely, we're already
> adding 2m21s to the build time of those packages; adding 40s more is not
> transparent, but still better than the situation we currently have with
> library mismatch.
> 
> Also, as Vicente replied, we already need to build host-libxml2 in some
> cases, so we may end up building it twice if we were to use the bundled
> one.

There are not so many cases where we build host-libxml2 in fact. There
are some, but not that many.

> A solution would have been to use host-libxml2 if something else depends
> on it, and fallback to the bundled one otherwsie, but we have no way to
> know if a host-libxml2 is to be built or not (no Kconfig variable for it).

Right.

> I would prefer to spend more build time for a reproducible build, at
> least.

Well, with --with-included-libxml, the build is reproducible, since the
internal libxml library is always used. But I agree that our policy is
generally to use the non-bundled versions of the different libraries.

It's just super annoying to have yet another dependency, for this silly
--color option of gettext that nobody cares about...

Thomas
Thomas Petazzoni Dec. 29, 2015, 4:56 p.m. UTC | #3
Dear Yann E. MORIN,

On Sat, 26 Dec 2015 22:35:34 +0100, Yann E. MORIN wrote:
> From: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
> 
> Of host-gettext, we only build the tools. however some of those tools
> have a --color option, which needs libxml2.
> 
> If the libxml2 development files are missing on the host, a bundled
> subset of libxml2 is used, and all seems OK. But if they ar epresent,
> then the host libxml2 is used. On some distros, lbxml2 is linked with
> liblzma. And if we happend to _then_ build our host-liblzma, we may have
> a conflict later when trying to run any of the host-gettext tools.
> 
> Always build host-gettext with our own host-libxml2 which is not linked
> with liblzma.
> 
> Fixes https://bugs.busybox.net/show_bug.cgi?id=7886
> 
> Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
> [nicolas: added extended commit message]
> Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
> [yann.morin.1998@free.fr: rebase; add comment; enhance commit log]
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> ---
>  package/gettext/gettext.mk | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Applied, thanks.

Thomas
Gustavo Zacarias Dec. 29, 2015, 4:56 p.m. UTC | #4
On 26/12/15 18:35, Yann E. MORIN wrote:

> From: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
>
> Of host-gettext, we only build the tools. however some of those tools
> have a --color option, which needs libxml2.
>
> If the libxml2 development files are missing on the host, a bundled
> subset of libxml2 is used, and all seems OK. But if they ar epresent,
> then the host libxml2 is used. On some distros, lbxml2 is linked with
> liblzma. And if we happend to _then_ build our host-liblzma, we may have
> a conflict later when trying to run any of the host-gettext tools.
>
> Always build host-gettext with our own host-libxml2 which is not linked
> with liblzma.
>
> Fixes https://bugs.busybox.net/show_bug.cgi?id=7886
>
> Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
> [nicolas: added extended commit message]
> Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
> [yann.morin.1998@free.fr: rebase; add comment; enhance commit log]
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Acked-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

Regards.
diff mbox

Patch

diff --git a/package/gettext/gettext.mk b/package/gettext/gettext.mk
index cb509f2..11e105a 100644
--- a/package/gettext/gettext.mk
+++ b/package/gettext/gettext.mk
@@ -12,7 +12,9 @@  GETTEXT_LICENSE = LGPLv2.1+ (libintl), GPLv3+ (the rest)
 GETTEXT_LICENSE_FILES = COPYING gettext-runtime/intl/COPYING.LIB
 
 GETTEXT_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)
-HOST_GETTEXT_DEPENDENCIES = # we don't want the libiconv dependency
+
+# Avoid using the bundled subset of libxml2
+HOST_GETTEXT_DEPENDENCIES = host-libxml2
 
 GETTEXT_CONF_OPTS += \
 	--disable-libasprintf \