From 80d8e80fb02a5667c279ef492b778169fd9c5066 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 29 Dec 2019 18:51:16 -0500 Subject: [PATCH] Add qt-qrcode recipe for use in settings app Add a recipe for the qt-qrcode libqrencode wrapper library to allow using it to display QR codes in the settings app, and update the settings app dependencies to add it as a dependency. As cleanup, the qtwebsockets dependency has been dropped from settings since it no longer requires it. Bug-AGL: SPEC-2981 Change-Id: Ia0d40ea1151765fa967457bf2ab6624dc7bc259d Signed-off-by: Scott Murray --- recipes-demo-hmi/settings/settings_git.bb | 8 +- .../qt-qrcode/0001-rework-library-build.patch | 181 +++++++++++++++++++++ recipes-qt/qt-qrcode/qt-qrcode_git.bb | 18 ++ 3 files changed, 204 insertions(+), 3 deletions(-) create mode 100644 recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch create mode 100644 recipes-qt/qt-qrcode/qt-qrcode_git.bb diff --git a/recipes-demo-hmi/settings/settings_git.bb b/recipes-demo-hmi/settings/settings_git.bb index 360408231..72e0323ff 100644 --- a/recipes-demo-hmi/settings/settings_git.bb +++ b/recipes-demo-hmi/settings/settings_git.bb @@ -13,12 +13,14 @@ PV = "1.0+git${SRCPV}" S = "${WORKDIR}/git" # build-time dependencies -DEPENDS += "libqtappfw qtquickcontrols2 qtwebsockets" +DEPENDS += "libqtappfw qtquickcontrols2 qt-qrcode" DEPENDS += "libhomescreen qlibwindowmanager qtvirtualkeyboard" # runtime dependencies RDEPENDS_${PN} += " \ - agl-service-bluetooth \ - agl-service-network" + qt-qrcode \ + agl-service-bluetooth \ + agl-service-network \ +" inherit qmake5 aglwgt diff --git a/recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch b/recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch new file mode 100644 index 000000000..76795268c --- /dev/null +++ b/recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch @@ -0,0 +1,181 @@ +Rework library build + +Rework qmake files to build libraries out of the quickitem and widget +code instead of sample programs. This allows using the associated +classes without copying the source and running afoul of the LGPL +licensing. Also add pkgconfig file generation to simplify usage, fix +header installation, and use pkgconfig to pull in libqrencode instead +of having to clone a copy in-tree and building it. + +Upstream-Status: inappropriate [embedded-specific] + +Signed-off-by: Scott Murray + +diff --git a/lib/lib.pro b/lib/lib.pro +index d046bc4..6b6c199 100644 +--- a/lib/lib.pro ++++ b/lib/lib.pro +@@ -1,6 +1,9 @@ + TARGET = qtqrcode + TEMPLATE = lib + ++CONFIG += link_pkgconfig create_pc create_prl no_install_prl ++PKGCONFIG += libqrencode ++ + DEFINES += \ + QTQRCODE_LIBRARY \ + QTQRCODE_PLUS_FEATURES +@@ -12,7 +15,8 @@ contains(DEFINES, QTQRCODE_PLUS_FEATURES) { + qtqrcodepainter.cpp + + HEADERS +=\ +- qtqrcodepainter.h ++ qtqrcodepainter.h \ ++ QtQrCodePainter + + } else { + QT -= gui +@@ -23,16 +27,29 @@ SOURCES += \ + + HEADERS +=\ + qtqrcode_global.h \ +- qtqrcode.h ++ qtqrcode.h \ ++ QtQrCode + + INCLUDEPATH += $$PWD + + include(../defaults.pri) +-include(libqrencode.pri) + # Default rules for deployment. + include(deployment.pri) + + unix { ++ headers.path = /usr/include + target.path = /usr/lib +- INSTALLS += target + } ++ ++headers.files = $$HEADERS ++ ++INSTALLS += headers ++ ++QMAKE_PKGCONFIG_NAME = qtqrcode ++QMAKE_PKGCONFIG_FILE = $${QMAKE_PKGCONFIG_NAME} ++QMAKE_PKGCONFIG_VERSION = $${VERSION} ++QMAKE_PKGCONFIG_DESCRIPTION = A wrapper interface for qrencode for Qt ++QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib ++QMAKE_PKGCONFIG_INCDIR = ${prefix}/include ++QMAKE_PKGCONFIG_REQUIRES = libqrencode ++QMAKE_PKGCONFIG_DESTDIR = pkgconfig +diff --git a/lib/qtqrcode.h b/lib/qtqrcode.h +index 2a7a1ff..0830826 100644 +--- a/lib/qtqrcode.h ++++ b/lib/qtqrcode.h +@@ -31,7 +31,7 @@ + #include + #include + +-#include "libqrencode/qrencode.h" ++#include + + class QtQrCodeData; + +diff --git a/quickitem/quickitem.pro b/quickitem/quickitem.pro +index ecfef1b..067dc46 100644 +--- a/quickitem/quickitem.pro ++++ b/quickitem/quickitem.pro +@@ -1,5 +1,7 @@ +-TEMPLATE = app +-TARGET = QuickItem ++TEMPLATE = lib ++TARGET = qtqrcode-quickitem ++ ++CONFIG += create_pc create_prl no_install_prl + + QT += qml quick widgets + +@@ -7,7 +9,7 @@ LIBS += -L../lib -lqtqrcode + + DEFINES += + +-SOURCES += main.cpp \ ++SOURCES += \ + QtQrCodeQuickItem.cpp + + HEADERS += \ +@@ -21,3 +23,21 @@ QML_IMPORT_PATH = + include(../defaults.pri) + # Default rules for deployment. + include(deployment.pri) ++ ++unix { ++ headers.path = /usr/include ++ target.path = /usr/lib ++} ++ ++headers.files = $$HEADERS ++ ++INSTALLS += headers ++ ++QMAKE_PKGCONFIG_NAME = qtqrcode-quickitem ++QMAKE_PKGCONFIG_FILE = $${QMAKE_PKGCONFIG_NAME} ++QMAKE_PKGCONFIG_VERSION = $${VERSION} ++QMAKE_PKGCONFIG_DESCRIPTION = Qt QuickItem wrapper for qt-qrcode library ++QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib ++QMAKE_PKGCONFIG_INCDIR = ${prefix}/include ++QMAKE_PKGCONFIG_REQUIRES = qtqrcode ++QMAKE_PKGCONFIG_DESTDIR = pkgconfig +diff --git a/widget/widget.pro b/widget/widget.pro +index 2e26a8c..63add50 100644 +--- a/widget/widget.pro ++++ b/widget/widget.pro +@@ -1,5 +1,7 @@ +-TEMPLATE = app +-TARGET = Widget ++TEMPLATE = lib ++TARGET = qtqrcode-widget ++ ++CONFIG += create_pc create_prl no_install_prl + + greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +@@ -9,18 +11,28 @@ LIBS += -L../lib -lqtqrcode + + DEFINES += + +-SOURCES += main.cpp\ +- MainWindow.cpp \ +- QtQrCodeWidget.cpp +- +-HEADERS += MainWindow.hpp \ +- QtQrCodeWidget.hpp ++SOURCES += QtQrCodeWidget.cpp + +-FORMS += MainWindow.ui +- +-CONFIG += mobility +-MOBILITY = ++HEADERS += QtQrCodeWidget.hpp + + include(../defaults.pri) + # Default rules for deployment. + include(deployment.pri) ++ ++unix { ++ headers.path = /usr/include ++ target.path = /usr/lib ++} ++ ++headers.files = $$HEADERS ++ ++INSTALLS += headers ++ ++QMAKE_PKGCONFIG_NAME = qtqrcode-widget ++QMAKE_PKGCONFIG_FILE = $${QMAKE_PKGCONFIG_NAME} ++QMAKE_PKGCONFIG_VERSION = $${VERSION} ++QMAKE_PKGCONFIG_DESCRIPTION = Qt widget wrapper for qt-qrcode library ++QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib ++QMAKE_PKGCONFIG_INCDIR = ${prefix}/include ++QMAKE_PKGCONFIG_REQUIRES = qtqrcode ++QMAKE_PKGCONFIG_DESTDIR = pkgconfig diff --git a/recipes-qt/qt-qrcode/qt-qrcode_git.bb b/recipes-qt/qt-qrcode/qt-qrcode_git.bb new file mode 100644 index 000000000..8b3ff79a9 --- /dev/null +++ b/recipes-qt/qt-qrcode/qt-qrcode_git.bb @@ -0,0 +1,18 @@ +SUMMARY = "Qt QR code library" +DESCRIPTION = "Qt/C++ library for encoding and visualization of data in a \ +QR Code symbol. This library consists of a Qt wrapper for libqrencode, and \ +Qt components that are able to visualize the result." +LICENSE = "LGPLv3+" +LIC_FILES_CHKSUM = "file://LICENSE;md5=94a3f3bdf61243b5e5cf569fbfbbea52" + +DEPENDS = "qtbase qtdeclarative qtquickcontrols2 qtsvg qrencode" + +SRC_URI = "git://github.com/danielsanfr/qt-qrcode.git;protocol=https \ + file://0001-rework-library-build.patch \ +" +SRCREV = "2d57d9c6e2341689d10f9360a16a08831a4a820b" + +PV = "git${SRCPV}" +S = "${WORKDIR}/git/" + +inherit qmake5 -- 2.16.6