Version: (using KDE 4.1.0) Installed from: Gentoo Packages phonon-xine-4.1.0 fails to compile with xine-lib-1.1.15 with the following error: In file included from /usr/include/xine/input_plugin.h:35, from /usr/include/xine/xine_internal.h:55, from /var/tmp/paludis/kde-base-phonon-xine-4.1.0/work/phonon-xine-4.1.0/phonon/xine/net_buf_ctrl.c:37: /usr/include/xine/buffer.h:679: error: expected '=', ',', ';', 'asm' or '__attribute__' before '_x_is_fourcc' /var/tmp/paludis/kde-base-phonon-xine-4.1.0/work/phonon-xine-4.1.0/phonon/xine/net_buf_ctrl.c: In function 'nbc_init': /var/tmp/paludis/kde-base-phonon-xine-4.1.0/work/phonon-xine-4.1.0/phonon/xine/net_buf_ctrl.c:550: warning: 'xine_xmalloc' is deprecated (declared at /usr/include/xine/xineutils.h:624) make[2]: *** [phonon/xine/CMakeFiles/phonon_xine.dir/net_buf_ctrl.o] Error 1 You can follow this bug that also affects kdemultimedia-3.5.9 on https://bugs.gentoo.org/show_bug.cgi?id=234926 As previous versions of xine-lib are affected by (CVE-2008-3231), masking 1.1.15 is not a valid solution for us.
The above compilation issue seems to be caused by the use of the ansi flag which is set in the following snippet at /usr/kde/4.1/share/apps/cmake/modules/FindKDE4Internal.cmake if (CMAKE_SYSTEM_NAME MATCHES Linux) set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -std=iso9899:1990 -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer- arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-ex ceptions -fno-check-new -fno-common") add_definitions (-D_BSD_SOURCE) endif (CMAKE_SYSTEM_NAME MATCHES Linux)
I got the verbose output from another user. Here is the offending line: [0m/usr/lib/ccache/bin/x86_64-pc-linux-gnu-g++ -Dkcm_phonon_EXPORTS -march=native -O2 -pipe -fomit-frame-pointer -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -fvisibility-inlines-hidden -O2 -DNDEBUG -DQT_NO_DEBUG -fPIC -I/var/tmp/portage/kde-base/phonon-xine-4.1.0/work/phonon-xine_build/phonon/kcm -I/var/tmp/portage/kde-base/phonon-xine-4.1.0/work/phonon-xine-4.1.0/phonon/kcm -I/var/tmp/portage/kde-base/phonon-xine-4.1.0/work/phonon-xine-4.1.0 -I/var/tmp/portage/kde-base/phonon-xine-4.1.0/work/phonon-xine_build -I/usr/kde/4.1/include -I/usr/kde/4.1/include/KDE -I/usr/include/KDE -I/usr/include/qt4/QtXmlPatterns -I/usr/include/qt4/QtWebKit -I/usr/include/qt4/QtHelp -I/usr/include/qt4/QtAssistant -I/usr/include/qt4/QtDBus -I/usr/include/qt4/QtTest -I/usr/include/qt4/QtUiTools -I/usr/include/qt4/QtScript -I/usr/include/qt4/QtSvg -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtSql -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtDesigner -I/usr/include/qt4/Qt3Support -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtCore -I/usr/include/qt4/Qt -I/usr/share/qt4/mkspecs/default -I/usr/include/qt4 -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -DQT_NO_STL -DQT_NO_CAST_TO_ASCII -D_REENTRANT -DKDE_DEPRECATED_WARNINGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -o phonon/kcm/CMakeFiles/kcm_phonon.dir/main.o -c /var/tmp/portage/kde-base/phonon-xine-4.1.0/work/phonon-xine-4.1.0/phonon/kcm/main.cpp
This is a bug in the xine header and has already been fixed in latest libxine mercurial. Packagers might want to patch their libxine with --- a/src/xine-engine/buffer.h Mon Aug 18 18:27:55 2008 +0100 +++ b/src/xine-engine/buffer.h Tue Aug 19 00:26:52 2008 +0200 @@ -676,7 +676,7 @@ void _x_bmiheader_le2me( xine_bmiheader /* convert xine_waveformatex struct from little endian */ void _x_waveformatex_le2me( xine_waveformatex *wavex ) XINE_PROTECTED; -static inline _x_is_fourcc(void *ptr, void *tag) { +static __inline int _x_is_fourcc(void *ptr, void *tag) { return memcmp(ptr, tag, 4) == 0; }