diff mbox

[v2] gnupg2: fix linking with intl

Message ID 1418299611-50833-1-git-send-email-Vincent.Riera@imgtec.com
State Superseded
Headers show

Commit Message

Vicente Olivert Riera Dec. 11, 2014, 12:06 p.m. UTC
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/

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
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(-)

Comments

Thomas Petazzoni Dec. 11, 2014, 6:53 p.m. UTC | #1
Dear Vicente Olivert Riera,

On Thu, 11 Dec 2014 12:06:51 +0000, Vicente Olivert Riera wrote:

> +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
Vicente Olivert Riera Dec. 12, 2014, 3:28 p.m. UTC | #2
On 12/11/2014 06:53 PM, Thomas Petazzoni wrote:
> Dear Vicente Olivert Riera,
> 
> On Thu, 11 Dec 2014 12:06:51 +0000, Vicente Olivert Riera wrote:
> 
>> +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
Thomas Petazzoni Dec. 17, 2014, 8:57 a.m. UTC | #3
Dear Vicente Olivert Riera,

On Fri, 12 Dec 2014 15:28:24 +0000, Vicente Olivert Riera wrote:
> On 12/11/2014 06:53 PM, Thomas Petazzoni wrote:
> > Dear Vicente Olivert Riera,
> > 
> > On Thu, 11 Dec 2014 12:06:51 +0000, Vicente Olivert Riera wrote:
> > 
> >> +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

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
Vicente Olivert Riera Jan. 5, 2015, 2:04 p.m. UTC | #4
On 12/17/2014 08:57 AM, Thomas Petazzoni wrote:
> Dear Vicente Olivert Riera,
> 
> On Fri, 12 Dec 2014 15:28:24 +0000, Vicente Olivert Riera wrote:
>> On 12/11/2014 06:53 PM, Thomas Petazzoni wrote:
>>> Dear Vicente Olivert Riera,
>>>
>>> On Thu, 11 Dec 2014 12:06:51 +0000, Vicente Olivert Riera wrote:
>>>
>>>> +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
> 
> 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,
Thomas Petazzoni Jan. 5, 2015, 3:37 p.m. UTC | #5
Dear Vicente Olivert Riera,

On Mon, 5 Jan 2015 14:04:42 +0000, Vicente Olivert Riera wrote:

> > 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?

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

Thomas
Vicente Olivert Riera Jan. 5, 2015, 4:12 p.m. UTC | #6
Hi Thomas,

On 01/05/2015 03:37 PM, Thomas Petazzoni wrote:
> Dear Vicente Olivert Riera,
> 
> On Mon, 5 Jan 2015 14:04:42 +0000, Vicente Olivert Riera wrote:
> 
>>> 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?
> 
> 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,
diff mbox

Patch

diff --git a/package/gnupg2/gnupg2.mk b/package/gnupg2/gnupg2.mk
index 2d133aa..69c510e 100644
--- a/package/gnupg2/gnupg2.mk
+++ b/package/gnupg2/gnupg2.mk
@@ -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