Bug 374027

Summary: Does not build for i686
Product: [Plasma] plasmashell Reporter: Fabian Vogt <fabian>
Component: IconAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED UPSTREAM    
Severity: normal CC: kde
Priority: NOR    
Version: master   
Target Milestone: 1.0   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:

Description Fabian Vogt 2016-12-22 08:26:56 UTC
Same as https://bugs.kde.org/show_bug.cgi?id=371721 , but for plasma-workspace

Core issue seems to me that moc does not -D _REDIRECT, so glibc uses an evil

#define open open64

which results in

moc_iconapplet_FERWDM656PUOUJ.cpp:128:21: error: 'class IconApplet' has no member named 'open64'; did you mean 'open'?

IMO this needs to be fixed in Qt, but as everything else works on i686 (except kget, same issue), this is doing something differently.
Maybe other components #include different headers that fix it by #undef open?

(Feel free to close as WONTFIX if it's too ugly to work around in plasma)
Comment 1 Christophe Marin 2016-12-22 10:10:42 UTC
"critical" is used for data loss bugs only.
Comment 2 David Edmundson 2016-12-22 12:40:34 UTC
Copying from the linked bug report #14:

>Wait. Something is really broken on CentOS 6.8 though, because according to http://ac-archive.sourceforge.net/largefile/glibc.html the #define open open64 should only happen when __REDIRECT is not set, and it should be set for gcc >= 2.x, see cdefs.h on that page. Can you check if your system headers match what that page says?
I'm not pushing the #undef hacks after all, they shouldn't be needed.
Comment 3 Fabian Vogt 2016-12-23 16:21:33 UTC
Found the issue: moc does not define __GNUC__, so the

#if defined __GNUC__ && __GNUC__ >= 2

check does not pass inside glibc.

I reported it as https://bugreports.qt.io/browse/QTBUG-57796