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 <ari.parkkila@qt.io>
Reviewed-by: Mikko Gronoff <mikko.gronoff@qt.io>
This commit is contained in:
Samuli Piippo 2024-02-19 10:23:40 +00:00
parent 31df2f0147
commit d3b5b82c04
3 changed files with 238 additions and 0 deletions

View File

@ -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"

View File

@ -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.

View File

@ -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