From patchwork Wed Jul 22 07:55:25 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Corjon X-Patchwork-Id: 498430 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ozlabs.org (Postfix) with ESMTP id 0955614029C for ; Wed, 22 Jul 2015 17:55:46 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id D0B03911A8; Wed, 22 Jul 2015 07:55:44 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CO62+4bqA-8Z; Wed, 22 Jul 2015 07:55:42 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 87B56911A5; Wed, 22 Jul 2015 07:55:42 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 57C511C15D6 for ; Wed, 22 Jul 2015 07:55:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 4C458264FA for ; Wed, 22 Jul 2015 07:55:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lEYup-+YEryh for ; Wed, 22 Jul 2015 07:55:39 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by silver.osuosl.org (Postfix) with ESMTPS id 3969725DE4 for ; Wed, 22 Jul 2015 07:55:39 +0000 (UTC) Received: by wibxm9 with SMTP id xm9so88987745wib.1 for ; Wed, 22 Jul 2015 00:55:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=from:to:cc:subject:date:message-id; bh=8LkT7fNw3v8Lcx5CNEqo2VqRVamrypa1xdrfLuxEGhs=; b=N4GvpcQzvpScOO0d0Else2iGlkZsPqJVDDJri3XaoHmgYHeDHlsmy4Jt+UF6rQdvyb ZsSS5X1GXnB3DwPOVdbxKuqhBPd0Xa3kmjv4aGiR7f9klaBkdtQJrKvLuUHSl1NVo/wb nz/uAi/LE5SjNiWf+11AUGk/Tw0bNr+Xwyw/JtfcosKtgGhpzzUI5+p0oMLn2HlymJDF E9xN3uYOxmgLXg6C5aQYZ+5P8WN45DJJbWNXZ/ntNbwtg7BpBTpXyMjRsFd4owJDgyg4 m5iza53FOR3N+gkCruWaLtXm8nJOMJkKNrXNPGWECYvLjXK+jfPmsePHc8b3bb8c0OwA oVDQ== X-Received: by 10.180.78.73 with SMTP id z9mr3945583wiw.64.1437551737755; Wed, 22 Jul 2015 00:55:37 -0700 (PDT) Received: from mic341-linux.sinters-int.fr ([195.200.174.78]) by smtp.gmail.com with ESMTPSA id q19sm2004873wik.16.2015.07.22.00.55.36 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 22 Jul 2015 00:55:36 -0700 (PDT) From: Julien Corjon To: buildroot@buildroot.org Date: Wed, 22 Jul 2015 09:55:25 +0200 Message-Id: <1437551725-24160-1-git-send-email-corjon.j@ecagroup.com> X-Mailer: git-send-email 2.1.0 Cc: ECA SINTERS software Subject: [Buildroot] [PATCH] qt/qt5webchannel: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Signed-off-by: Julien Corjon --- v1 - This patch is rebased from qt5.5.0 bump commited serie - Add a package patch for build without qml module (bug spotted by Thomas) package/qt5/Config.in | 1 + .../0001-Fix-builds-without-qml-module.patch | 61 ++++++++++++++++++++++ package/qt5/qt5webchannel/Config.in | 11 ++++ package/qt5/qt5webchannel/qt5webchannel.hash | 4 ++ package/qt5/qt5webchannel/qt5webchannel.mk | 61 ++++++++++++++++++++++ 5 files changed, 138 insertions(+) create mode 100644 package/qt5/qt5webchannel/0001-Fix-builds-without-qml-module.patch create mode 100644 package/qt5/qt5webchannel/Config.in create mode 100644 package/qt5/qt5webchannel/qt5webchannel.hash create mode 100644 package/qt5/qt5webchannel/qt5webchannel.mk diff --git a/package/qt5/Config.in b/package/qt5/Config.in index 737a789..3fb65f7 100644 --- a/package/qt5/Config.in +++ b/package/qt5/Config.in @@ -40,6 +40,7 @@ source "package/qt5/qt5quickcontrols/Config.in" source "package/qt5/qt5sensors/Config.in" source "package/qt5/qt5serialport/Config.in" source "package/qt5/qt5svg/Config.in" +source "package/qt5/qt5webchannel/Config.in" source "package/qt5/qt5websockets/Config.in" source "package/qt5/qt5x11extras/Config.in" source "package/qt5/qt5xmlpatterns/Config.in" diff --git a/package/qt5/qt5webchannel/0001-Fix-builds-without-qml-module.patch b/package/qt5/qt5webchannel/0001-Fix-builds-without-qml-module.patch new file mode 100644 index 0000000..0eb007e --- /dev/null +++ b/package/qt5/qt5webchannel/0001-Fix-builds-without-qml-module.patch @@ -0,0 +1,61 @@ +From 4dee412aa655e1dc7f9e01869abcab47e0179422 Mon Sep 17 00:00:00 2001 +From: Julien Corjon +Date: Wed, 22 Jul 2015 09:24:04 +0200 +Subject: [PATCH] Fix builds without qml module + +When we build without qml module we cannot use QJSValue in qmetaobjectpublisher +To prevent QJSValue inclusiion I use a preprocessor directive QT_HAVE_QML. This +is probably not the best solution but I do not know any other QML directive. + +Upstream--Status: https://bugreports.qt.io/browse/QTBUG-47360 +Signed-off-by: Julien Corjon +--- + src/webchannel/qmetaobjectpublisher.cpp | 4 ++++ + src/webchannel/webchannel.pro | 2 ++ + 2 files changed, 6 insertions(+) + +diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp +index 0cad569..b0e9652 100644 +--- a/src/webchannel/qmetaobjectpublisher.cpp ++++ b/src/webchannel/qmetaobjectpublisher.cpp +@@ -41,7 +41,9 @@ + #include + #include + #include ++#ifdef QT_HAVE_QML + #include ++#endif + #include + + QT_BEGIN_NAMESPACE +@@ -486,12 +488,14 @@ QJsonValue QMetaObjectPublisher::wrapResult(const QVariant &result, QWebChannelA + if (!classInfo.isEmpty()) + objectInfo[KEY_DATA] = classInfo; + return objectInfo; ++#ifdef QT_HAVE_QML + } else if (result.canConvert()) { + // Workaround for keeping QJSValues from QVariant. + // Calling QJSValue::toVariant() converts JS-objects/arrays to QVariantMap/List + // instead of stashing a QJSValue itself into a variant. + // TODO: Improve QJSValue-QJsonValue conversion in Qt. + return wrapResult(result.value().toVariant(), transport, parentObjectId); ++#endif + } else if (result.canConvert()) { + // recurse and potentially wrap contents of the array + return wrapList(result.toList(), transport); +diff --git a/src/webchannel/webchannel.pro b/src/webchannel/webchannel.pro +index eba8123..f476d6f 100644 +--- a/src/webchannel/webchannel.pro ++++ b/src/webchannel/webchannel.pro +@@ -30,6 +30,8 @@ SOURCES += \ + qtHaveModule(qml) { + QT += qml + ++ QMAKE_CXXFLAGS += "-DQT_HAVE_QML" ++ + SOURCES += \ + qqmlwebchannel.cpp \ + qqmlwebchannelattached.cpp +-- +2.1.0 + diff --git a/package/qt5/qt5webchannel/Config.in b/package/qt5/qt5webchannel/Config.in new file mode 100644 index 0000000..218629a --- /dev/null +++ b/package/qt5/qt5webchannel/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT5WEBCHANNEL + bool "qt5webchannel" + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5WEBSOCKETS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5webchannel module. + + http://qt.io diff --git a/package/qt5/qt5webchannel/qt5webchannel.hash b/package/qt5/qt5webchannel/qt5webchannel.hash new file mode 100644 index 0000000..b96aebb --- /dev/null +++ b/package/qt5/qt5webchannel/qt5webchannel.hash @@ -0,0 +1,4 @@ +# Hashes from: http://download.qt.io/official_releases/qt/5.5/5.5.0/submodules/qtwebchannel-opensource-src-5.5.0.tar.xz.mirrorlist +sha256 94f88604ff0b29a30f1a1b13601d4bce9af5c0a96c43869705aee1596aeb2d8d qtwebchannel-opensource-src-5.5.0.tar.xz +sha1 7c45ecb9c4226207f184b5cf25d1a18d650075da qtwebchannel-opensource-src-5.5.0.tar.xz +md5 c20146286108477cdab60c67d2d87dc7 qtwebchannel-opensource-src-5.5.0.tar.xz diff --git a/package/qt5/qt5webchannel/qt5webchannel.mk b/package/qt5/qt5webchannel/qt5webchannel.mk new file mode 100644 index 0000000..cfb6da9 --- /dev/null +++ b/package/qt5/qt5webchannel/qt5webchannel.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# qt5webchannel +# +################################################################################ + +QT5WEBCHANNEL_VERSION = $(QT5_VERSION) +QT5WEBCHANNEL_SITE = $(QT5_SITE) +QT5WEBCHANNEL_SOURCE = qtwebchannel-opensource-src-$(QT5WEBCHANNEL_VERSION).tar.xz +QT5WEBCHANNEL_DEPENDENCIES = qt5base qt5websockets +QT5WEBCHANNEL_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +QT5WEBCHANNEL_LICENSE = LGPLv2.1 with exception or LGPLv3 or GPLv2 +QT5WEBCHANNEL_LICENSE_FILES = LICENSE.LGPLv21 LICENSE.LGPLv3 LGPL_EXCEPTION.txt LICENSE.GPLv2 +else +QT5WEBCHANNEL_LICENSE = Commercial license +QT5WEBCHANNEL_REDISTRIBUTE = NO +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBCHANNEL_DEPENDENCIES += qt5declarative +endif + +define QT5WEBCHANNEL_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake) +endef + +define QT5WEBCHANNEL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5WEBCHANNEL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5WEBCHANNEL_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebChannel $(TARGET_DIR)/usr/qml/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5WEBCHANNEL_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webchannel $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +define QT5WEBCHANNEL_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebChannel.so.* $(TARGET_DIR)/usr/lib +endef +endif + +define QT5WEBCHANNEL_INSTALL_TARGET_CMDS + $(QT5WEBCHANNEL_INSTALL_TARGET_LIBS) + $(QT5WEBCHANNEL_INSTALL_TARGET_QMLS) +endef + +$(eval $(generic-package))