Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 739242 - net-libs/pjproject-2.9-r2 automagically depends on media-libs/speex
Summary: net-libs/pjproject-2.9-r2 automagically depends on media-libs/speex
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Jaco Kroon
URL:
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks:
 
Reported: 2020-08-27 11:24 UTC by Daniel M. Weeks
Modified: 2020-09-12 01:49 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel M. Weeks 2020-08-27 11:24:45 UTC
>>> package: media-libs/speex-1.2.0-r1
 *  - /usr/lib64/libspeex.so.1
 *  - /usr/lib64/libspeex.so.1.5.1
 *      used by /usr/lib64/libpjmedia-audiodev.so.2 (net-libs/pjproject-2.9-r2)
 *      used by /usr/lib64/libpjmedia-codec.so.2 (net-libs/pjproject-2.9-r2)

Reproducible: Always
Comment 1 Jaco Kroon 2020-08-27 17:09:05 UTC
Hi Daniel,

Thanks for the report.

I've looked at the ebuild, all looks to be OK, but I can't guarantee what happens in the configure script (I've had my battles with that one around ssl too).

Just want to confirm steps to reproduce:

emerge speex
USE=-speex emerge pjproject

Then check for linking against libspeex?

Could you also please post me the output of:

ldd /usr/lib64/libpjmedia-audiodev.so.2
ldd /usr/lib64/libpjmedia-codec.so.2

As well as provide me the build.log file for the merge please?  (FEATURES=noclean emerge ... in $PORTAGE_TMPDIR/portage/net-libs/pjproject/temp)
Comment 2 Daniel M. Weeks 2020-08-27 17:24:06 UTC
(In reply to Jaco Kroon from comment #1)
> Just want to confirm steps to reproduce:
> 
> emerge speex
> USE=-speex emerge pjproject
> 
> Then check for linking against libspeex?

Correct - both libraries below will be linked against libspeex even with USE=-speex, whenever is installed.

> 
> Could you also please post me the output of:
> 
> ldd /usr/lib64/libpjmedia-audiodev.so.2

ldd /usr/lib64/libpjmedia-audiodev.so.2
        linux-vdso.so.1 (0x00007ffdde7b1000)
        libpjmedia.so.2 => /usr/lib64/libpjmedia.so.2 (0x00007ff8dd550000)
        libpj.so.2 => /usr/lib64/libpj.so.2 (0x00007ff8dd51f000)
        libilbccodec.so.2 => /usr/lib64/libilbccodec.so.2 (0x00007ff8dd50f000)
        libg7221codec.so.2 => /usr/lib64/libg7221codec.so.2 (0x00007ff8dd4fc000)
        libsrtp2.so.1 => /usr/lib64/libsrtp2.so.1 (0x00007ff8dd4e2000)
        libgsm.so.1 => /usr/lib64/libgsm.so.1 (0x00007ff8dd4d3000)
        libspeex.so.1 => /usr/lib64/libspeex.so.1 (0x00007ff8dd4b6000)
        libspeexdsp.so.1 => /usr/lib64/libspeexdsp.so.1 (0x00007ff8dd4a2000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff8dd2e7000)
        libpjlib-util.so.2 => /usr/lib64/libpjlib-util.so.2 (0x00007ff8dd2bf000)
        libpjnath.so.2 => /usr/lib64/libpjnath.so.2 (0x00007ff8dd293000)
        libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007ff8dcfd5000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ff8dce90000)
        libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00007ff8dcdfe000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007ff8dcdf5000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff8dcdd5000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff8dd5f8000)
        libz.so.1 => /lib64/libz.so.1 (0x00007ff8dcbbe000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007ff8dcbb7000)

> ldd /usr/lib64/libpjmedia-codec.so.2

ldd /usr/lib64/libpjmedia-codec.so.2
        linux-vdso.so.1 (0x00007ffd5ebf5000)
        libpjmedia.so.2 => /usr/lib64/libpjmedia.so.2 (0x00007f56394bd000)
        libpj.so.2 => /usr/lib64/libpj.so.2 (0x00007f563948c000)
        libilbccodec.so.2 => /usr/lib64/libilbccodec.so.2 (0x00007f563947c000)
        libg7221codec.so.2 => /usr/lib64/libg7221codec.so.2 (0x00007f5639469000)
        libsrtp2.so.1 => /usr/lib64/libsrtp2.so.1 (0x00007f563944f000)
        libgsm.so.1 => /usr/lib64/libgsm.so.1 (0x00007f5639440000)
        libspeex.so.1 => /usr/lib64/libspeex.so.1 (0x00007f5639423000)
        libspeexdsp.so.1 => /usr/lib64/libspeexdsp.so.1 (0x00007f563940f000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f5639254000)
        libpjlib-util.so.2 => /usr/lib64/libpjlib-util.so.2 (0x00007f563922c000)
        libpjnath.so.2 => /usr/lib64/libpjnath.so.2 (0x00007f5639200000)
        libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007f5638f42000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f5638dfd000)
        libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00007f5638d6b000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f5638d62000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5638d42000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f563956e000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f5638b2b000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f5638b24000)



> 
> As well as provide me the build.log file for the merge please? 
> (FEATURES=noclean emerge ... in
> $PORTAGE_TMPDIR/portage/net-libs/pjproject/temp)

If I rebuild in the near future I will add this. However, a quick glance at upstream's configure.ac indicates that there is a speex-codec option that is uncontrolled by the ebuild. I hope that helps. :)
Comment 3 Jaco Kroon 2020-08-27 17:45:04 UTC
(In reply to Daniel M. Weeks from comment #2)

> If I rebuild in the near future I will add this. However, a quick glance at
> upstream's configure.ac indicates that there is a speex-codec option that is
> uncontrolled by the ebuild. I hope that helps. :)

This statement is in fact incorrect, and this is actually what I checked for earlier.

 17 CODEC_FLAGS="g711 g722 g7221 gsm ilbc speex l16"

 69     for t in ${CODEC_FLAGS}; do
 70         myconf+=( $(use_enable ${t} ${t}-codec) )
 71     done

 81     LD="$(tc-getCC)" econf \
...
100         "${myconf[@]}"

This does however sound very similar to the issue we had with --{enable,disable}-ssl, and --enable-libwebrtc also ended up doing a disable... I sometimes wonder how far I can trust a library where such blatant obvious bugs exist in the configure stage for actually not having same bugs in actual code.  And they really don't like taking patches.

Actually looks like we might be facing another case of --without-external-speex really meaning --with-external-speex ...

However, following your recipe, this is what I get from ./configure with USE=-speex ebuild pjproject-2.9-r2.ebuild clean configure:

Checking if Speex codec is disabled...yes
Checking if Speex codec is disabled...yes

And none of the output from vi --with-external-speex stanza.  So that at least looks good.

If I proceed to compile, then find the related libs, this is what ldd hands me:

jkroon@plastiekpoot /var/tmp/portage/net-libs/pjproject-2.9-r2/work/pjproject-2.9 $ ldd ./pjmedia/lib/libpjmedia-audiodev.so
	linux-vdso.so.1 (0x00007ffee9bde000)
	libpjmedia.so.2 => /usr/lib64/libpjmedia.so.2 (0x00007f3d99be4000)
	libpj.so.2 => /usr/lib64/libpj.so.2 (0x00007f3d99bb2000)
	libsrtp2.so.1 => /usr/lib64/libsrtp2.so.1 (0x00007f3d99b98000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3d99b78000)
	libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007f3d99a9b000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f3d998da000)
	libpjlib-util.so.2 => /usr/lib64/libpjlib-util.so.2 (0x00007f3d998af000)
	libpjnath.so.2 => /usr/lib64/libpjnath.so.2 (0x00007f3d99883000)
	libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007f3d995c6000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f3d99490000)
	libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00007f3d993fe000)
	libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f3d993f4000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f3d99c6f000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f3d993ed000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f3d993d3000)
jkroon@plastiekpoot /var/tmp/portage/net-libs/pjproject-2.9-r2/work/pjproject-2.9 $ ldd ./pjmedia/lib/libpjmedia-codec.so
	linux-vdso.so.1 (0x00007ffc8b7e8000)
	libpjmedia.so.2 => /usr/lib64/libpjmedia.so.2 (0x00007fce3d8c5000)
	libpj.so.2 => /usr/lib64/libpj.so.2 (0x00007fce3d893000)
	libsrtp2.so.1 => /usr/lib64/libsrtp2.so.1 (0x00007fce3d879000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fce3d6b8000)
	libpjlib-util.so.2 => /usr/lib64/libpjlib-util.so.2 (0x00007fce3d68f000)
	libpjnath.so.2 => /usr/lib64/libpjnath.so.2 (0x00007fce3d663000)
	libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007fce3d3a4000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fce3d26e000)
	libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00007fce3d1dc000)
	libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fce3d1d2000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fce3d1b2000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fce3d94c000)
	libz.so.1 => /lib64/libz.so.1 (0x00007fce3d198000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fce3d191000)

No linking against speex.  So at this stage, I can't reproduce, in fact:

jkroon@plastiekpoot /var/tmp/portage/net-libs/pjproject-2.9-r2/work/pjproject-2.9 $ find . -name "*.so" | xargs ldd | grep speex -i

provides me no output.
Comment 4 Daniel M. Weeks 2020-08-27 17:53:42 UTC
(In reply to Jaco Kroon from comment #3)
> 
> No linking against speex.  So at this stage, I can't reproduce, in fact:
> 
> jkroon@plastiekpoot
> /var/tmp/portage/net-libs/pjproject-2.9-r2/work/pjproject-2.9 $ find . -name
> "*.so" | xargs ldd | grep speex -i
> 
> provides me no output.

If USE=-speex then emerge will have no reason to install speex. Did you confirm you had speex installed before testing?
Comment 5 Jaco Kroon 2020-08-27 18:17:17 UTC
(In reply to Daniel M. Weeks from comment #4)
> If USE=-speex then emerge will have no reason to install speex. Did you
> confirm you had speex installed before testing?

$ equery list -ipo speex
 * Searching for speex ...
[IP-] [  ] media-libs/speex-1.2.0-r1:0

So currently this feels invalid for me, but giving you the benefit of the doubt to show me the error of my ways.
Comment 6 Daniel M. Weeks 2020-08-27 18:28:41 UTC
(In reply to Jaco Kroon from comment #5)
> (In reply to Daniel M. Weeks from comment #4)
> > If USE=-speex then emerge will have no reason to install speex. Did you
> > confirm you had speex installed before testing?
> 
> $ equery list -ipo speex
>  * Searching for speex ...
> [IP-] [  ] media-libs/speex-1.2.0-r1:0
> 
> So currently this feels invalid for me, but giving you the benefit of the
> doubt to show me the error of my ways.

Sorry, I'm doing too many things at once and sent us down the wrong path at the beginning of comment #2.

This happens with USE=speex emerge pjproject. The ebuild just needs to depend on media-libs/speexdsp *and* media-libs/speex when USE=speex.
Comment 7 Larry the Git Cow gentoo-dev 2020-09-12 01:49:49 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8229ba0bc55796692fd469fa5a05e24a79e135be

commit 8229ba0bc55796692fd469fa5a05e24a79e135be
Author:     Jaco Kroon <jaco@uls.co.za>
AuthorDate: 2020-08-27 18:31:46 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2020-09-12 01:49:42 +0000

    net-libs/pjproject: add dependency on media-libs/speex with USE=speex.
    
    Signed-off-by: Jaco Kroon <jaco@uls.co.za>
    Closes: https://bugs.gentoo.org/739242
    Closes: https://github.com/gentoo/gentoo/pull/17286
    Signed-off-by: Sam James <sam@gentoo.org>

 net-libs/pjproject/pjproject-2.9-r2.ebuild | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)