KSCD cdda not working in 9.3
I am still trying to track down why cdda does not work in 9.3. I am hoping some of you more programmer types can help. Here are the relevant config.log entries, followed with the results. BTW, this is on a x86_64 computer, but I know it also affects i586 as well. configure:41058: checking if kscd can be compiled configure:41068: result: yes configure:41084: checking for CDDA configure:41119: checking pthread.h usability configure:41131: gcc -c -ansi -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -DNDEBUG -O2 -Wformat-security -Wmissing-format-attribute -DQT_THREAD_SUPPORT -D_REENTRANT conftest.c >&5 configure:41137: $? = 0 configure:41141: test -z || test ! -s conftest.err configure:41144: $? = 0 configure:41147: test -s conftest.o configure:41150: $? = 0 configure:41160: result: yes configure:41164: checking pthread.h presence configure:41174: gcc -E -DQT_THREAD_SUPPORT -D_REENTRANT conftest.c configure:41180: $? = 0 configure:41200: result: yes configure:41235: checking for pthread.h configure:41242: result: yes configure:41281: gcc -c -ansi -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -DNDEBUG -O2 -Wformat-security -Wmissing-format-attribute -DQT_THREAD_SUPPORT -D_REENTRANT conftest.c >&5 In file included from /usr/include/asm-x86_64/byteorder.h:31, from /usr/include/asm/byteorder.h:4, from /usr/include/linux/cdrom.h:14, from conftest.c:104: /usr/include/linux/byteorder/little_endian.h:43: error: syntax error before "__cpu_to_le64p" /usr/include/linux/byteorder/little_endian.h: In function `__cpu_to_le64p': /usr/include/linux/byteorder/little_endian.h:45: error: `__le64' undeclared (first use in this function) /usr/include/linux/byteorder/little_endian.h:45: error: (Each undeclared identifier is reported only once /usr/include/linux/byteorder/little_endian.h:45: error: for each function it appears in.) /usr/include/linux/byteorder/little_endian.h: At top level: /usr/include/linux/byteorder/little_endian.h:47: error: syntax error before '*' token /usr/include/linux/byteorder/little_endian.h: In function `__le64_to_cpup': /usr/include/linux/byteorder/little_endian.h:49: error: `p' undeclared (first use in this function) /usr/include/linux/byteorder/little_endian.h: At top level: /usr/include/linux/byteorder/little_endian.h:67: error: syntax error before "__cpu_to_be64p" /usr/include/linux/byteorder/little_endian.h: In function `__cpu_to_be64p': /usr/include/linux/byteorder/little_endian.h:69: error: `__be64' undeclared (first use in this function) /usr/include/linux/byteorder/little_endian.h:69: error: syntax error before "__swab64p" /usr/include/linux/byteorder/little_endian.h: At top level: /usr/include/linux/byteorder/little_endian.h:71: error: syntax error before '*' token /usr/include/linux/byteorder/little_endian.h: In function `__be64_to_cpup': /usr/include/linux/byteorder/little_endian.h:73: error: `p' undeclared (first use in this function) conftest.c: In function `main': conftest.c:111: warning: implicit declaration of function `ioctl' /usr/include/linux/byteorder/little_endian.h: In function `__cpu_to_be64p': /usr/include/linux/byteorder/little_endian.h:67: warning: unused parameter `p' configure:41287: $? = 1 configure: failed program was: | /* confdefs.h. */ Result in config.h //* Define if you will CDDA support in kscd *// //* #undef BUILD_CDDA *// //* Define if you have cdparanoia installed *// #define CDDA_PARANOIA 1 Since it is not defined, it does not compile and therefore kscd is not compiled with cdda support, which is why digital extraction is not working in 9.3's kscd. The little_endian.h problems may be the problem as far as I can see, which is quite different than 9.2 little_endian.h, but that is perhaps the limit of my ability. Can anyone see something relevant? -- Joe Morris New Tribes Mission Email Address: Joe_Morris@ntm.org Registered Linux user 231871
On Wednesday 01 June 2005 00:29, Joe Morris (NTM) wrote:
/usr/include/linux/byteorder/little_endian.h:43: error: syntax error before "__cpu_to_le64p"
Strange. What version of glibc-devel do you have installed, and what is the output from rpm -V glibc-devel
On Wednesday 01 June 2005 01:00, Anders Johansson wrote:
On Wednesday 01 June 2005 00:29, Joe Morris (NTM) wrote:
/usr/include/linux/byteorder/little_endian.h:43: error: syntax error before "__cpu_to_le64p"
Strange. What version of glibc-devel do you have installed, and what is the output from
rpm -V glibc-devel
OK, never mind, I just got the source and tried to compile it and I get the same thing. The problem is that the definition of __le64 is inside an #if !defined (__STRICT_ANSI__) block and the configure test program uses the compile flag -std=iso9899:1990 which defines that macro This seems like a bug in autoconf
On Wednesday 01 June 2005 01:00, Anders Johansson wrote:
On Wednesday 01 June 2005 00:29, Joe Morris (NTM) wrote:
/usr/include/linux/byteorder/little_endian.h:43: error: syntax error before "__cpu_to_le64p"
Strange. What version of glibc-devel do you have installed, and what is the output from
rpm -V glibc-devel
OK, never mind, I just got the source and tried to compile it and I get the same thing.
The problem is that the definition of __le64 is inside an #if !defined (__STRICT_ANSI__) block and the configure test program uses the compile flag -std=iso9899:1990 which defines that macro
This seems like a bug in autoconf I just updated to 3.4.1, and there is still the same problem. I was doing some checking, and I don't think it is an autoconf problem. I'll share my thinking process and hopefully someone will see my error or help to narrow down the choices. I had downloaded the kdemultimedia3 src.rpm and rebuilt it to try to get kscd cdda to work, with no success. I had built it (with a patch for KAudiocreator) on 9.2, which worked. On 9.3, it doesn't. Same src.rpm. I just checked, and it appears autoconf and automake are basically the same version for both 9.2 and 9.3. The file with all the errors, little_endian.h, is part of glibc-devel. That file is quite different in 9.2. IIANM, all the failing parts of little_endian.h are not present in 9.2. I do not know
Anders Johansson wrote: programming (actually more of a hardware guy), but I suspect a glibc problem/bug. I also ran a 2.6.11.5 patched kernel.org kernel in 9.2, so kernel versions were very close from my 9.2 and 9.3. I looked at what you wrote above Anders and tried to follow along but I got lost [but I do respect your programming and code reading skills]. I know I could add a cd audio cable, but that doesn't fix the problem, only works around the problem. It is also a bothersome problem for my daughters' laptops I upgraded to 9.3. They cannot add a cd audio cable, so I would like to help get the bug found and fixed. TIA for any help in tracking down the source of this bug. -- Joe Morris New Tribes Mission Email Address: Joe_Morris@ntm.org Registered Linux user 231871
On Wednesday 01 June 2005 01:00, Anders Johansson wrote:
On Wednesday 01 June 2005 00:29, Joe Morris (NTM) wrote:
/usr/include/linux/byteorder/little_endian.h:43: error: syntax error before "__cpu_to_le64p"
Strange. What version of glibc-devel do you have installed, and what is the output from
rpm -V glibc-devel
OK, never mind, I just got the source and tried to compile it and I get the same thing.
The problem is that the definition of __le64 is inside an #if !defined (__STRICT_ANSI__) block and the configure test program uses the compile flag -std=iso9899:1990 which defines that macro Thanks for the tips Anders, it was a big help as I looked around and
Anders Johansson wrote: tried to understand what was happening. I will paste a patch that has it working again for me. I will put the rpms in my apt repository at http://ftp.gwdg.de/pub/linux/misc/suser-jmorris/suse93 which will be synced tonight, so they should be there tomorrow for x86_64. For other archs, here is the pasted patch (not being a programmer, if any programmer type wants to change it...) ________________ *--- kscd/libwm/plat_linux_cdda.c 2005-06-01 12:37:12.000000000 -0500* *+++ kscd/libwm/plat_linux_cdda.c.new 2005-06-01 22:57:47.000000000 -0500* @@ -36,12 +36,25 @@ #endif /* don't undef ansi for the other includes */ -#ifdef __STICT_ANSI__ +#ifdef __STRICT_ANSI__ #undef __STRICT_ANSI__ +/* ugly workaround for broken glibc shipped in SuSE 9.0 */ +#define inline __inline__ +#define asm __asm__ #include <asm/types.h> +#include <linux/cdrom.h> +#undef inline +#undef asm +/* types.h and cdio.h are included by wm_cdda.h */ #define __STRICT_ANSI__ #else +#define inline __inline__ +#define asm __asm__ #include <asm/types.h> +#include <linux/cdrom.h> +#undef inline +#undef asm +/* types.h and cdio.h are included by wm_cdda.h */ #endif @@ -51,14 +64,6 @@ #include <resmgr.h> #endif -/* ugly workaround for broken glibc shipped in SuSE 9.0 */ -#define inline __inline__ -#define asm __asm__ -#include <linux/cdrom.h> -#undef inline -#undef asm -/* types.h and cdio.h are included by wm_cdda.h */ - #include <stdio.h> #include <math.h> #include <sys/ioctl.h> *--- kscd/libwm/configure.in.in 2005-05-23 07:06:56.000000000 -0500* *+++ kscd/libwm/configure.in.in.new 2005-06-02 16:15:38.000000000 -0500* @@ -18,7 +18,9 @@ AC_CHECK_HEADERS(pthread.h) AC_TRY_COMPILE( [ +#undef __STRICT_ANSI__ #define asm __asm__ +#define inline __inline__ #include <linux/types.h> #include <linux/cdrom.h> ],[ Hope this helps others. -- Joe Morris New Tribes Mission Email Address: Joe_Morris@ntm.org Registered Linux user 231871
Anders Johansson wrote:
On Wednesday 01 June 2005 00:29, Joe Morris (NTM) wrote:
/usr/include/linux/byteorder/little_endian.h:43: error: syntax error before "__cpu_to_le64p"
Strange. What version of glibc-devel do you have installed, and what is the output from
rpm -V glibc-devel joe@jmorris:~/tmp> rpm -q glibc-devel glibc-devel-2.3.4-23 joe@jmorris:~/tmp> rpm -V glibc-devel joe@jmorris:~/tmp> -- Joe Morris New Tribes Mission Email Address: Joe_Morris@ntm.org Registered Linux user 231871
participants (2)
-
Anders Johansson
-
Joe Morris (NTM)