Bug 463009 - cdda_interface.h not compatible with C++
Summary: cdda_interface.h not compatible with C++
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: cdparanoia
Version: rawhide
Hardware: All
OS: Linux
medium
high
Target Milestone: ---
Assignee: Kevin Kofler
QA Contact: Fedora Extras Quality Assurance
URL: http://linux.dell.com/files/fedora/Fi...
Whiteboard:
Depends On:
Blocks: F10FTBFS
TreeView+ depends on / blocked
 
Reported: 2008-09-20 17:19 UTC by Kevin Kofler
Modified: 2008-09-30 13:30 UTC (History)
5 users (show)

Fixed In Version: 10.2-2.fc10
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2008-09-30 13:30:05 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Kevin Kofler 2008-09-20 17:19:00 UTC
Description of problem:
The /usr/include/cdda/cdda_interface.h header in cdparanoia 10.2 tries to use "private" as a structure member (in line 87: cdda_private_data_t *private;). This is not allowed in C++ because "private" is a C++ keyword. This breaks the kdemultimedia build.

Version-Release number of selected component (if applicable):
cdparanoia-10.2-1.fc10

How reproducible:
Always

Steps to Reproduce:
1. Try to rebuild kdemultimedia 4.1.1 against cdparanoia 10.2.
  
Actual results:
In file included from /builddir/build/BUILD/kdemultimedia-4.1.1/kioslave/audiocd/audiocd.cpp:30:
/usr/include/cdda/cdda_interface.h:87: error: expected unqualified-id before 'private'
/usr/include/cdda/cdda_interface.h:87: error: expected ';' before 'private'

Expected results:
Successful build.

Additional info:
Full build log here:
http://linux.dell.com/files/fedora/FixBuildRequires/mock-results/i386/kdemultimedia-4.1.1-1.fc10.src.rpm/result/build.log
(and thanks to Matt Domsch for his regular rebuilds).

We could hack around this in kdemultimedia with a #define, but of course I'd much prefer cdparanoia to be fixed. :-)

Comment 1 Jarod Wilson 2008-09-23 16:47:48 UTC
This also breaks building at least one multimedia package in a 3rd-party repo...

Comment 2 Jarod Wilson 2008-09-23 17:09:40 UTC
Nb: in my case, even wrapping the cdda_interface.h include with extern "C" doesn't help.

Comment 3 Kevin Kofler 2008-09-23 17:44:52 UTC
extern "C" doesn't excuse the contained code from being valid C++.

This hack should work:
#define private cdparanoia_private
#include <cdda/cdda_interface.h>
#undef private

But instead of adding such hacks to our packages, we should just fix cdparanoia!

Comment 4 Jarod Wilson 2008-09-23 21:16:28 UTC
Gotcha. Hack does indeed work, employing it for the moment.

Any reason we can't simply rename 'private' to 'pvt' in cdparanoia and call it good? I mean, this breakage didn't exist in prior releases, so I doubt if anything outside of cdparanoia itself is actually using that part of that struct by name...

Comment 5 Ville Skyttä 2008-09-25 15:45:44 UTC
Also breaks kaffeine's build.

Upstream fix for cdparanoia: https://trac.xiph.org/changeset/15338

Comment 6 Kevin Kofler 2008-09-29 13:37:05 UTC
Ping? If you don't have the time to fix it, can you please open the package to the "packager" group so somebody else can make the trivial fix (just apply the patch from upstream)?

Comment 7 Kevin Kofler 2008-09-30 13:13:34 UTC
Thanks for having opened the ACL, I'm fixing this now.


Note You need to log in before you can comment on or make changes to this bug.