From d3b5b82c044d9697ab4980b8985cc0fb13284ad2 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Mon, 19 Feb 2024 10:23:40 +0000 Subject: [PATCH] Add support for building Squish Add recipe that builds the embedded parts of Squish needed on the device. Squish is available only with specific license and the source packages need to be downloaded separately. The default uri here points to Qt internal location not accessible from outside network. Task-number: QTBUG-120658 Task-number: SQUISH-9656 Pick-to: 6.6 Change-Id: Ia5e0434023fa3f55c1e32ee1accd4dd0cabe1c15 Reviewed-by: Ari Parkkila Reviewed-by: Mikko Gronoff --- coin/test-configs.inc | 2 + licenses/Squish-Commercial-License-Agreement | 149 ++++++++++++++++++ recipes-qt/squish/squish_7.2-20240124-0915.bb | 87 ++++++++++ 3 files changed, 238 insertions(+) create mode 100644 licenses/Squish-Commercial-License-Agreement create mode 100644 recipes-qt/squish/squish_7.2-20240124-0915.bb diff --git a/coin/test-configs.inc b/coin/test-configs.inc index fdc6aa9..9aa295a 100644 --- a/coin/test-configs.inc +++ b/coin/test-configs.inc @@ -35,6 +35,8 @@ INSANE_SKIP:nativesdk-qemu-user-mips = "build-deps" PREFERRED_ARM_INSTRUCTION_SET ?= "thumb" ARM_INSTRUCTION_SET = "${PREFERRED_ARM_INSTRUCTION_SET}" +RDEPENDS:${PN}:append:pn-packagegroup-qt6-addons = " squish" + # enable webengine with commercial/proprietary features DISTRO_FEATURES:append = " webengine" PACKAGECONFIG:append:pn-qtwebengine = " proprietary-codecs" diff --git a/licenses/Squish-Commercial-License-Agreement b/licenses/Squish-Commercial-License-Agreement new file mode 100644 index 0000000..f5317f4 --- /dev/null +++ b/licenses/Squish-Commercial-License-Agreement @@ -0,0 +1,149 @@ +Squish Commercial License Agreement +Agreement version 3.1 + +This Squish Commercial License Agreement ("Agreement") is made by and +between The Qt Company Oy ("The Qt Company"), and you (either an +individual or a legal entity) ("Licensee"). + + +IMPORTANT - READ CAREFULLY: + +1. The Qt Company developed and originated Squish including source code, +documentation and example programs ("Licensed Software"). The Licensed +Software is protected by copyright laws and international copyright +treaties, as well as other intellectual property laws and +treaties. The Qt Company retains all rights not expressly granted. + +2. By installing, copying, or otherwise using the Licensed Software, +Licensee agrees to be bound by the terms of this Agreement. If +Licensee does not agree to the terms of this Agreement, Licensee +should not install, copy, or otherwise use the Licensed Software. In +addition, by installing, copying, or otherwise using any updates or +other components of the Licensed Software that Licensee receives +separately as part of the Licensed Software ("Updates"), Licensee +agrees to be bound by any additional license terms that accompany such +Updates. If Licensee does not agree to the additional license terms +that accompany such Updates, Licensee may not install, copy, or +otherwise use such Updates. + +3. Upon Licensee's acceptance of the terms and conditions of this +Agreement, The Qt Company grants Licensee the right to use the Licensed +Software during the agreed validity period as set forth in the +respective License Certificate ("License Term"), solely for Licensee's +internal business purposes in the manner provided below. + +4a. If the license, as specified in the license certificate, is a +Floating Tester Subscription or Floating Execution Subscription, +Licensee may install the Licensed Software on an unlimited amount of +computers. Concurrent use of the installed Licensed Software is +limited to the number of floating seats purchased as specified in the +license certificate and to persons employed or contracted by the +Licensee. If the license is a Floating Execution License, Licensee may +only use the installed Licensed Software for executing tests and +processing test results, but not for developing, debugging and +maintaining tests. + +4b. If the license, as specified in the license certificate, is a User +Node-Locked Subscription, Licensee may install the Licensed Software +for a single user on a single physical computer. Installation and +usage in virtual machines or the use via remote access is prohibited. + +5. Licensee may modify the Licensed Software except for altering or +removing any details of ownership, copyright, trademark or other +property right connected with the Licensed Software. + +6. Licensee may not distribute the Licensed Software, modified or +unmodified, separately or as part of any software package. + +7. Upon expiry of the initially agreed License Term, the respective +License Terms shall be automatically extended to one or more +extensions of previous License Term as agreed between the Parties +("Renewal Term"), unless and until either Party notifies the other +Party in writing, or any other method acceptable to The Qt Company, that it +does not wish to continue the License Term, such notification to be +provided to the other Party no less than thirty (30) days before +expiry of the respective License Term. Unless otherwise agreed between +the Parties, Renewal Term shall be of equal length with the initial +License Term. + +Any such Renewal Term shall be subject to License Fees agreed between +the Parties or, if no advance agreement exists, subject to The Qt Company +standard pricing applicable at the commencement date of any such +Renewal Term. + +Any price or other term specified for a Renewal Term shall be valid +only for the specified time. + + +WARRANTY DISCLAIMER + +8. The Licensed Software is licensed to Licensee "as is". To the +maximum extent permitted by applicable law, The Qt Company on behalf of +itself and its suppliers, disclaims all warranties and conditions, +either expressed or implied, including, but not limited to, implied +warranties of merchantability, fitness for a particular purpose, title +and non-infringement with regard to the Licensed Software. + + +LIMITATION OF LIABILITY + +9. If, The Qt Company's warranty disclaimer notwithstanding, The Qt Company is +held liable to Licensee, whether in contract, tort or any other legal +theory, based on the Licensed Software, The Qt Company's entire liability +to Licensee and Licensee's exclusive remedy shall be, at The Qt Company's +option, either (A) return of the price Licensee paid for the Licensed +Software, or (B) repair or replacement of the Licensed Software, +provided Licensee returns to The Qt Company all copies of the Licensed +Software as originally delivered to Licensee. The Qt Company shall not +under any circumstances be liable to Licensee based on failure of the +Licensed Software if the failure resulted from accident, abuse or +misapplication, nor shall The Qt Company under any circumstances be liable +for special damages, punitive or exemplary damages, damages for loss +of profits or interruption of business or for loss or corruption of +data. Any award of damages from The Qt Company to Licensee shall not exceed +the total amount Licensee has paid to The Qt Company in connection with +this Agreement. + + +SUPPORT AND UPDATES + +10. Licensee will be eligible to receive email based software support +and access to Downloads and Updates to the Licensed Software for the +License Term, in accordance with The Qt Company's then current policies and +procedures, if any. Such policies and procedures may be changed from +time to time. + + +PRIVACY + +11. Licensee acknowledges and agrees that for the purpose of this +agreement, The Qt Company may collect, use, transfer and disclose personal +data pertaining to Users as well as any other employees and directors +of the Licensee and its contractors relevant for carrying out the +intent of this agreement. Such personal data may be collected from the +Licensee or directly from the relevant individuals. The parties +acknowledge that with regard to such personal data processed +hereunder, The Qt Company shall be regarded as the Data Controller under +the applicable data protection legislation. The Qt Company shall process +any such personal data in accordance with its privacy policies and +practices, which will comply with all applicable requirements of the +General Data Protection Regulation (GDPR) and any national +implementing laws and regulations. + + +GENERAL PROVISIONS + +12. This Agreement may only be modified in writing signed by +authorized representatives of Licensee and The Qt Company. In case of a +conflict between this Agreement and the terms of any purchase order or +other ordering document, this Agreement shall prevail. If any provision +of this Agreement is found void or unenforceable, the remainder will +remain valid and enforceable according to its terms. If any remedy +provided is determined to have failed for its essential purpose, all +limitations of liability and exclusions of damages set forth in this +Agreement shall remain in effect. + +13. This Agreement shall be construed, interpreted and governed by the +laws of Finland, the legal venue to be Helsinki District Court. The Qt +Company reserves all rights not specifically granted in this +Agreement. diff --git a/recipes-qt/squish/squish_7.2-20240124-0915.bb b/recipes-qt/squish/squish_7.2-20240124-0915.bb new file mode 100644 index 0000000..dba224e --- /dev/null +++ b/recipes-qt/squish/squish_7.2-20240124-0915.bb @@ -0,0 +1,87 @@ +LICENSE = "Squish-Commercial-License-Agreement" +LIC_FILES_CHKSUM = "file://LICENSE;md5=26ea9708fd32ef443b69239b5d9b343c" + +EXCLUDE_FROM_WORLD = "1" + +inherit qt6-qmake + +SQUISH_MIRROR ?= "https://ci-files01-hki.ci.qt.io/input/squish/coin/66x/20240124" + +SRC_URI = "\ + ${SQUISH_MIRROR}/squish-${PV}-qt66x-linux64.run;name=squish \ + ${SQUISH_MIRROR}/squish-${PV}-qt-embedded-src.tar.gz;name=qt-squish-embedded \ +" + +SRC_URI[squish.sha256sum] = "69689f25cecf07ce15f8e8975f9cf44d85cc1d0f628d3013dfb6dfc9f562aa91" +SRC_URI[qt-squish-embedded.sha256sum] = "8f0c03f3814eb44f2366f0599e7f6ef52446651fc1882bd487918e441ceac07a" + +S = "${WORKDIR}/squish-${PV}-qt-embedded-src" +B = "${WORKDIR}/build" + +DEPENDS += "\ + qtbase \ + qt5compat \ + qtdeclarative qtdeclarative-native \ + qtwayland qtwayland-native \ + qtapplicationmanager \ + wayland wayland-native \ +" + +lcl_maybe_fortify = "" +OE_QMAKE_PATH_HOST_LIBEXECS = "${STAGING_DIR_NATIVE}/${QT6_INSTALL_LIBEXECDIR}" + +do_install_squish[cleandirs] = "${WORKDIR}/squish" +do_install_squish[network] = "1" +do_install_squish() { + chmod +x ${WORKDIR}/squish-${PV}-qt66x-linux64.run + TMPDIR=${WORKDIR}/tmp XDG_RUNTIME_DIR=${WORKDIR}/tmp ${WORKDIR}/squish-${PV}-qt66x-linux64.run \ + -platform minimal unattended=1 targetdir=${WORKDIR}/squish ide=0 testcenter=0 +} + +do_configure() { + ${S}/configure \ + --disable-all \ + --enable-qmake-config \ + --enable-qt \ + --enable-server \ + --enable-wayland \ + --with-qmake=${STAGING_DIR_NATIVE}${QT6_INSTALL_BINDIR}/qmake \ + --with-squishidl=${WORKDIR}/squish/bin/squishidl +} + +do_compile() { + ./build -j${@oe.utils.cpu_count()} +} + +do_install() { + DESTDIR=${D}/opt/squish + ./build install DESTDIR=${DESTDIR} + + install -d ${D}${bindir} + mv ${DESTDIR}/bin/* ${D}${bindir} + rmdir ${DESTDIR}/bin + + install -d ${D}${QT6_INSTALL_PLUGINSDIR} + mv ${DESTDIR}/plugins/* ${D}${QT6_INSTALL_PLUGINSDIR} + rmdir ${DESTDIR}/plugins +} + +FILES:${PN} += "\ + ${QT6_INSTALL_PLUGINSDIR} \ + /opt/squish \ +" +FILES:${PN}-dev += "\ + /opt/squish/qtbuiltinhook.pri \ + /opt/squish/LICENSE \ + /opt/squish/include \ + /opt/squish/lib/cmake \ + /opt/squish/sdk \ +" +FILES:${PN}-dev:remove = "${FILES_SOLIBSDEV}" +FILES:${PN}-staticdev += "\ + ${QT6_INSTALL_PLUGINSDIR}/generic/*.a \ + /opt/squish/lib/*.a \ + /opt/squish/lib/extensions/qt/*.a \ +" + +addtask install_squish after do_unpack before do_configure