Bug 391504 - spectacle git 3b69ac3a7 fails to build, deletes a needed #include <xcb/xcb.h> line from KSMainWindow.cpp
Summary: spectacle git 3b69ac3a7 fails to build, deletes a needed #include <xcb/xcb.h>...
Status: RESOLVED FIXED
Alias: None
Product: Spectacle
Classification: Applications
Component: General (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Boudhayan Gupta
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-03-07 08:20 UTC by Duncan
Modified: 2018-03-07 09:15 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Duncan 2018-03-07 08:20:14 UTC
spectacle git commit 3b69ac3a7 says:

Test Plan: If it compiles, all is fine.

Unfortunately, it doesn't, and all is /not/ fine. =:^(

Long story short, the commit removes an #include <xcb/xcb.h> line from KSMainWindow.cpp and that breaks the build.  With just that include line reinserted the build completes and spectacle appears to run just fine.

The details...

Running gentoo/~amd64 with most of my kde packages from live-git using the live ebuilds in the gentoo/kde overlay, I had /just/ updated the general system and then all my kde-live-git packages and spectacle built fine, then ran a redo to check in more detail a couple other packages that wouldn't build and happened to catch this commit within minutes of its merge...

gcc-7.3.0, qt*-5.9.4, and interestingly based on the error below, the brand new and just updated xcb-proto-1.13 (as it happens I follow the xorg announce list and it was announced on Monday, March 5, 2018, so indeed brand new, the gentoo xorg folks are on the ball =:^).  However, I tried downgrading to xcb-proto-1.12 (gentoo -r2 revision), the previously installed version, and the spectacle build still failed with the same error, so it does /not/ appear to be related to the new xcb-proto version after all.

Here's the first set of errors and sure enough, KSMainWindow.cpp was touched by the above commit.
Looking at the commit and the error, and testing, it's actually the removal of the #include <xcb/xcb.h> line.  If I reinsert just that line, the build completes and spectacle runs just fine:

[ 95%] Building CXX object src/CMakeFiles/spectacle.dir/spectacle_autogen/2Z24QZD4NU/qrc_QmlResources.cpp.o
cd /tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999_build/src && /usr/lib64/ccache/bin/x86_64-pc-linux-gnu-g++ -DKCOREADDONS_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_URL_CAST_FROM_STRING -DQT_PRINTSUPPORT_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -DQT_XML_LIB -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999_build/src -I/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src -I/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999_build/src/spectacle_autogen/include -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtConcurrent -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtDBus -isystem /usr/include/qt5/QtPrintSupport -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQml -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/KF5/KCoreAddons -isystem /usr/include/KF5 -isystem /usr/include/KF5/KDBusAddons -isystem /usr/include/KF5/KWidgetsAddons -isystem /usr/include/KF5/KNotifications -isystem /usr/include/KF5/KConfigCore -isystem /usr/include/KF5/KI18n -isystem /usr/include/KF5/KIOWidgets -isystem /usr/include/KF5/KIOCore -isystem /usr/include/KF5/KService -isystem /usr/include/KF5/KJobWidgets -isystem /usr/include/KF5/KCompletion -isystem /usr/include/KF5/KWindowSystem -isystem /usr/include/KF5/KXmlGui -isystem /usr/include/qt5/QtXml -isystem /usr/include/KF5/KConfigWidgets -isystem /usr/include/KF5/KCodecs -isystem /usr/include/KF5/KConfigGui -isystem /usr/include/KF5/KAuth -isystem /usr/include/KF5/KDeclarative -isystem /usr/include/KF5/KPackage -isystem /usr/include/KF5/KNewStuff3 -isystem /usr/include/KF5/KNewStuff3/KNS3 -isystem /usr/include/KF5/KNewStuff3/knscore -isystem /usr/include/KF5/KNewStuff3/kns3 -isystem /usr/include/KF5/KNewStuff3/KNSCore -isystem /usr/include/KF5/Attica -isystem /usr/include/qt5/QtX11Extras   -DQT_NO_DEBUG -DNDEBUG -march=native -pipe -O2 -fmerge-all-constants -fgcse-sm -fgcse-las -fgcse-after-reload -ftree-vectorize -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 -Wvla -Wdate-time -fvisibility=hidden -fvisibility-inlines-hidden   -fPIC -std=gnu++11 -o CMakeFiles/spectacle.dir/spectacle_autogen/2Z24QZD4NU/qrc_QmlResources.cpp.o -c /tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999_build/src/spectacle_autogen/2Z24QZD4NU/qrc_QmlResources.cpp
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp: In constructor 'KSMainWindow::KSMainWindow(bool, QWidget*)':
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:91:9: error: 'xcb_intern_atom_cookie_t' was not declared in this scope
         xcb_intern_atom_cookie_t atomCookie = xcb_intern_atom_unchecked(xcbConn, false, effectName.length(), effectName.constData());
         ^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:92:24: error: 'xcb_intern_atom_reply_t' was not declared in this scope
         QScopedPointer<xcb_intern_atom_reply_t, QScopedPointerPodDeleter> atom(xcb_intern_atom_reply(xcbConn, atomCookie, nullptr));
                        ^~~~~~~~~~~~~~~~~~~~~~~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:92:73: error: template argument 1 is invalid
         QScopedPointer<xcb_intern_atom_reply_t, QScopedPointerPodDeleter> atom(xcb_intern_atom_reply(xcbConn, atomCookie, nullptr));
                                                                         ^
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:92:111: error: 'atomCookie' was not declared in this scope
         QScopedPointer<xcb_intern_atom_reply_t, QScopedPointerPodDeleter> atom(xcb_intern_atom_reply(xcbConn, atomCookie, nullptr));
                                                                                                               ^~~~~~~~~~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:92:80: error: 'xcb_intern_atom_reply' was not declared in this scope
         QScopedPointer<xcb_intern_atom_reply_t, QScopedPointerPodDeleter> atom(xcb_intern_atom_reply(xcbConn, atomCookie, nullptr));
                                                                                ^~~~~~~~~~~~~~~~~~~~~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:93:18: error: request for member 'isNull' in 'atom', which is of non-class type 'int'
         if (atom.isNull()) {
                  ^~~~~~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:98:38: error: 'XCB_PROP_MODE_REPLACE' was not declared in this scope
         xcb_change_property(xcbConn, XCB_PROP_MODE_REPLACE, winId(), atom->atom, XCB_ATOM_CARDINAL, 32, 1, &value);
                                      ^~~~~~~~~~~~~~~~~~~~~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:98:38: note: suggested alternative: '_IOS_NOREPLACE'
         xcb_change_property(xcbConn, XCB_PROP_MODE_REPLACE, winId(), atom->atom, XCB_ATOM_CARDINAL, 32, 1, &value);
                                      ^~~~~~~~~~~~~~~~~~~~~
                                      _IOS_NOREPLACE
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:98:74: error: base operand of '->' is not a pointer
         xcb_change_property(xcbConn, XCB_PROP_MODE_REPLACE, winId(), atom->atom, XCB_ATOM_CARDINAL, 32, 1, &value);
                                                                          ^~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:98:82: error: 'XCB_ATOM_CARDINAL' was not declared in this scope
         xcb_change_property(xcbConn, XCB_PROP_MODE_REPLACE, winId(), atom->atom, XCB_ATOM_CARDINAL, 32, 1, &value);
                                                                                  ^~~~~~~~~~~~~~~~~
/tmp/portage/kde-apps/spectacle-9999/work/spectacle-9999/src/Gui/KSMainWindow.cpp:98:9: error: 'xcb_change_property' was not declared in this scope
         xcb_change_property(xcbConn, XCB_PROP_MODE_REPLACE, winId(), atom->atom, XCB_ATOM_CARDINAL, 32, 1, &value);
         ^~~~~~~~~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/spectacle.dir/build.make:255: src/CMakeFiles/spectacle.dir/Gui/KSMainWindow.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
Comment 1 null 2018-03-07 09:08:26 UTC
Thanks for the report, https://build.kde.org also noticed it. We'll have it fixed in a moment.
Comment 2 Roman Inflianskas 2018-03-07 09:15:21 UTC
Git commit 941c1a517be82bed25d1254ebd735c29b0d2951c by Roman Inflianskas.
Committed on 07/03/2018 at 09:15.
Pushed by romaninflianskas into branch 'master'.

Fix build

Summary:
3b69ac3a7aff broke the build on the CI:
  06:57:49 [ 42%] Building CXX object src/CMakeFiles/spectacle.dir/Gui/KSWidget.cpp.o
  06:57:50 /usr/home/jenkins/workspace/Applications spectacle kf5-qt5 FreeBSDQt5.9/src/Gui/KSMainWindow.cpp:91:9: error: unknown type name 'xcb_intern_atom_cookie_t'

Reviewers: rkflx, #spectacle

Reviewed By: rkflx, #spectacle

Subscribers: rkflx

Differential Revision: https://phabricator.kde.org/D11110

M  +1    -0    src/Gui/KSMainWindow.cpp

https://commits.kde.org/spectacle/941c1a517be82bed25d1254ebd735c29b0d2951c