Patchwork alsa-lib: Unbreak native build when using TCLIBC=uclibc

login
register
mail settings
Submitter Khem Raj
Date Nov. 21, 2011, 8:23 p.m.
Message ID <1321906980-16016-1-git-send-email-raj.khem@gmail.com>
Download mbox | patch
Permalink /patch/15211/
State New
Headers show

Comments

Khem Raj - Nov. 21, 2011, 8:23 p.m.
A recent change introduced EXTRA_OECONF_append_libc-uclibc = "
--with-versioned=no " this change has a side effect when
building alsa-lib-native using TCLIBC=uclibc the override
kicks in uninvited and hence build the native package without symbol
version information. This mean libasound.so which is needed by other
packages from build host e.g. libSDL.so does not have required symbols
and linking with libSDL fails, one such case ends in SDL support
in qemu-native being silently disabled.

We make sure that override is only enabled for target recipe

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
Phil Blundell - Nov. 21, 2011, 8:48 p.m.
On Mon, 2011-11-21 at 12:23 -0800, Khem Raj wrote:
> A recent change introduced EXTRA_OECONF_append_libc-uclibc = "
> --with-versioned=no " this change has a side effect when
> building alsa-lib-native using TCLIBC=uclibc the override
> kicks in uninvited and hence build the native package without symbol
> version information. This mean libasound.so which is needed by other
> packages from build host e.g. libSDL.so does not have required symbols
> and linking with libSDL fails, one such case ends in SDL support
> in qemu-native being silently disabled.
> 
> We make sure that override is only enabled for target recipe

This seems like the wrong solution to the problem.  Shouldn't you be
inhibiting the libc-uclibc OVERRIDE at source for native builds
(assuming the host system isn't using uClibc)?

It also seems as though there ought to be a more generic place to encode
the knowledge that uClibc doesn't do symbol versioning.  Having to hack
it into EXTRA_OECONF for every recipe seems... suboptimal.

p.

> 
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
> index 83e663d..fa96998 100644
> --- a/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
> +++ b/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
> @@ -14,7 +14,7 @@ BBCLASSEXTEND = "native nativesdk"
>  #FIXME: remove the following
>  ARM_INSTRUCTION_SET = "arm"
>  
> -PR = "r1"
> +PR = "r2"
>  
>  SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
>             file://fix-tstamp-declaration.patch"
> @@ -27,10 +27,12 @@ inherit autotools pkgconfig
>  require alsa-fpu.inc
>  EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
>  
> -EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python"
> -
> -EXTRA_OECONF_append_libc-uclibc = " --with-versioned=no "
> +EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python ${VERSIONEDSYMS}"
>  
> +VERSIONEDSYMS = ""
> +VERSIONEDSYMS_libc-uclibc = "--with-versioned=no"
> +VERSIONEDSYMS_virtclass-native = ""
> +VERSIONEDSYMS_virtclass-nativesdk = ""
>  PKGSUFFIX = ""
>  PKGSUFFIX_virtclass-nativesdk = "-nativesdk"
>
Khem Raj - Nov. 21, 2011, 10:33 p.m.
On Mon, Nov 21, 2011 at 12:48 PM, Phil Blundell <philb@gnu.org> wrote:
> On Mon, 2011-11-21 at 12:23 -0800, Khem Raj wrote:
>> A recent change introduced EXTRA_OECONF_append_libc-uclibc = "
>> --with-versioned=no " this change has a side effect when
>> building alsa-lib-native using TCLIBC=uclibc the override
>> kicks in uninvited and hence build the native package without symbol
>> version information. This mean libasound.so which is needed by other
>> packages from build host e.g. libSDL.so does not have required symbols
>> and linking with libSDL fails, one such case ends in SDL support
>> in qemu-native being silently disabled.
>>
>> We make sure that override is only enabled for target recipe
>
> This seems like the wrong solution to the problem.  Shouldn't you be
> inhibiting the libc-uclibc OVERRIDE at source for native builds
> (assuming the host system isn't using uClibc)?

yes I thought of that that libc-uclibc/libc-glibc overrides should only
pertain to target recipes and not extend to native/nativesdk. This would
need probably redoing the overrides in native bbclass. I did not pursue it
since it would need lot more testing which I could not afford atm.

>
> It also seems as though there ought to be a more generic place to encode
> the knowledge that uClibc doesn't do symbol versioning.  Having to hack
> it into EXTRA_OECONF for every recipe seems... suboptimal.
>

while the feature is generic it does not seem to have impact on lot of
recipes

> p.
>
>>
>> Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> ---
>>  meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb |   10 ++++++----
>>  1 files changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
>> index 83e663d..fa96998 100644
>> --- a/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
>> +++ b/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
>> @@ -14,7 +14,7 @@ BBCLASSEXTEND = "native nativesdk"
>>  #FIXME: remove the following
>>  ARM_INSTRUCTION_SET = "arm"
>>
>> -PR = "r1"
>> +PR = "r2"
>>
>>  SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
>>             file://fix-tstamp-declaration.patch"
>> @@ -27,10 +27,12 @@ inherit autotools pkgconfig
>>  require alsa-fpu.inc
>>  EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
>>
>> -EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python"
>> -
>> -EXTRA_OECONF_append_libc-uclibc = " --with-versioned=no "
>> +EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python ${VERSIONEDSYMS}"
>>
>> +VERSIONEDSYMS = ""
>> +VERSIONEDSYMS_libc-uclibc = "--with-versioned=no"
>> +VERSIONEDSYMS_virtclass-native = ""
>> +VERSIONEDSYMS_virtclass-nativesdk = ""
>>  PKGSUFFIX = ""
>>  PKGSUFFIX_virtclass-nativesdk = "-nativesdk"
>>
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
Khem Raj - Nov. 29, 2011, 10:58 p.m.
On Mon, Nov 21, 2011 at 12:48 PM, Phil Blundell <philb@gnu.org> wrote:
> On Mon, 2011-11-21 at 12:23 -0800, Khem Raj wrote:
>> A recent change introduced EXTRA_OECONF_append_libc-uclibc = "
>> --with-versioned=no " this change has a side effect when
>> building alsa-lib-native using TCLIBC=uclibc the override
>> kicks in uninvited and hence build the native package without symbol
>> version information. This mean libasound.so which is needed by other
>> packages from build host e.g. libSDL.so does not have required symbols
>> and linking with libSDL fails, one such case ends in SDL support
>> in qemu-native being silently disabled.
>>
>> We make sure that override is only enabled for target recipe
>
> This seems like the wrong solution to the problem.  Shouldn't you be
> inhibiting the libc-uclibc OVERRIDE at source for native builds
> (assuming the host system isn't using uClibc)?
>
> It also seems as though there ought to be a more generic place to encode
> the knowledge that uClibc doesn't do symbol versioning.  Having to hack
> it into EXTRA_OECONF for every recipe seems... suboptimal.
>

I have posted another patch which is broader in impact and solves
these kind of problems
here http://lists.linuxtogo.org/pipermail/openembedded-core/2011-November/013375.html

Thanks
-Khem

Patch

diff --git a/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
index 83e663d..fa96998 100644
--- a/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
+++ b/meta/recipes-multimedia/alsa/alsa-lib_1.0.24.1.bb
@@ -14,7 +14,7 @@  BBCLASSEXTEND = "native nativesdk"
 #FIXME: remove the following
 ARM_INSTRUCTION_SET = "arm"
 
-PR = "r1"
+PR = "r2"
 
 SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
            file://fix-tstamp-declaration.patch"
@@ -27,10 +27,12 @@  inherit autotools pkgconfig
 require alsa-fpu.inc
 EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
 
-EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python"
-
-EXTRA_OECONF_append_libc-uclibc = " --with-versioned=no "
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python ${VERSIONEDSYMS}"
 
+VERSIONEDSYMS = ""
+VERSIONEDSYMS_libc-uclibc = "--with-versioned=no"
+VERSIONEDSYMS_virtclass-native = ""
+VERSIONEDSYMS_virtclass-nativesdk = ""
 PKGSUFFIX = ""
 PKGSUFFIX_virtclass-nativesdk = "-nativesdk"