diff mbox series

[v2,2/4] package/celt051: needs dynamic library

Message ID 20191117164452.5361-2-fontaine.fabrice@gmail.com
State Changes Requested
Headers show
Series None | expand

Commit Message

Fabrice Fontaine Nov. 17, 2019, 4:44 p.m. UTC
celt051 can't be built statically with opus as opus embeds its own celt
version. So add a dynamic library dependency to celt051 (and not to
opus, as celt051 is only used optionally by spice whereas opus is
selected by 9 packages)

This will fix static build of spice with opus and celt:

/home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/i686-buildroot-linux-uclibc/7.4.0/../../../../i686-buildroot-linux-uclibc/bin/ld: /home/fabrice/buildroot/output/host/i686-buildroot-linux-uclibc/sysroot/usr/lib/libopus.a(vq.o): in function `renormalise_vector':
vq.c:(.text+0x5ee): multiple definition of `renormalise_vector'; /home/fabrice/buildroot/output/host/i686-buildroot-linux-uclibc/sysroot/usr/lib/libcelt051.a(vq.o):vq.c:(.text+0x6e6): first defined here

Fixes:
 - http://autobuild.buildroot.org/results/96c786f85d35f33508e9c71778043d16b87f72cd

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/celt051/Config.in | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Peter Korsgaard Nov. 23, 2019, 1:38 p.m. UTC | #1
>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:

 > celt051 can't be built statically with opus as opus embeds its own celt
 > version. So add a dynamic library dependency to celt051 (and not to
 > opus, as celt051 is only used optionally by spice whereas opus is
 > selected by 9 packages)

 > This will fix static build of spice with opus and celt:

 > /home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/i686-buildroot-linux-uclibc/7.4.0/../../../../i686-buildroot-linux-uclibc/bin/ld: /home/fabrice/buildroot/output/host/i686-buildroot-linux-uclibc/sysroot/usr/lib/libopus.a(vq.o): in function `renormalise_vector':
 > vq.c:(.text+0x5ee): multiple definition of `renormalise_vector'; /home/fabrice/buildroot/output/host/i686-buildroot-linux-uclibc/sysroot/usr/lib/libcelt051.a(vq.o):vq.c:(.text+0x6e6): first defined here

 > Fixes:
 >  - http://autobuild.buildroot.org/results/96c786f85d35f33508e9c71778043d16b87f72cd

So this is only really an issue for spice, if spice is built statically
and both celt051 and opus are enabled?

If so, then I would prefer to handle it in spice.mk instead,
E.G. blacklist the celt51 + opus + static combination with a sensible
comment, something like:

ifeq ($(BR2_PACKAGE_CELT051),y)

# opus embeds a copy of celt, causing multiple definitions of a number
# of symbols when linked statically together with celt051, so disable
# celt051 support for that combination
ifeq ($(BR2_PACKAGE_OPUS)$(BR2_STATIC_LIBS),yy)
SPICE_CONF_OPTS += --disable-celt051
else
SPICE_CONF_OPTS += --enable-celt051
SPICE_DEPENDENCIES += celt051
endif

else
SPICE_CONF_OPTS += --disable-celt051
endif

Care to send a patch doing something like that? Thanks.
Fabrice Fontaine Nov. 23, 2019, 4:05 p.m. UTC | #2
Dear Peter,

Le sam. 23 nov. 2019 à 14:38, Peter Korsgaard <peter@korsgaard.com> a écrit :
>
> >>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:
>
>  > celt051 can't be built statically with opus as opus embeds its own celt
>  > version. So add a dynamic library dependency to celt051 (and not to
>  > opus, as celt051 is only used optionally by spice whereas opus is
>  > selected by 9 packages)
>
>  > This will fix static build of spice with opus and celt:
>
>  > /home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/i686-buildroot-linux-uclibc/7.4.0/../../../../i686-buildroot-linux-uclibc/bin/ld: /home/fabrice/buildroot/output/host/i686-buildroot-linux-uclibc/sysroot/usr/lib/libopus.a(vq.o): in function `renormalise_vector':
>  > vq.c:(.text+0x5ee): multiple definition of `renormalise_vector'; /home/fabrice/buildroot/output/host/i686-buildroot-linux-uclibc/sysroot/usr/lib/libcelt051.a(vq.o):vq.c:(.text+0x6e6): first defined here
>
>  > Fixes:
>  >  - http://autobuild.buildroot.org/results/96c786f85d35f33508e9c71778043d16b87f72cd
>
> So this is only really an issue for spice, if spice is built statically
> and both celt051 and opus are enabled?
>
> If so, then I would prefer to handle it in spice.mk instead,
> E.G. blacklist the celt51 + opus + static combination with a sensible
> comment, something like:
>
> ifeq ($(BR2_PACKAGE_CELT051),y)
>
> # opus embeds a copy of celt, causing multiple definitions of a number
> # of symbols when linked statically together with celt051, so disable
> # celt051 support for that combination
> ifeq ($(BR2_PACKAGE_OPUS)$(BR2_STATIC_LIBS),yy)
> SPICE_CONF_OPTS += --disable-celt051
> else
> SPICE_CONF_OPTS += --enable-celt051
> SPICE_DEPENDENCIES += celt051
> endif
>
> else
> SPICE_CONF_OPTS += --disable-celt051
> endif
>
> Care to send a patch doing something like that? Thanks.
An other option would be to remove celt051 package indeed the root
cause of this static build failure is that celt has been merged into
the IETF Opus codec and is now obsolete (see http://celt-codec.org/).
>
> --
> Bye, Peter Korsgaard
Best Regards,

Fabrice
Arnout Vandecappelle Jan. 23, 2020, 10:23 p.m. UTC | #3
On 23/11/2019 17:05, Fabrice Fontaine wrote:
> Dear Peter,
> 
> Le sam. 23 nov. 2019 à 14:38, Peter Korsgaard <peter@korsgaard.com> a écrit :
>>
>>>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:
>>
>>  > celt051 can't be built statically with opus as opus embeds its own celt
>>  > version. So add a dynamic library dependency to celt051 (and not to
>>  > opus, as celt051 is only used optionally by spice whereas opus is
>>  > selected by 9 packages)
[snip]
>> Care to send a patch doing something like that? Thanks.
> An other option would be to remove celt051 package indeed the root
> cause of this static build failure is that celt has been merged into
> the IETF Opus codec and is now obsolete (see http://celt-codec.org/).

 Indeed, that makes more sense. Care to remove it? Legacy handling should select
BR2_PACKAGE_OPUS then (with appropriate explanation).

 Yann is developer for celt051, so please give a peep if it can't be removed.

 Regards,
 Arnout
Yann E. MORIN Jan. 24, 2020, 6:14 p.m. UTC | #4
Arnout, All,

On 2020-01-23 23:23 +0100, Arnout Vandecappelle spake thusly:
> On 23/11/2019 17:05, Fabrice Fontaine wrote:
> > Dear Peter,
> > 
> > Le sam. 23 nov. 2019 à 14:38, Peter Korsgaard <peter@korsgaard.com> a écrit :
> >>
> >>>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:
> >>
> >>  > celt051 can't be built statically with opus as opus embeds its own celt
> >>  > version. So add a dynamic library dependency to celt051 (and not to
> >>  > opus, as celt051 is only used optionally by spice whereas opus is
> >>  > selected by 9 packages)
> [snip]
> >> Care to send a patch doing something like that? Thanks.
> > An other option would be to remove celt051 package indeed the root
> > cause of this static build failure is that celt has been merged into
> > the IETF Opus codec and is now obsolete (see http://celt-codec.org/).
> 
>  Indeed, that makes more sense. Care to remove it? Legacy handling should select
> BR2_PACKAGE_OPUS then (with appropriate explanation).
> 
>  Yann is developer for celt051, so please give a peep if it can't be removed.

Well, celt-0.51 was introduced because at the time. spice on;y supported
that, and not the later versions, which is still documented in the
package itself.

But sicne then (7 years ago now), spice was updated, so maybe it can
support newer versions, and maybe it works with Opus instead.

Regards,
Yann E. MORIN.
Arnout Vandecappelle Jan. 27, 2020, 4:22 p.m. UTC | #5
On 24/01/2020 19:14, Yann E. MORIN wrote:
> Arnout, All,
> 
> On 2020-01-23 23:23 +0100, Arnout Vandecappelle spake thusly:
>> On 23/11/2019 17:05, Fabrice Fontaine wrote:
>>> Dear Peter,
>>>
>>> Le sam. 23 nov. 2019 à 14:38, Peter Korsgaard <peter@korsgaard.com> a écrit :
>>>>
>>>>>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:
>>>>
>>>>  > celt051 can't be built statically with opus as opus embeds its own celt
>>>>  > version. So add a dynamic library dependency to celt051 (and not to
>>>>  > opus, as celt051 is only used optionally by spice whereas opus is
>>>>  > selected by 9 packages)
>> [snip]
>>>> Care to send a patch doing something like that? Thanks.
>>> An other option would be to remove celt051 package indeed the root
>>> cause of this static build failure is that celt has been merged into
>>> the IETF Opus codec and is now obsolete (see http://celt-codec.org/).
>>
>>  Indeed, that makes more sense. Care to remove it? Legacy handling should select
>> BR2_PACKAGE_OPUS then (with appropriate explanation).
>>
>>  Yann is developer for celt051, so please give a peep if it can't be removed.
> 
> Well, celt-0.51 was introduced because at the time. spice on;y supported
> that, and not the later versions, which is still documented in the
> package itself.
> 
> But sicne then (7 years ago now), spice was updated, so maybe it can
> support newer versions, and maybe it works with Opus instead.

 Opus support in spice has already been added with the bump to 0.14.1 in
f33f7a4f6407f.

 So if someone could remove celt051 please :-)

 Regards,
 Arnout
Fabrice Fontaine Jan. 27, 2020, 4:25 p.m. UTC | #6
Hi Arnout,

Le lun. 27 janv. 2020 à 17:22, Arnout Vandecappelle <arnout@mind.be> a écrit :
>
>
>
> On 24/01/2020 19:14, Yann E. MORIN wrote:
> > Arnout, All,
> >
> > On 2020-01-23 23:23 +0100, Arnout Vandecappelle spake thusly:
> >> On 23/11/2019 17:05, Fabrice Fontaine wrote:
> >>> Dear Peter,
> >>>
> >>> Le sam. 23 nov. 2019 à 14:38, Peter Korsgaard <peter@korsgaard.com> a écrit :
> >>>>
> >>>>>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:
> >>>>
> >>>>  > celt051 can't be built statically with opus as opus embeds its own celt
> >>>>  > version. So add a dynamic library dependency to celt051 (and not to
> >>>>  > opus, as celt051 is only used optionally by spice whereas opus is
> >>>>  > selected by 9 packages)
> >> [snip]
> >>>> Care to send a patch doing something like that? Thanks.
> >>> An other option would be to remove celt051 package indeed the root
> >>> cause of this static build failure is that celt has been merged into
> >>> the IETF Opus codec and is now obsolete (see http://celt-codec.org/).
> >>
> >>  Indeed, that makes more sense. Care to remove it? Legacy handling should select
> >> BR2_PACKAGE_OPUS then (with appropriate explanation).
> >>
> >>  Yann is developer for celt051, so please give a peep if it can't be removed.
> >
> > Well, celt-0.51 was introduced because at the time. spice on;y supported
> > that, and not the later versions, which is still documented in the
> > package itself.
> >
> > But sicne then (7 years ago now), spice was updated, so maybe it can
> > support newer versions, and maybe it works with Opus instead.
>
>  Opus support in spice has already been added with the bump to 0.14.1 in
> f33f7a4f6407f.
>
>  So if someone could remove celt051 please :-)
It's done since 29 hours and commit b32efbdb0354557db48852478b99080705ba315b ;-)
>
>  Regards,
>  Arnout
>
Regards,

Fabrice
diff mbox series

Patch

diff --git a/package/celt051/Config.in b/package/celt051/Config.in
index e1513190db..e8d6661ed8 100644
--- a/package/celt051/Config.in
+++ b/package/celt051/Config.in
@@ -1,5 +1,6 @@ 
 config BR2_PACKAGE_CELT051
 	bool "celt051"
+	depends on !BR2_STATIC_LIBS
 	select BR2_PACKAGE_LIBOGG
 	help
 	  The CELT ultra-low delay audio codec
@@ -13,3 +14,6 @@  config BR2_PACKAGE_CELT051
 	  Note: this is version 0.5.1.3 of celt.
 
 	  http://www.celt-codec.org/
+
+comment "celt051 needs a toolchain w/ dynamic library"
+	depends on BR2_STATIC_LIBS