Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 463009 - cdda_interface.h not compatible with C++
Summary: cdda_interface.h not compatible with C++
Alias: None
Product: Fedora
Classification: Fedora
Component: cdparanoia
Version: rawhide
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Kevin Kofler
QA Contact: Fedora Extras Quality Assurance
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:
Last Closed: 2008-09-30 13:30:05 UTC

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):

How reproducible:

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:
(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:

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.