Subject: Krita dependency kxmlgui fails to build since Qt 5.11

From: Leo Famulari <[email-masked]>
Date: Fri, 29 Jun 2018 17:02:36 -0400

Since we upgraded Qt to 5.11, Krita's dependency kxmlgui has failed to
build:

https://hydra.gnu.org/build/2815173

We see this:

------
/tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcuteditwidget.cpp: In lambda function:
/tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcuteditwidget.cpp:94:27: error: comparison between distinct pointer types ‘QAction*’ and ‘QObject*’ lacks a cast
             if (action != m_action) {
                           ^
In file included from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtGui/qtguiglobal.h:43:0,
                 from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtWidgets/qtwidgetsglobal.h:43,
                 from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtWidgets/qwidget.h:43,
                 from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtWidgets/QWidget:1,
                 from /tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcutseditor.h:30,
                 from /tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcutsdialog_p.h:25,
                 from /tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcuteditwidget.cpp:26:
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qmetatype.h: In instantiation of ‘struct QtPrivate::IsPointerToTypeDerivedFromQObject<QAction*>’:
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qmetatype.h:1614:60:   required from ‘struct QMetaTypeId<QAction*>’
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qmetatype.h:1633:10:   required from ‘struct QMetaTypeId2<QAction*>’
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qobject_impl.h:68:49:   required from ‘struct QtPrivate::TypesAreDeclaredMetaType<QtPrivate::List<QAction*, const QKeySequence&> >’
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qobject.h:327:86:   required from ‘static typename std::enable_if<(QtPrivate::FunctionPointer<Func2>::ArgumentCount == (-1)), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const QObject*, Func2, Qt::ConnectionType) [with Func1 = void (KGlobalAccel::*)(QAction*, const QKeySequence&); Func2 = ShortcutEditWidget::ShortcutEditWidget(QWidget*, const QKeySequence&, const QKeySequence&, bool)::<lambda(QAction*, const QKeySequence&)>; typename std::enable_if<(QtPrivate::FunctionPointer<Func2>::ArgumentCount == (-1)), QMetaObject::Connection>::type = QMetaObject::Connection; typename QtPrivate::FunctionPointer<Func>::Object = KGlobalAccel]’
/tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcuteditwidget.cpp:99:5:   required from here
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qmetatype.h:1386:9: error: invalid application of ‘sizeof’ to incomplete type ‘QAction’
         Q_STATIC_ASSERT_X(sizeof(T), "Type argument of Q_DECLARE_METATYPE(T*) must be fully defined");
         ^
In file included from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qobjectdefs.h:50:0,
                 from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtGui/qwindowdefs.h:44,
                 from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtWidgets/qwidget.h:44,
                 from /gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtWidgets/QWidget:1,
                 from /tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcutseditor.h:30,
                 from /tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcutsdialog_p.h:25,
                 from /tmp/guix-build-kxmlgui-5.42.0.drv-0/kxmlgui-5.42.0/src/kshortcuteditwidget.cpp:26:
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qobjectdefs_impl.h: At global scope:
/gnu/store/kjzfprjsjgyi2y7ybs7rinaac7gziabb-qtbase-5.11.0/include/qt5/QtCore/qobjectdefs_impl.h:429:18: error: ‘QtPrivate::QFunctorSlotObject<Func, N, Args, R>::QFunctorSlotObject(Func) [with Func = ShortcutEditWidget::ShortcutEditWidget(QWidget*, const QKeySequence&, const QKeySequence&, bool)::<lambda(QAction*, const QKeySequence&)>; int N = 2; Args = QtPrivate::List<QAction*, const QKeySequence&>; R = void]’, declared using local type ‘ShortcutEditWidget::ShortcutEditWidget(QWidget*, const QKeySequence&, const QKeySequence&, bool)::<lambda(QAction*, const QKeySequence&)>’, is used but never defined [-fpermissive]
         explicit QFunctorSlotObject(Func f) : QSlotObjectBase(&impl), function(std::move(f)) {}
                  ^
make[2]: *** [src/CMakeFiles/KF5XmlGui.dir/build.make:302: src/CMakeFiles/KF5XmlGui.dir/kshortcuteditwidget.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/tmp/guix-build-kxmlgui-5.42.0.drv-0/build'
make[1]: *** [CMakeFiles/Makefile2:262: src/CMakeFiles/KF5XmlGui.dir/all] Error 2
make[1]: Leaving directory '/tmp/guix-build-kxmlgui-5.42.0.drv-0/build'
make: *** [Makefile:144: all] Error 2
Backtrace:
           4 (primitive-load "/gnu/store/ljdraf9d3rc0lg4m9iqgzxr0155…")
In ice-9/eval.scm:
   191:35  3 (_ _)
In srfi/srfi-1.scm:
    640:9  2 (for-each #<procedure 974980 at /gnu/store/qzsljkcllc0…> …)
In /gnu/store/qzsljkcllc01dmdq9z0yrqri3ajam3vp-module-import/guix/build/gnu-build-system.scm:
   799:31  1 (_ _)
In /gnu/store/qzsljkcllc01dmdq9z0yrqri3ajam3vp-module-import/guix/build/utils.scm:
    616:6  0 (invoke _ . _)

/gnu/store/qzsljkcllc01dmdq9z0yrqri3ajam3vp-module-import/guix/build/utils.scm:616:6: In procedure invoke:
Throw to key `srfi-34' with args `(#<condition &invoke-error [program: "make" arguments: ("-j" "4") exit-status: 2 term-signal: #f stop-signal: #f] 9ddfc0>)'.
builder for `/gnu/store/4b1nca913a2spjf9z6z35v1wqj761qqj-kxmlgui-5.42.0.drv' failed with exit code 1
------