Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 74591

Summary: kde-base/kdemultimedia 3.3.2 fails if speex not installed (no dependency)
Product: Gentoo Linux Reporter: Neil Funk <infinitedowntime>
Component: [OLD] KDEAssignee: Gentoo KDE team <kde>
Status: RESOLVED INVALID    
Severity: normal    
Priority: High    
Version: unspecified   
Hardware: x86   
OS: Linux   
URL: http://www.cs.iastate.edu/~neilfunk/kdemultimedia_speex_error.txt
Whiteboard:
Package list:
Runtime testing required: ---

Description Neil Funk 2004-12-15 23:42:52 UTC
Please note that this is not the same as bug# 68583! (Though that bug is occurs here as well.)
  This is with kdemultimedia-3.3.2, but I'm pretty sure this is a problem with 3.3.1 as well (I had a very similar error, but not positive if it was the exact same.)  3.3.0 emerged fine back in the day, so I think that version is unaffected. 
  


Reproducible: Always
Steps to Reproduce:
1.emerge -C speex
2.emerge kdemultimedia  *OR*  USE="speex" emerge kdemultimedia *OR*  USE="-speex" emerge kdemultimedia
3.

Actual Results:  
The setting of the "speex" USE flag has no effect on the build.  The
kdemultimedia build apparently requires speex as a dependancy, but fails to
install this first.  So if you don't already have speex installed, the build
will die with the following error:

speex_decoder.cpp: In member function `virtual bool
aKode::SpeexDecoder::readFrame(aKode::AudioFrame*)':
speex_decoder.cpp:251: error: cannot convert `int16_t*' to `float*' for argument
`3' to `int speex_decode(void*, SpeexBits*, float*)'
speex_decoder.cpp:262: error: cannot convert `int16_t*' to `float*' for argument
`1' to `void speex_decode_stereo(float*, int, SpeexStereoState*)'
make[4]: *** [speex_decoder.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: Leaving directory
`/tmp/portage/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/akode/plugins/xiph_decoder'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory
`/tmp/portage/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/akode/plugins'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory
`/tmp/portage/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/akode'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory
`/tmp/portage/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2'
make: *** [all] Error 2

Expected Results:  
If the "speex" USE flag is set, speex should be pulled in as a dependency.
If the "-speex" USE flag is set, the the build should really not use speex, and
avoid the aformentioned errors.  
(And if speex is in fact a hard depenency, what do we have a deceptive USE flag
for then?)

Here is my portage info:
Portage 2.0.51-r8 (default-linux/x86/2004.0, gcc-3.4.3, glibc-2.3.4.20041102-r0,
2.6.9 i686)
=================================================================
System uname: 2.6.9 i686 AMD Athlon(tm) XP 2400+
Gentoo Base System version 1.6.7
Python:              dev-lang/python-2.3.4 [2.3.4 (#1, Jun 11 2004, 07:12:52)]
dev-lang/python:     2.3.4
sys-devel/autoconf:  2.59-r6, 2.13
sys-devel/automake:  1.8.5-r2, 1.5, 1.4_p6, 1.6.3, 1.7.9, 1.9.3
sys-devel/binutils:  2.15.92.0.2-r2
sys-devel/libtool:   1.5.10-r1
virtual/os-headers:  2.6.8.1-r1
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CFLAGS="-march=i686 -mtune=athlon-xp -O3 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3.3/env /usr/kde/3.3/share/config
/usr/kde/3.3/share/config:/usr/kde/3.3/env:/usr/kde/3.3/shutdown
/usr/kde/3.3/shutdown /usr/kde/3/share/config
/usr/share/config/usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/
/usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/
/usr/share/texmf/xdvi//var/qmail/alias /var/qmail/control /var/vpopmail/domains
/var/vpopmail/etc"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-march=i686 -mtune=athlon-xp -O3 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs autoconfig ccache distlocks sandbox sfperms"
GENTOO_MIRRORS="http://distfiles.gentoo.org
http://distro.ibiblio.org/pub/Linux/distributions/gentoo"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/tmp/portage"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X alsa apache2 apm avi berkdb bitmap-fonts cdparanoia cdr crypt cups encode
esd f77 fam flac foomaticdb fortran gd gdbm gif gnome gphoto2 gpm gtk gtk2 guile
imagemagick imap imlib ipv6 jack java jpeg junit kde kerberos ldap libg++ libwww
mad mikmod mmx motif mozilla mpeg mysql ncurses nls nvidia odbc oggvorbis opengl
oss pam pdflib perl png python qt quicktime readline ruby samba sdl slang snmp
spell sse ssl svga tcltk tcpd tetex tiff truetype usb x86 xml xml2 xmms xv zlib"


And here is my complete log of the build:
http://www.cs.iastate.edu/~neilfunk/kdemultimedia_speex_error.txt

(One important thing omitted in the log above is that portage does indeed
acknowledge the state of my speex USE flag before the build begins.)
Comment 1 Gregorio Guidi (RETIRED) gentoo-dev 2004-12-16 05:10:00 UTC
It's true that kdemultimedia does not respect the speex USE flag, and speex
support is compiled in if and only if it is autodetected by configure.
But your compilation error comes after kdemultimedia has detected that speex
_is_ installed on your system:

from the ./configure output:
checking for speex headers... yes
checking for speex_decoder_ctl in -lspeex... yes
checking for speex11 headers... yes
checking for speex_decode_int in -lspeex... no

What's strange is that given that ./configure output, you should have

#define HAVE_SPEEX 1
#define HAVE_SPEEX11 1
/* #undef BROKEN_SPEEX11 */

in your /var/tmp/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/config.h

and then, reading akode/plugins/xiph_decoder/speex_decoder.cpp (line ~250):

    #if defined(HAVE_SPEEX11) && !defined(BROKEN_SPEEX11)
    speex_decode_int(m_data->dec_state, &m_data->bits, m_data->out_buffer);
    #else
    speex_decode(m_data->dec_state, &m_data->bits, m_data->out_buffer);
    #endif

the function speex_decode_int() should be compiled, while it seems 
speex_decode() is compiled instead, and compilation fails.
Comment 2 Neil Funk 2004-12-16 09:50:30 UTC
Hmm.  I'm heading moving home today so I won't have time to check that stuff till sunday, but when I do I'll let you know.  Thanks for looking into this with me.
Comment 3 Neil Funk 2004-12-28 16:46:56 UTC
Well, this might have been my mistake :-[
I found that I somehow had speex headers in /usr/local/include even though I did not have speex installed.  I don't know how they got there, but it's unlikely that this is any fault of kdemultimedia.  Sorry about initially marking this as a  blocker; I misunderstood the meaning.  I think this bug can be closed, but I'll leave that up to someone who knows more about this than I.  Thank you for your help.
Comment 4 Gregorio Guidi (RETIRED) gentoo-dev 2004-12-29 02:20:59 UTC
closing.
Comment 5 Stefan Huszics 2005-03-05 08:41:32 UTC
I have pretty much the same problem.
I have speex 1.0.2 installed (even reemerged it), but still speex_decode_int in -lspeex seems to be missing and leading to kdemultimedia compile failiour.

Donnow exactly where, but somewhere something is broken for sure.

Could someone reopen & possibly change bugsummary to something more apropriate?

make[4]: Entering directory `/var/portage/tmp/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/akode/plugins/xiph_decoder'
/bin/sh ../../../libtool --silent --mode=compile --tag=CXX i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../../.. -I../../../akode/lib -I/usr/kde/3.3/include -I/usr/qt/3/include -I/usr/X11R6/include   -DQT_THREAD_SUPPORT  -D_REENTRANT  -DNDEBUG -DNO_DEBUG -O2 -mcpu=athlon-xp -O2 -pipe -fomit-frame-pointer -fstack-protector -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -c -o flac_decoder.lo flac_decoder.cpp
/bin/sh ../../../libtool --silent --mode=compile --tag=CXX i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../../.. -I../../../akode/lib -I/usr/kde/3.3/include -I/usr/qt/3/include -I/usr/X11R6/include   -DQT_THREAD_SUPPORT  -D_REENTRANT  -DNDEBUG -DNO_DEBUG -O2 -mcpu=athlon-xp -O2 -pipe -fomit-frame-pointer -fstack-protector -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -c -o speex_decoder.lo speex_decoder.cpp
/bin/sh ../../../libtool --silent --mode=compile --tag=CXX i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../../.. -I../../../akode/lib -I/usr/kde/3.3/include -I/usr/qt/3/include -I/usr/X11R6/include   -DQT_THREAD_SUPPORT  -D_REENTRANT  -DNDEBUG -DNO_DEBUG -O2 -mcpu=athlon-xp -O2 -pipe -fomit-frame-pointer -fstack-protector -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -c -o vorbis_decoder.lo vorbis_decoder.cpp
/bin/sh ../../../libtool --silent --mode=compile --tag=CXX i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../../.. -I../../../akode/lib -I/usr/kde/3.3/include -I/usr/qt/3/include -I/usr/X11R6/include   -DQT_THREAD_SUPPORT  -D_REENTRANT  -DNDEBUG -DNO_DEBUG -O2 -mcpu=athlon-xp -O2 -pipe -fomit-frame-pointer -fstack-protector -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -c -o xiph_decoder.lo xiph_decoder.cpp
speex_decoder.cpp: In member function `virtual bool 
   aKode::SpeexDecoder::readFrame(aKode::AudioFrame*)':
speex_decoder.cpp:251: error: cannot convert `int16_t*' to `float*' for 
   argument `3' to `int speex_decode(void*, SpeexBits*, float*)'
speex_decoder.cpp:262: error: cannot convert `int16_t*' to `float*' for 
   argument `1' to `void speex_decode_stereo(float*, int, SpeexStereoState*)'
make[4]: *** [speex_decoder.lo] Fel 1
make[4]: Leaving directory `/var/portage/tmp/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/akode/plugins/xiph_decoder'
make[3]: *** [all-recursive] Fel 1
make[3]: Leaving directory `/var/portage/tmp/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/akode/plugins'
make[2]: *** [all-recursive] Fel 1
make[2]: Leaving directory `/var/portage/tmp/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2/akode'
make[1]: *** [all-recursive] Fel 1
make[1]: Leaving directory `/var/portage/tmp/portage/kdemultimedia-3.3.2/work/kdemultimedia-3.3.2'
make: *** [all] Fel 2

!!! ERROR: kde-base/kdemultimedia-3.3.2 failed.
!!! Function kde_src_compile, Line 166, Exitcode 2
!!! died running emake, kde_src_compile:make
!!! If you need support, post the topmost build error, NOT this status message.

---------

checking for vorbis headers... yes
checking for ov_test_callbacks in -lvorbisfile... yes
checking for speex headers... yes
checking for speex_decoder_ctl in -lspeex... yes
checking for speex11 headers... yes
checking for speex_decode_int in -lspeex... no


Comment 6 Stefan Huszics 2005-03-05 10:33:32 UTC
To try to fix this I tried emerging various unstable speex versions

After emergin 1.0.3 it still failed.
After emergin 1.1.5 it worked.

I would thus assume that kdemultimedia 3.3.2 actually needs a Speexversion of 1.1.5 (or higher?) to work. Thus ebuild dependency version bug?