While building the port kdemultimedia with the option WITH_XINE, the configure script cannot detect _x_ao_new_port api correctly in libxine. The current version of libxine has _x_ao_new_port present. But configure scrpit failed to detect it because it tries to compile the test program without -lc_r. So the test got a ``no'' result because of unresolved ``pthread ...'' stuff. With this result, libarts_xine.so is built with ao_new_port instead of the new api _x_ao_new_port, and artsd will end up with ``Undefined symbol "ao_new_port"'' error and crash. Below is what I got in config.log: configure:37027: checking for _x_ao_new_port in -lxine configure:37058: cc -o conftest -DNDEBUG -O2 -O -pipe -march=pentium4 -DQT_THREAD_SUPPORT -I/usr/local/include -I/usr/local/include -I/usr/X11R6/include -D_GETOPT_H -D_THREAD_SAFE conftest.c -lxine -Wl,-export-dynamic -L/usr/local/lib -L/usr/X11R6/lib -ljpeg -L/usr/X11R6/lib >&5 /usr/X11R6/lib/libxine.so: undefined reference to `pthread_attr_destroy' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_create' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_attr_init' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_cancel' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_attr_setscope' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_attr_setschedparam' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_join' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_cond_timedwait' /usr/X11R6/lib/libxine.so: undefined reference to `pthread_attr_getschedparam' configure:37061: $? = 1 configure: failed program was: | /* #line 37035 "configure" */ | /* confdefs.h. */ | | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "kdemultimedia" | #define VERSION "3.2.1" | #ifdef __cplusplus | #include <stdlib.h> | #endif | #define KDELIBSUFF "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_DLFCN_H 1 | #define HAVE_SGI_STL 1 | #define HAVE_STRLCAT 1 | #define HAVE_STRLCAT_PROTO 1 | #define HAVE_STRLCPY 1 | #define HAVE_STRLCPY_PROTO 1 | #define HAVE_CRYPT 1 | #define ksize_t socklen_t | #define HAVE_SYS_TYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_RES_INIT 1 | #define SIZEOF_INT 4 | #define SIZEOF_SHORT 2 | #define SIZEOF_LONG 4 | #define SIZEOF_CHAR_P 4 | #define SIZEOF_SIZE_T 4 | #define SIZEOF_UNSIGNED_LONG 4 | #define HAVE_VSNPRINTF 1 | #define HAVE_SNPRINTF 1 | #define HAVE_LIBZ 1 | #define HAVE_LIBPNG 1 | #define HAVE_LIBJPEG 1 | #define HAVE_LIBPTHREAD 1 | #define HAVE_DIRENT_H 1 | #define STDC_HEADERS 1 | #define HAVE_FCNTL_H 1 | #define HAVE_SYS_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_SYS_FILIO_H 1 | #define HAVE_SYS_SEM_H 1 | #define HAVE_STRING_H 1 | #define HAVE_GETOPT_H 1 | #define HAVE_MACHINE_ENDIAN_H 1 | #define HAVE_USLEEP 1 | #define HAVE_SNPRINTF 1 | #define TIME_WITH_SYS_TIME 1 | #define HAVE_X86_SSE 1 | #define RETSIGTYPE void | #define HAVE_TAGLIB 1 | #define HAVE_CDPARANOIA 1 | #define PATH_CDPARANOIA "/usr/local/bin/cdparanoia" | #define HAVE_LIBPTHREAD 1 | #define HAVE_LIBAUDIOFILE 1 | #define HAVE_GSTREAMER 0 | #define HAVE_MUSICBRAINZ 1 | #define HAVE_TRM 1 | #define HAVE_LIBFLAC 1 | #define HAVE_CDPARANOIA 1 | #define HAVE_VORBIS 2 | #define USE_ARTS 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_SYS_SOUNDCARD_H 1 | #define ATTRIBUTE_ALIGNED_MAX 64 | #define X11_SHARED_MEM 1 | #define X11_DGA2 1 | #define X11_XV 1 | #define X11_XVIDMODE 1 | #define CDDA_PARANOIA 1 | #define OGG_VORBIS 1 | #define INTEL 1 | #define OS_BSD 1 | #define HAVE_LIBTIFF 1 | #define HAVE_JASPER 1 | #define HAVE_DIRENT_H 1 | #define STDC_HEADERS 1 | #define TIME_WITH_SYS_TIME 1 | #define HAVE_FCNTL_H 1 | #define HAVE_SYS_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_PATHS_H 1 | #define HAVE_USLEEP 1 | #define HAVE_XSHMGETEVENTBASE 1 | /* end confdefs.h. */ | | /* Override any gcc2 internal prototype to avoid an error. */ | #ifdef __cplusplus | extern "C" | #endif | /* We use char because int might match the return type of a gcc2 | builtin and then its argument prototype would still apply. */ | char _x_ao_new_port (); | int | main () | { | _x_ao_new_port (); | ; | return 0; | } configure:37079: result: no Fix: I'm not familiar with autotools but I know we need to add ${PTHREAD_LIBS} somewhere in configure or related files. How-To-Repeat: To see the config.log: cd /usr/ports/multimedia/kdemultimedia && make configure -DWITH_XINE To have a wrong libarts_xine.so, just make a kdemultimedia port with XINE
Responsible Changed From-To: freebsd-ports-bugs->kde Over to kde team
State Changed From-To: open->closed Fixed, thanks for reporting!