Bug 375290

Summary: Builds with Qt 5.7.1 fail on tests with 'kdeplatformtheme.cpp:333: undefined reference to `QDBusMenuBar::windowChanged(QWindow*, QWindow*)'
Product: [Plasma] plasma-integration Reporter: Rik Mills <rikmills>
Component: generalAssignee: Martin Flöser <mgraesslin>
Status: RESOLVED FIXED    
Severity: normal CC: kde, simonandric5
Priority: NOR    
Version: master   
Target Milestone: ---   
Platform: Kubuntu   
OS: Linux   
Latest Commit: Version Fixed In:

Description Rik Mills 2017-01-19 10:43:28 UTC
On kubuntu CI with Qt 5.7.1 build of current master fails with

[ 98%] Linking CXX executable kdeplatformtheme_unittest
cd /<<BUILDDIR>>/plasma-integration-5.8.5+p17.04+git20170119.0951/obj-x86_64-linux-gnu/autotests && /usr/bin/cmake -E cmake_link_script CMakeFiles/kdeplatformtheme_unittest.dir/link.txt --verbose=1
/usr/bin/c++   -g -O2 -fdebug-prefix-map=/<<BUILDDIR>>/plasma-integration-5.8.5+p17.04+git20170119.0951=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++0x -fno-operator-names -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -pedantic  -Wl,--enable-new-dtags -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -Wl,--no-undefined CMakeFiles/kdeplatformtheme_unittest.dir/kdeplatformtheme_unittest.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdeplatformtheme.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kfontsettingsdata.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/khintssettings.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdeplatformfiledialoghelper.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdeplatformfiledialogbase.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdeplatformsystemtrayicon.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdirselectdialog.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kfiletreeview.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kwaylandintegration.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/x11integration.cpp.o CMakeFiles/kdeplatformtheme_unittest.dir/kdeplatformtheme_unittest_automoc.cpp.o  -o kdeplatformtheme_unittest -rdynamic /usr/lib/x86_64-linux-gnu/libQt5Test.so.5.7.1 /usr/lib/x86_64-linux-gnu/libQt5PlatformSupport.a /usr/lib/x86_64-linux-gnu/libKF5KIOFileWidgets.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5Notifications.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5WaylandClient.so.5.31.0 /usr/lib/x86_64-linux-gnu/libxcb.so /usr/lib/x86_64-linux-gnu/libKF5KIOWidgets.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5KIOCore.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5JobWidgets.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5Service.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5Completion.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5Bookmarks.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5XmlGui.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5IconThemes.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5ConfigWidgets.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5ConfigGui.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5Auth.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5I18n.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5WidgetsAddons.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5ItemViews.so.5.31.0 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.7.1 /usr/lib/x86_64-linux-gnu/libKF5Solid.so.5.31.0 /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5.7.1 /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.7.1 /usr/lib/x86_64-linux-gnu/libKF5ConfigCore.so.5.31.0 /usr/lib/x86_64-linux-gnu/libKF5WindowSystem.so.5.31.0 /usr/lib/x86_64-linux-gnu/libQt5X11Extras.so.5.7.1 /usr/lib/x86_64-linux-gnu/libKF5Codecs.so.5.31.0 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.7.1 /usr/lib/x86_64-linux-gnu/libKF5CoreAddons.so.5.31.0 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.7.1 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.7.1 
CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdeplatformtheme.cpp.o: In function `KdePlatformTheme::createPlatformMenuBar() const':
./obj-x86_64-linux-gnu/autotests/./src/platformtheme/kdeplatformtheme.cpp:333: undefined reference to `QDBusMenuBar::windowChanged(QWindow*, QWindow*)'
collect2: error: ld returned 1 exit status
autotests/CMakeFiles/kdeplatformtheme_unittest.dir/build.make:385: recipe for target 'autotests/kdeplatformtheme_unittest' failed
make[4]: *** [autotests/kdeplatformtheme_unittest] Error 1
make[4]: Leaving directory '/<<BUILDDIR>>/plasma-integration-5.8.5+p17.04+git20170119.0951/obj-x86_64-linux-gnu'
CMakeFiles/Makefile2:427: recipe for target 'autotests/CMakeFiles/kdeplatformtheme_unittest.dir/all' failed
make[3]: *** [autotests/CMakeFiles/kdeplatformtheme_unittest.dir/all] Error 2
make[3]: *** Waiting for unfinished jobs....
Comment 1 Martin Flöser 2017-01-19 16:09:27 UTC
This should be fixed with latest latest master. At least build.kde.org is green again for both master and Plasma/5.9
Comment 2 Rik Mills 2017-01-19 16:45:56 UTC
(In reply to Martin Gräßlin from comment #1)
> This should be fixed with latest latest master. At least build.kde.org is
> green again for both master and Plasma/5.9

No, not fixed herea as far as I can see.

Your CI from it's build log says it has Qt 5.7.0

Found Qt5PlatformSupport: /srv/jenkins/install/ubuntu/x86_64/g++/kf5-qt5/qt5/inst/usr/lib/libQt5PlatformSupport.a (found version "5.7.0")

while KCI has 5.7.1 as referenced in the bug title

I'm not the greatest with this code, but seem as if this is being triggered for failure by code includes by the conditionals like

#if QT_VERSION > QT_VERSION_CHECK(5,7,0)

for example in kdeplatformtheme.cpp ?

Hence it fails here with Qt 5.7.1, but does not on the KDE CI?
Comment 3 David Edmundson 2017-01-20 00:02:41 UTC
Git commit 184d8b4fa947726636a5251f333b80429001455b by David Edmundson.
Committed on 20/01/2017 at 00:02.
Pushed by davidedmundson into branch 'Plasma/5.9'.

Enable QDBusMenuBar when compiling with Qt 5.7.0

M  +2    -2    src/platformtheme/kdeplatformtheme.cpp
M  +1    -1    src/platformtheme/kdeplatformtheme.h

https://commits.kde.org/plasma-integration/184d8b4fa947726636a5251f333b80429001455b
Comment 4 David Edmundson 2017-01-20 00:03:20 UTC
Yep, you're right. Hopefully fixed.
Comment 5 Rik Mills 2017-01-20 08:06:43 UTC
(In reply to David Edmundson from comment #4)
> Yep, you're right. Hopefully fixed.

Afraid not.

That tweak to logic just makes it fail with Qt 5.7.0 on KDE CI in the same way it does with Qt 5.7.1 on kubuntu CI.

The original issue/failure remains.

Now from you CI log:

00:05:15 Linking CXX executable kdeplatformtheme_unittest
00:05:15 CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdeplatformtheme.cpp.o: In function `KdePlatformTheme::createPlatformMenuBar() const':
00:05:15 /home/jenkins/sources/plasma-integration/kf5-qt5/src/platformtheme/kdeplatformtheme.cpp:362: undefined reference to `QDBusMenuBar::windowChanged(QWindow*, QWindow*)'
00:05:15 collect2: error: ld returned 1 exit status
00:05:15 autotests/CMakeFiles/kdeplatformtheme_unittest.dir/build.make:362: recipe for target 'autotests/kdeplatformtheme_unittest' failed
00:05:15 make[2]: *** [autotests/kdeplatformtheme_unittest] Error 1
00:05:15 CMakeFiles/Makefile2:222: recipe for target 'autotests/CMakeFiles/kdeplatformtheme_unittest.dir/all' failed
00:05:15 make[1]: *** [autotests/CMakeFiles/kdeplatformtheme_unittest.dir/all] Error 2
Comment 6 Rik Mills 2017-01-22 08:55:14 UTC
Same failure now on Neon CI.

http://build.neon.kde.org/job/xenial_unstable_plasma_plasma-integration_bin_amd64/67/consoleFull

13:43:33 CMakeFiles/kdeplatformtheme_unittest.dir/__/src/platformtheme/kdeplatformtheme.cpp.o: In function `KdePlatformTheme::createPlatformMenuBar() const':
13:43:33 /workspace/build/src/platformtheme/kdeplatformtheme.cpp:333: undefined reference to `QDBusMenuBar::windowChanged(QWindow*, QWindow*)'
13:43:33 collect2: error: ld returned 1 exit status
13:43:33 autotests/CMakeFiles/kdeplatformtheme_unittest.dir/build.make:385: recipe for target 'autotests/kdeplatformtheme_unittest' failed
13:43:33 make[4]: *** [autotests/kdeplatformtheme_unittest] Error 1
13:43:33 make[4]: Leaving directory '/workspace/build/obj-x86_64-linux-gnu'
13:43:33 CMakeFiles/Makefile2:427: recipe for target 'autotests/CMakeFiles/kdeplatformtheme_unittest.dir/all' failed
13:43:33 make[3]: *** [autotests/CMakeFiles/kdeplatformtheme_unittest.dir/all] Error 2
13:43:33 make[3]: Leaving directory '/workspace/build/obj-x86_64-linux-gnu'
13:43:33 Makefile:141: recipe for target 'all' failed
13:43:33 make[2]: *** [all] Error 2
Comment 7 Christoph Feck 2017-01-23 03:26:39 UTC
QDBusMenuBar::windowChanged is not part of either Qt 5.7 or Qt 5.8.


https://phabricator.kde.org/D3085 says there is a fork of QDBusMenuBar included, but I do not see it committed.
Comment 8 Christoph Feck 2017-01-23 03:31:13 UTC
Sorry, actually it is committed, so the issue is that the build system does not pick the local qdbusmenubar_p.h header.
Comment 9 Rik Mills 2017-01-23 12:00:51 UTC
New rebuilds suggest this has been fixed in

https://cgit.kde.org/plasma-integration.git/commit/?id=026277d1f0e383ac759c4f931f3fd04af11002ba