Bug 463009

Summary: cdda_interface.h not compatible with C++
Product: [Fedora] Fedora Reporter: Kevin Kofler <kevin>
Component: cdparanoiaAssignee: Kevin Kofler <kevin>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: medium    
Version: rawhideCC: ajax, jarod, matt_domsch, pjones, ville.skytta
Target Milestone: ---Keywords: Patch
Target Release: ---   
Hardware: All   
OS: Linux   
URL: http://linux.dell.com/files/fedora/FixBuildRequires/mock-results/i386/kdemultimedia-4.1.1-1.fc10.src.rpm/result/build.log
Whiteboard:
Fixed In Version: 10.2-2.fc10 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-09-30 13:30:05 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 463452    

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.