Add qt-qrcode recipe for use in settings app 97/23497/2
authorScott Murray <scott.murray@konsulko.com>
Sun, 29 Dec 2019 23:51:16 +0000 (18:51 -0500)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Mon, 30 Dec 2019 14:59:45 +0000 (14:59 +0000)
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 <scott.murray@konsulko.com>
recipes-demo-hmi/settings/settings_git.bb
recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch [new file with mode: 0644]
recipes-qt/qt-qrcode/qt-qrcode_git.bb [new file with mode: 0644]

index 3604082..72e0323 100644 (file)
@@ -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 (file)
index 0000000..7679526
--- /dev/null
@@ -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 <scott.murray@konsulko.com>
+
+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 <QByteArray>
+ #include <QSharedDataPointer>
+-#include "libqrencode/qrencode.h"
++#include <qrencode.h>
+ 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 (file)
index 0000000..8b3ff79
--- /dev/null
@@ -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