lirios / shell

:shell: Convergent shell for desktops, phones and tables built with QtQuick, Wayland and Material Design
GNU General Public License v3.0
232 stars 14 forks source link

Weird build error randomly started happening (with Qt 5.13) #173

Closed n3rdopolis closed 4 years ago

n3rdopolis commented 5 years ago

Not sure what happened, as I was able to build it last week, and nothing changed in this repo since... I did rebuild Qt, and GTK, maybe something changed upstream. It built fine with Qt 5.13 before

[ 84%] Building CXX object src/imports/shell-private/CMakeFiles/shell-privateplugin.dir/shellsurfaceitem.cpp.o [ 84%] Building CXX object src/imports/shell-private/CMakeFiles/shell-privateplugin.dir/windowmousetracker.cpp.o [ 85%] Building CXX object src/imports/shell-private/CMakeFiles/shell-privateplugin.dir/shell-privateplugin_autogen/mocs_compilation.cpp.o In file included from /opt/include/QtQml/qqml.h:43, from /opt/include/QtQml/QtQml:8, from /srcbuild/lirios-shell/src/imports/shell-private/plugin.cpp:24: /opt/include/QtQml/qqmlprivate.h: In instantiation of ‘void QQmlPrivate::createInto(void) [with T = GtkSurfaceQuickParent]’: /opt/include/QtQml/qqml.h:287:31: required from ‘int qmlRegisterType(const char, int, int, const char) [with T = GtkSurfaceQuickParent]’ /srcbuild/lirios-shell/src/imports/shell-private/plugin.cpp:148:93: required from here /opt/include/QtQml/qqmlprivate.h:124:37: error: invalid new-expression of abstract class type ‘QQmlPrivate::QQmlElement’ void createInto(void memory) { new (memory) QQmlElement; } ^~~~~~~ /opt/include/QtQml/qqmlprivate.h:103:11: note: because the following virtual functions are pure within ‘QQmlPrivate::QQmlElement’: class QQmlElement final : public T ^~~ In file included from /opt/include/QtWaylandCompositor/QWaylandShellSurface:1, from /opt/include/QtWaylandCompositor/qwaylandwlshell.h:46, from /opt/include/QtWaylandCompositor/QWaylandWlShell:1, from /srcbuild/lirios-shell/src/imports/shell-private/plugin.cpp:26: /opt/include/QtWaylandCompositor/qwaylandshellsurface.h:58:44: note: ‘virtual QWaylandQuickShellIntegration QWaylandShellSurface::createIntegration(QWaylandQuickShellSurfaceItem)’ virtual QWaylandQuickShellIntegration createIntegration(QWaylandQuickShellSurfaceItem item) = 0; ^~~~~ make[2]: [src/imports/shell-private/CMakeFiles/shell-privateplugin.dir/build.make:141: src/imports/shell-private/CMakeFiles/shell-privateplugin.dir/plugin.cpp.o] Error 1 make[2]: Waiting for unfinished jobs.... make[1]: [CMakeFiles/Makefile2:2020: src/imports/shell-private/CMakeFiles/shell-privateplugin.dir/all] Error 2 make: [Makefile:141: all] Error 2

plfiorini commented 5 years ago

Not sure either, I built against Qt 5.14 not so long ago.

n3rdopolis commented 5 years ago

Trying to look at Qt's commit log is kind of confusing with all the remote-tracking branch merging. I can't tell if there's been a recent change, but I will try to rebuild Qt again, and see what happens

johanhelsing commented 5 years ago

You can do git log v5.13.0..v5.13.1 to see all commits that are new between two versions.

Maybe https://code.qt.io/cgit/qt/qtwayland.git/commit/?id=5400af8850a7a73a19443839fbd0c8f3d45b091b is relevant?

n3rdopolis commented 5 years ago

going to try that, have to trigger a whole rebuild though after another experiment..

n3rdopolis commented 4 years ago

Sorry about that, just tried it, and reverting that commit worked

plfiorini commented 4 years ago

@johanhelsing So I should just replace all instance of QT_WAYLAND_COMPOSITOR_QUICK with QT_CONFIG(wayland_compositor_quick) ?

johanhelsing commented 4 years ago

Yeah I think so. We added QT_WAYLAND_COMPOSITOR_QUICK while (or perhaps before?) the configure system was being rewritten.

plfiorini commented 4 years ago

QT_WAYLAND_COMPOSITOR_QUICK ever existed as far as I remember :) It predates the new configure system for sure.

plfiorini commented 4 years ago

Every instance of QT_WAYLAND_COMPOSITOR_QUICK was removed, this issue should no longer be reproduced.