Skip to contentSkip to conversation

gnupg2: fix linking with intl

PATCH Superseded Vicente Olivert Riera 2 participants 7 messages Dec 11, 2014 – Jan 5, 2015

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 gnupg2: fix linking with intl

gnupg2 needs to link with intl if the gettext package is selected. Otherwise we will see an error like this one:

libgpg-error.a(libgpg_error_la-strsource.o): In function `gpg_strsource':
strsource.c:(.text+0x4c): undefined reference to `libintl_dgettext'

Fixes:
http://autobuild.buildroot.net/results/9aa/9aaca74dd3a1f82e12358530db4d5d17eb833f7f/

---
Changes v1 -> v2:
- Remove "select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE" from Config.in
- Replace $(BR2_NEEDS_GETTEXT_IF_LOCALE) with $(BR2_PACKAGE_GETTEXT)
- Amend the commit message according to the new changes

 package/gnupg2/gnupg2.mk |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
package/gnupg2/gnupg2.mk +5 -0
index 2d133aa..69c510e 100644
@@ -20,6 +20,11 @@ GNUPG2_CONF_OPTS = \
 	--with-pth-prefix=$(STAGING_DIR)/usr
 GNUPG2_CONF_ENV = gl_cv_header_working_stdint_h=yes
 
+ifeq ($(BR2_PACKAGE_GETTEXT),y)
+GNUPG2_DEPENDENCIES += gettext
+GNUPG2_CONF_ENV += LIBS=-lintl
+endif
+
 ifneq ($(BR2_PACKAGE_GNUPG2_GPGV2),y)
 define GNUPG2_REMOVE_GPGV2
 	rm -f $(TARGET_DIR)/usr/bin/gpgv2
Signature · 1 line
1.7.1
#1 lore raw

PATCH v2 1/1 gnupg2: fix linking with intl

Dear Vicente Olivert Riera,

package/gnupg2/gnupg2.mk GNUPG2_CONF_OPTS = \ · line 25

Quoted 3 lines · Vicente Olivert Riera
package/gnupg2/gnupg2.mk +3 -0
+ifeq ($(BR2_PACKAGE_GETTEXT),y)
+GNUPG2_DEPENDENCIES += gettext
+GNUPG2_CONF_ENV += LIBS=-lintl

Are you sure we need this LIBS part when glibc is used?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH v2 1/1 gnupg2: fix linking with intl

Quoted 9 lines · Thomas Petazzoni

Dear Vicente Olivert Riera,

package/gnupg2/gnupg2.mk GNUPG2_CONF_OPTS = \ · line 25

Quoted 3 lines · Vicente Olivert Riera
package/gnupg2/gnupg2.mk +3 -0
+ifeq ($(BR2_PACKAGE_GETTEXT),y)
+GNUPG2_DEPENDENCIES += gettext
+GNUPG2_CONF_ENV += LIBS=-lintl

Are you sure we need this LIBS part when glibc is used?

Uhm..., something must have changed in the tree and right now I'm not able to reproduce this failure even using the same config file :/

http://autobuild.buildroot.net/results/9aa/9aaca74dd3a1f82e12358530db4d5d17eb833f7f/config

Signature · 5 lines
Vicente Olivert Riera
Graduate Software Engineer, MIPS Platforms
Imagination Technologies Limited
t: +44 (0)113 2429814
www.imgtec.com
#3 lore raw

PATCH v2 1/1 gnupg2: fix linking with intl

Dear Vicente Olivert Riera,

Quoted 11 lines · Vicente Olivert Riera
Quoted 9 lines · Thomas Petazzoni

Dear Vicente Olivert Riera,

package/gnupg2/gnupg2.mk GNUPG2_CONF_OPTS = \ · line 25

Quoted 3 lines · Vicente Olivert Riera
package/gnupg2/gnupg2.mk +3 -0
+ifeq ($(BR2_PACKAGE_GETTEXT),y)
+GNUPG2_DEPENDENCIES += gettext
+GNUPG2_CONF_ENV += LIBS=-lintl

Are you sure we need this LIBS part when glibc is used?

Quoted 4 lines

Uhm..., something must have changed in the tree and right now I'm not able to reproduce this failure even using the same config file :/

http://autobuild.buildroot.net/results/9aa/9aaca74dd3a1f82e12358530db4d5d17eb833f7f/config

This problem was related to static linking, but the BR2_PREFER_STATIC_LIB option has been renamed to BR2_STATIC_LIBS (with a bogus Config.in.legacy handling done by me). So if you took the old config file, BR2_PREFER_STATIC_LIB was discarded, and you were doing a shared library build instead of a static library build, which explains why the problem was not appearing anymore.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw

PATCH v2 1/1 gnupg2: fix linking with intl

Quoted 17 lines · Thomas Petazzoni

Dear Vicente Olivert Riera,

Quoted 14 lines · Vicente Olivert Riera
Quoted 9 lines · Thomas Petazzoni

Dear Vicente Olivert Riera,

package/gnupg2/gnupg2.mk GNUPG2_CONF_OPTS = \ · line 25

Quoted 3 lines · Vicente Olivert Riera
package/gnupg2/gnupg2.mk +3 -0
+ifeq ($(BR2_PACKAGE_GETTEXT),y)
+GNUPG2_DEPENDENCIES += gettext
+GNUPG2_CONF_ENV += LIBS=-lintl

Are you sure we need this LIBS part when glibc is used?

Uhm..., something must have changed in the tree and right now I'm not able to reproduce this failure even using the same config file :/

Quoted 8 lines
Quoted 1 line

http://autobuild.buildroot.net/results/9aa/9aaca74dd3a1f82e12358530db4d5d17eb833f7f/config

This problem was related to static linking, but the BR2_PREFER_STATIC_LIB option has been renamed to BR2_STATIC_LIBS (with a bogus Config.in.legacy handling done by me). So if you took the old config file, BR2_PREFER_STATIC_LIB was discarded, and you were doing a shared library build instead of a static library build, which explains why the problem was not appearing anymore.

You were right. So now I was able to reproduce the problem, and taking into account that it only happens for static builds, I think I could change the patch to be like this:

ifeq ($(BR2_PACKAGE_GETTEXT),y)
GNUPG2_DEPENDENCIES += gettext
ifneq ($(BR2_SHARED_LIBS),y)
GNUPG2_CONF_ENV += LIBS=-lintl
endif
endif

What do you think?

Regards,

Signature · 5 lines
Vicente Olivert Riera
Graduate Software Engineer, MIPS Platforms
Imagination Technologies Limited
t: +44 (0)113 2429814
www.imgtec.com
#5 lore raw

PATCH v2 1/1 gnupg2: fix linking with intl

Dear Vicente Olivert Riera,

Quoted 11 lines · Vicente Olivert Riera
Quoted 6 lines

This problem was related to static linking, but the BR2_PREFER_STATIC_LIB option has been renamed to BR2_STATIC_LIBS (with a bogus Config.in.legacy handling done by me). So if you took the old config file, BR2_PREFER_STATIC_LIB was discarded, and you were doing a shared library build instead of a static library build, which explains why the problem was not appearing anymore.

You were right. So now I was able to reproduce the problem, and taking into account that it only happens for static builds, I think I could change the patch to be like this:

Quoted 8 lines

ifeq ($(BR2_PACKAGE_GETTEXT),y)
GNUPG2_DEPENDENCIES += gettext
ifneq ($(BR2_SHARED_LIBS),y)
GNUPG2_CONF_ENV += LIBS=-lintl
endif
endif

What do you think?

I don't remember the entire context. Do you have a minimal defconfig that exhibits the problem?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#6 lore raw

PATCH v2 1/1 gnupg2: fix linking with intl

Hi Thomas,

Quoted 22 lines · Thomas Petazzoni

Dear Vicente Olivert Riera,

Quoted 18 lines · Vicente Olivert Riera
Quoted 6 lines

This problem was related to static linking, but the BR2_PREFER_STATIC_LIB option has been renamed to BR2_STATIC_LIBS (with a bogus Config.in.legacy handling done by me). So if you took the old config file, BR2_PREFER_STATIC_LIB was discarded, and you were doing a shared library build instead of a static library build, which explains why the problem was not appearing anymore.

You were right. So now I was able to reproduce the problem, and taking into account that it only happens for static builds, I think I could change the patch to be like this:

ifeq ($(BR2_PACKAGE_GETTEXT),y)
GNUPG2_DEPENDENCIES += gettext
ifneq ($(BR2_SHARED_LIBS),y)
GNUPG2_CONF_ENV += LIBS=-lintl
endif
endif

Quoted 4 lines
Quoted 1 line

What do you think?

I don't remember the entire context. Do you have a minimal defconfig that exhibits the problem?

Sure. Here you have it:

BR2_mipsel=y
BR2_STATIC_LIBS=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mipsel-o32-full-2014.11.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17=y
BR2_TOOLCHAIN_EXTERNAL_LARGEFILE=y
BR2_TOOLCHAIN_EXTERNAL_INET_IPV6=y
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_TARGET_OPTIMIZATION="-pipe"
BR2_PACKAGE_GETTEXT=y
BR2_PACKAGE_GNUPG2=y

it fails for both BR2_STATIC_LIBS and BR2_SHARED_STATIC_LIBS. That's why I proposed to use...

ifneq ($(BR2_SHARED_LIBS),y)

...in the patch.

Regards,

Signature · 5 lines
Vicente Olivert Riera
Graduate Software Engineer, MIPS Platforms
Imagination Technologies Limited
t: +44 (0)113 2429814
www.imgtec.com