Skip to contentSkip to conversation

qt5wayland: add fix from upstream to compile without QtQuick

PATCH New Floris Bos 2 participants 4 messages Aug 6, 2018 – Aug 9, 2018

lore
Share & tools
lore

Floris Bos

author
#0 lore raw

PATCH v2 1/1 qt5wayland: add fix from upstream to compile without QtQuick

Compiling qt5wayland fails if you do not have the QtQuick module:

==
.obj/qwaylandquickhardwarelayer.o: In function `QWaylandQuickHardwareLayer::classBegin()':
qwaylandquickhardwarelayer.cpp:(.text+0x170): undefined reference to `QWaylandQuickItem::staticMetaObject'
.obj/qwaylandquickhardwarelayer.o: In function `non-virtual thunk to QWaylandQuickHardwareLayer::classBegin()':
qwaylandquickhardwarelayer.cpp:(.text+0x1cc): undefined reference to `QWaylandQuickItem::staticMetaObject'
.obj/qwaylandquickhardwarelayer.o: In function `QWaylandQuickHardwareLayer::disableSceneGraphPainting()':
qwaylandquickhardwarelayer.cpp:(.text+0x1e0): undefined reference to QWaylandQuickItem::setPaintEnabled(bool)' .obj/qwaylandquickhardwarelayer.o: In function QWaylandQuickHardwareLayerPrivate::layerIntegration()':
qwaylandquickhardwarelayer.cpp:(.text+0x22c): undefined reference to QtWayland::HardwareLayerIntegrationFactory::keys(QString const&)' qwaylandquickhardwarelayer.cpp:(.text+0x408): undefined reference to QtWayland::HardwareLayerIntegrationFactory::create(QString const&, QStringList const&, QString const&)' qwaylandquickhardwarelayer.cpp:(.text+0x890): undefined reference to `QtWayland::HardwareLayerIntegrationFactory::create(QString const&, QStringList const&, QString const&)'
collect2: error: ld returned 1 exit status
Makefile:375: recipe for target '../../lib/libQt5WaylandCompositor.so.5.11.1' failed
make[4]: *** [../../lib/libQt5WaylandCompositor.so.5.11.1] Error 1
==

Fix taken from upstream's git:
http://code.qt.io/cgit/qt/qtwayland.git/commit/?id=2c48ee65e8c3b894caec214641723d0777fc60b8

No longer depends on declarative after applying either.

---
v1 -> v2:
- do add dependency in .mk if quick is enabled, so it is build first.

---
 .../0001-fix-compilation-without-QtQuick.patch     | 68 ++++++++++++++++++++++
 package/qt5/qt5wayland/Config.in                   |  2 -
 package/qt5/qt5wayland/qt5wayland.mk               |  6 +-
 3 files changed, 73 insertions(+), 3 deletions(-)
 create mode 100644 package/qt5/qt5wayland/0001-fix-compilation-without-QtQuick.patch
package/qt5/qt5wayland/0001-fix-compilation-without-QtQuick.patch new file +68 -0
new file mode 100644
index 0000000..a72e053
@@ -0,0 +1,68 @@
+From 2c48ee65e8c3b894caec214641723d0777fc60b8 Mon Sep 17 00:00:00 2001
+From: Alexander Schlarb <[email protected]>
+Date: Sun, 29 Jul 2018 21:27:28 +0200
+Subject: Fix compilation of QtWayland without QtQuick
+
+Change-Id: I0baf542f89274f48bf7d02121a07d64f0f3a001b
+Reviewed-by: Johan Helsing <[email protected]>
+---
+ src/compositor/compositor_api/compositor_api.pri               | 10 +++++-----
+ .../hardware_integration/qwlhardwarelayerintegration_p.h       |  1 -
+ 2 files changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/src/compositor/compositor_api/compositor_api.pri b/src/compositor/compositor_api/compositor_api.pri
+index e5df0f1f..4a0c0aa6 100644
+--- a/src/compositor/compositor_api/compositor_api.pri
++++ b/src/compositor/compositor_api/compositor_api.pri
+@@ -27,7 +27,6 @@ HEADERS += \
+     compositor_api/qwaylandresource.h \
+     compositor_api/qwaylandsurfacegrabber.h \
+     compositor_api/qwaylandoutputmode_p.h \
+-    compositor_api/qwaylandquickhardwarelayer_p.h \
+ 
+ SOURCES += \
+     compositor_api/qwaylandcompositor.cpp \
+@@ -44,8 +43,7 @@ SOURCES += \
+     compositor_api/qwaylanddestroylistener.cpp \
+     compositor_api/qwaylandview.cpp \
+     compositor_api/qwaylandresource.cpp \
+-    compositor_api/qwaylandsurfacegrabber.cpp \
+-    compositor_api/qwaylandquickhardwarelayer.cpp
++    compositor_api/qwaylandsurfacegrabber.cpp
+ 
+ qtConfig(im) {
+     HEADERS += \
+@@ -71,14 +69,16 @@ qtHaveModule(quick):qtConfig(opengl) {
+         compositor_api/qwaylandquickcompositor.cpp \
+         compositor_api/qwaylandquicksurface.cpp \
+         compositor_api/qwaylandquickoutput.cpp \
+-        compositor_api/qwaylandquickitem.cpp
++        compositor_api/qwaylandquickitem.cpp \
++        compositor_api/qwaylandquickhardwarelayer.cpp
+ 
+     HEADERS += \
+         compositor_api/qwaylandquickcompositor.h \
+         compositor_api/qwaylandquicksurface.h \
+         compositor_api/qwaylandquickoutput.h \
+         compositor_api/qwaylandquickitem.h \
+-        compositor_api/qwaylandquickitem_p.h
++        compositor_api/qwaylandquickitem_p.h \
++        compositor_api/qwaylandquickhardwarelayer_p.h
+ 
+     QT += qml qml-private quick quick-private
+ }
+diff --git a/src/compositor/hardware_integration/qwlhardwarelayerintegration_p.h b/src/compositor/hardware_integration/qwlhardwarelayerintegration_p.h
+index 02de8e8b..1e5fb1a1 100644
+--- a/src/compositor/hardware_integration/qwlhardwarelayerintegration_p.h
++++ b/src/compositor/hardware_integration/qwlhardwarelayerintegration_p.h
+@@ -54,7 +54,6 @@
+ #include <QtWaylandCompositor/qtwaylandcompositorglobal.h>
+ 
+ #include <QObject>
+-#include <QQmlParserStatus>
+ 
+ QT_BEGIN_NAMESPACE
+ 
+-- 
+cgit v1.1-6-g87c4
+
package/qt5/qt5wayland/Config.in +0 -2
index 0182d3c..9f144ac 100644
@@ -5,8 +5,6 @@ comment "qt5wayland needs an OpenGL-capable backend"
 config BR2_PACKAGE_QT5WAYLAND
 	bool "qt5wayland"
 	depends on BR2_PACKAGE_QT5_GL_AVAILABLE
-	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative
-	select BR2_PACKAGE_QT5DECLARATIVE
 	select BR2_PACKAGE_WAYLAND
 	help
 	  Qt is a cross-platform application and UI framework for
package/qt5/qt5wayland/qt5wayland.mk +5 -1
index 98e592f..d6fb6e1 100644
@@ -7,9 +7,13 @@
 QT5WAYLAND_VERSION = $(QT5_VERSION)
 QT5WAYLAND_SITE = $(QT5_SITE)
 QT5WAYLAND_SOURCE = qtwayland-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WAYLAND_VERSION).tar.xz
-QT5WAYLAND_DEPENDENCIES = qt5base qt5declarative wayland
+QT5WAYLAND_DEPENDENCIES = qt5base wayland
 QT5WAYLAND_INSTALL_STAGING = YES
 
+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
+QT5WAYLAND_DEPENDENCIES += qt5declarative
+endif
+
 ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y)
 QT5WAYLAND_DEPENDENCIES += libxkbcommon
 endif
Signature · 1 line
2.7.4
#1 lore raw

PATCH v2 1/1 qt5wayland: add fix from upstream to compile without QtQuick

Hello Floris,

package/qt5/qt5wayland/Config.in comment "qt5wayland needs an OpenGL-capable backend"

Quoted 5 lines · Floris Bos
package/qt5/qt5wayland/Config.in +0 -0
index 0182d3c..9f144ac 100644
@@ -5,8 +5,6 @@ comment "qt5wayland needs an OpenGL-capable backend"

You forgot to drop the "depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE" dependency from this comment, which only existed because of the qt5declarative dependency. I've fixed that before applying.

package/qt5/qt5wayland/Config.in comment "qt5wayland needs an OpenGL-capable backend" · line 7

Quoted 3 lines
package/qt5/qt5wayland/Config.in +0 -0
 config BR2_PACKAGE_QT5WAYLAND
 	bool "qt5wayland"
 	depends on BR2_PACKAGE_QT5_GL_AVAILABLE

Is this OpenGL support dependency needed because of qt5wayland itself, or was it needed only because of the qt5declarative dependency ?

BR2_PACKAGE_WAYLAND doesn't require OpenGL support, so I'm wondering if qt5wayland needs it or not. If it doesn't, could you send a follow-up patch fixing this ?

In the mean time, I've applied your patch to next, after fixing the issue mentioned above regarding the removal of the BR2_PACKAGE_QT5_JSCORE_AVAILABLE dependency.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
author
#2 lore raw

PATCH v2 1/1 qt5wayland: add fix from upstream to compile without QtQuick

Hi,

Quoted 9 lines · Thomas Petazzoni

config BR2_PACKAGE_QT5WAYLAND

Quoted 2 lines

bool "qt5wayland"
depends on BR2_PACKAGE_QT5_GL_AVAILABLE

Is this OpenGL support dependency needed because of qt5wayland itself, or was it needed only because of the qt5declarative dependency ?

BR2_PACKAGE_WAYLAND doesn't require OpenGL support, so I'm wondering if qt5wayland needs it or not. If it doesn't, could you send a follow-up patch fixing this ?

It currently does not compile without OpenGL.

But I was also wondering whether or not that was meant to be as well. So had already opened an issue upstream:
https://bugreports.qt.io/browse/QTBUG-69779

Would indeed be nice if it was possible to do without OpenGL, as then we could finally port some old Qt 4 QWS applications to Qt 5.

Thanks for the merge.

Yours sincerely,

Floris Bos

#3 lore raw

PATCH v2 1/1 qt5wayland: add fix from upstream to compile without QtQuick

Hello,

Quoted 5 lines · Floris Bos
Quoted 3 lines

BR2_PACKAGE_WAYLAND doesn't require OpenGL support, so I'm wondering if qt5wayland needs it or not. If it doesn't, could you send a follow-up patch fixing this ?

It currently does not compile without OpenGL.

OK.

Quoted 6 lines

But I was also wondering whether or not that was meant to be as well. So had already opened an issue upstream:
https://bugreports.qt.io/browse/QTBUG-69779

Would indeed be nice if it was possible to do without OpenGL, as then we could finally port some old Qt 4 QWS applications to Qt 5.

Sure. Thanks for the confirmation!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com