Compare commits

..
31 Commits
Author SHA1 Message Date
Kai Köhne 9c10c3982c SECURITY.md: Update title and link to Qt Group's Vulnerability Disclosure Policy
Change-Id: Ic3e8d43709d1254277810c9e1072240126a26583
Reviewed-by: Gabriel Byman <[email protected]>
Reviewed-by: Alexei Cazacov <[email protected]>
(cherry picked from commit 3208f5c95a)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-24 07:34:44 +00:00
Toni Saario 9429a0275c Update macOS 15 x86_64 image to -104
Updated bootstrap to allow running in the USB adapter pool.

Task-number: QTQAINFRA-8059
Pick-to: 6.11 6.8
Change-Id: If621f2b2d8e2ae9ade61a88816b30814cc080274
Reviewed-by: Jukka Jokiniva <[email protected]>
(cherry picked from commit 5b4b15e12b)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-23 19:43:34 +00:00
Matti Paaso c4d2484114 Enable tests in tqtc-qtedgeai
Remove InsignificantTests, DoNotRunTests and DisableTests Coin
Feature from all targets.

Task-number: QTQAINFRA-8063
Change-Id: I44842dfd2b88d0bd7ff2f5abb5f5a889d5c5f906
Reviewed-by: Tarja Sundqvist <[email protected]>
2026-09-23 16:22:26 +00:00
Assam Boudjelthia 18f54a07b4 Android: bump Android target API level to 37
Provision the Android 17 SDK platform and build tools,
and compile the Gradle cache project against them.

Task-number: QTBUG-136620
Change-Id: I6470f60c08f028a2bfbc6ed09a99492d4a174402
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit 1eb5f09e3d)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-21 23:28:31 +00:00
Elias Toivola 8a921ddcf6 Ubuntu 24.04: Pin Swift to version 6.3.3
Swiftly selected unavailable Swift 6.4.0 during provisioning. Do the
installation with version pinned to 6.3.3 which is the version from the
latest passed Ubuntu 24.04 provisioning.

Fixes: QTQAINFRA-8057
Change-Id: I806d733b8249c3d2b9dd59ad84f0ab8c23c9068e
Reviewed-by: Joerg Bornemann <[email protected]>
Reviewed-by: Tony Sarajärvi <[email protected]>
(cherry picked from commit d388103e82)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:27 +00:00
Elias Toivola 16bedfa26a Ubuntu 26.04: remove i386 packages
i386 packages are installed for 'integrity-arm64' target which has
ubuntu-22.04 as platform dependency. The packages are not needed in
Ubuntu 26.04, and not installing them saves storage space and some
bandwidth in not mirroring i386 apt repos in repo-clones.

Change-Id: I2bcd1d5d6426ed26e02aec6d6753660a148270b2
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 2eb362d1c8)
Reviewed-by: Tony Sarajärvi <[email protected]>
2026-09-19 19:22:26 +00:00
Elias Toivola f1e302f897 Ubuntu 26.04 x86_64: enable internal APT repository
As a side-by-side change, also disable external APT sources so that only
the internal repository is used. Without this disable, 'apt update'
still reads from the external sources.

Task-number: QTQAINFRA-8001
Change-Id: If036cca65f5bad9f54216863160e37aa806600b4
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 61d6a83316)
Reviewed-by: Tony Sarajärvi <[email protected]>
2026-09-19 19:22:26 +00:00
Elias Toivola 9589708daa Add Ubuntu 26.04 x86_64 with non-blocking tests
Ubuntu 26.04 comes with GCC 15.2.0 and GNOME 50 which drops X11/xorg and
is Wayland only. X11 programs may run with XWayland within the Wayland
session.

The tier-1 -50 and -51 images are created and configured with Packer
instead of doing it manually. OS configurations can be checked at:

coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/
coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/http/user-data

Provisioning changes compared to x64 24.04:
- Pulseaudio backport is removed:
    03-install-pulseaudio-16-bugfix-backports.sh
- 80-docker.sh is updated to noble -> resolute
- apt: python3-pypdf2 -> python3-pypdf
- '-snld20' param added to 7z commands
- 62-install-swiftly.sh: apt install swiftlang instead
- vx_works.sh: /etc/sysctl.conf -> /sysctl.d/ for net.ipv4.ip_forward=1
- 92-sbuild.sh: sbuild-update is deprecated -> comment out
- enable_test_stacktraces.sh: /usr/lib/sysctl.d/55-ptrace.conf for U26
[CI Platforms]

Task-number: QTQAINFRA-8001
Task-number: QTQAINFRA-5844
Change-Id: Ic6951f46845f8de8ca012a7c4f353fb042a16ae4
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 574f06fdcc)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:25 +00:00
Joerg Bornemann 785706c4e3 coin: Fix the versions.txt path in install-vcpkg-ports-android.sh
Bash expands a leading tilde only at the start of a word, or after = and
: in a word that looks like a variable assignment. -DOUTPUT=~/versions.txt
is neither, so the tilde reaches CMake literally whether or not the
argument is quoted, and CMake does not expand it either.

vcpkg_parse_packages.cmake:17 reads the file with file(STRINGS) before
appending to it, and that is a fatal error for a path that does not
exist, so the script aborts before writing anything. Nothing in the call
chain uses set -e and the failing cmake is not the last command, so the
script still exits 0 and the x86-android-qt package versions have just
been missing from ~/versions.txt on the RHEL 8.8 and 8.10 targets since
c259d85b. The tilde was correct there before that commit, as the target
of a shell redirection.

The x86_64-android-qt invocation right below already uses $HOME; use it
here too.

Task-number: QTBUG-115715
Pick-to: 6.11
Change-Id: I9fe43ec7ba10d8105ef6c9566580e1305935e29a
Reviewed-by: Alexandru Croitor <[email protected]>
(cherry picked from commit ee8728d202)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:24 +00:00
Joerg Bornemann 886d5aa1a0 coin: Bump the vcpkg OpenSSL override to 3.5.4
The manifest has pinned openssl to 3.0.7 port-version 2 since a5a63931
(Nov 2023), which was the version manual provisioning shipped at the
time. Support for the OpenSSL 3.0 line ended on 2026-09-07, and manual
provisioning has since moved to 3.5.4.

qtgrpc is the only module that opts into vcpkg today, and it does link
the vcpkg copy: the qtgrpc_standalone_tests configure reports OpenSSL
3.0.7 out of installed/<triplet> on Linux, Windows and macOS, and
grpc_testserver, tst_grpc_client_end2end and
tst_grpc_client_interceptors link it. So the stale pin is live, not
dormant.

Pin 3.5.4 port-version 0 rather than dropping the override: it matches
install-openssl.sh and openssl.ps1 exactly, and 3.5 is an LTS release
whereas the registry baseline 3.6.3 is not. The port exists at the
registry tag we already pin, so vcpkg_version.txt stays untouched.

Request the "tools" feature at the same time. 3.0.7 installed the
openssl executable unconditionally; 3.5.4 puts it behind that feature,
which is not enabled by default. qtgrpc's test_server does
find_program(openssl) to regenerate its TLS test certificates and only
warns when the executable is missing, leaving the TLS tests to fail
later on absent key.pem and cert.pem. Building the tool alongside the
libraries keeps the CLI and the linked library at the same version and
drops a hidden dependency on manually provisioned OpenSSL being on
PATH, which is what we want to retire.

The feature is scoped to non-Android, because vcpkg puts the target
triplet's tools directory on CMAKE_PROGRAM_PATH. A cross-built openssl
there would be picked up by find_program and fail to run on the host,
which is the same trap as QTBUG-145933 for protoc. Android keeps the
plain port; the certificates are generated by the host tool anyway.

Task-number: QTBUG-115715
Change-Id: I3b36677837fae3080e9362526bd35012e31fc04e
Reviewed-by: Alexandru Croitor <[email protected]>
(cherry picked from commit f1632a6b40)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:24 +00:00
Elias Toivola 2813c524e1 Windows: install vim
Fixes: COIN-1060
Pick-to: 6.11 6.8
Change-Id: Ifa1109f453cfee8d086236d2c59c607ff9867745
Reviewed-by: Michal Klocek <[email protected]>
(cherry picked from commit 6a9e9eb192)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:23 +00:00
Alexandru Croitor c245d24470 Provisioning: Don't sudo install protobuf on Intel macOS
Sudo installing protobuf changes the ownership of
/usr/local/lib/cmake (among other files) to root, which breaks later
brew installations which try to write into that dir with the qt user.

Don't use sudo on Intel macOS for that package.

Change-Id: I0f452bed3f91f1de133acf345419e7a4a83805c2
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 653c7cec5b)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:23 +00:00
Simo Fält a40a2b2e53 ohos: Disable bic test for HarmonyOS
To follow same practice with Android.

Change-Id: I2af7ca553f105060200a7f3385c954a16e578465
Reviewed-by: Liang Qi <[email protected]>
(cherry picked from commit e96543ec42)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:22 +00:00
Assam Boudjelthia 34d7840724 Android: update Android 17 to latest image
Update to Android 17 SDK 37.1 revision 7. The newer 37.2
revision 4 image fails to boot on the CI x86_64 emulator.

Task-number: QTBUG-146930
Change-Id: If9fe32defa505aa6150aa69bb874bb05345027ee
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit 61b2b03b78)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:21 +00:00
Assam Boudjelthia 1544e255cb Android: update emulator to version 36.6.11
Task-number: QTBUG-146930
Pick-to: 6.11 6.8
Change-Id: I18983a99e351ea66b06c97feabaa7916750b8c7a
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 8c31c16298)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:21 +00:00
Elias Toivola c8dd69da67 RHEL 10 & 9: install 7zip-standalone-all instead of p7zip
p7zip in RHEL-10 has a pathing bug reported in:
https://bugzilla.redhat.com/show_bug.cgi?id=2373874

Installing 7zip-standalone-all instead avoids this issue. It'll also be
installed in RHEL-9 for more consistency.

This amends 204528c5bd

Pick-to: 6.11 6.8
Change-Id: Iae15f27eab01166bd77feba5458d46210f99fa33
Reviewed-by: Patrik Teivonen <[email protected]>
(cherry picked from commit b03667a922)
2026-09-19 19:22:20 +00:00
Elias Toivola c900703669 RHEL: install more supported formats for p7zip
This simplifies tasks in RTA/Jenkins/Packaging. The plugin installs
/usr/bin/7z so linking it with 7za is no longer needed.

Pick-to: 6.11 6.8
Change-Id: I1dead3d1f138b1a99e3987068b607d947ef94c0c
Reviewed-by: Patrik Teivonen <[email protected]>
(cherry picked from commit 204528c5bd)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-19 19:22:20 +00:00
Qt Submodule Update Bot 1329202610 Update submodules on '6.12 in qt/qt5'
Change-Id: I765f814a716f690ea16abd40774a6dbb7a20038f
Reviewed-by: Qt Submodule Update Bot <[email protected]>
2026-09-16 05:41:18 +00:00
Liang Qi ed8371aa18 coin: add build for 26.0.0.821(API 26) for HarmonyOS on Linux host
Task-number: QTBUG-150204
Done-with: Joerg Bornemann <[email protected]>
Change-Id: I3ba7c904d4145b274fc2fe8960b6321b1f44cce8
Reviewed-by: Joerg Bornemann <[email protected]>
(cherry picked from commit 85f201f07f)
Reviewed-by: Simo Fält <[email protected]>
Reviewed-by: Liang Qi <[email protected]>
2026-09-15 01:44:59 +00:00
Liang Qi 4b646f5c66 coin: add provisioning 26.0.0.821(API 26) for HarmonyOS
Task-number: QTBUG-150204
Done-with: Joerg Bornemann <[email protected]>
Change-Id: I136b695eb7759e7d6b2341ddd1e63876042ae7f2
Reviewed-by: Joerg Bornemann <[email protected]>
(cherry picked from commit 14fd3ac200)
Reviewed-by: Liang Qi <[email protected]>
Reviewed-by: Simo Fält <[email protected]>
2026-09-15 01:44:54 +00:00
Liang Qi c6dbb5d771 coin: remove dead code about patch file for HarmonyOS
Change-Id: I994603a93712c05035faf5a59b5c3c7451aea177
Reviewed-by: Joerg Bornemann <[email protected]>
(cherry picked from commit a8cd722ee2)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-15 01:44:49 +00:00
Tuomas Vaarala a9574979fe Coin: QNX 8.0 QEMU: drop the dead nslookup mapping
nslookup ships only in the 7.1 SDP, never in 8.0. The mapping was
copied in when the 710 and 800 qemu trees were split, and mkqnximage
has warned and skipped it ever since. Remove it from the 8.0 tree; 7.1
keeps its own, where the file exists.

Pick-to: 6.11
Change-Id: I18cbb621233a736b590e5aa5c9170e3a02e2ee04
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 5ad4448629)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-14 06:06:57 +00:00
Tuomas Vaarala af190f81ee Coin: QNX 8.0 QEMU: rebuild fc-match against the 8.0 SDP
The image's fc-match is a 2021 QNX 7.1 binary needing libc.so.5 and
libfontconfig.so.1. QNX 8.0 has libc.so.6 and libfontconfig.so.17, so
the loader cannot start it and tst_qfont::defaultFamily fails all five
rows. Point 8.0 at a new archive built from fontconfig 2.17.1 against
the 8.0 SDP, and replace the comment that wrongly described the tzdata
package with the real recipe. Verified on a QEMU image: all five
generics resolve to DejaVu Sans, matching QFont::defaultFamily(). 7.1
keeps the old archive, where the binary still works.

Pick-to: 6.11
Change-Id: I0b6b00f6ee627dfa9edd4c0c599d1582def01099
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 81c7c49f23)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-14 06:06:52 +00:00
Tuomas Vaarala 2aa8f4aaa1 Coin: QNX 8.0: update SDP to GA8.0.5
The SDP we shipped was a hand-composed package set whose fsnotify
component dated from 2024-11-23 (fs.notify 0.0.2.02005). On that build
QNX never wakes a blocked poll() or select() when an inotify event
arrives, so QSocketNotifier never fires and QFileSystemWatcher's native
engine silently delivers nothing. That is the sole cause of the
tst_qfilesystemwatcher failures on this platform (QTBUG-149526).

GA8.0.5 ships fs.notify 0.3.0.00006, which fixes it. Rather than
cherry-pick the one package, bring the whole SDP to GA8.0.5: all 249
packages the com.qnx.qnx800.patchset805 manifest pins are now at their
GA8.0.5 versions, verified against the manifest with no deviations.

GA8.0.5 also ships mkqnximage 0.5.0, whose inputs/data.build gained a
built-in "var/etc/hosts=etc/hosts" entry and fixed the syntax of the
var/etc/resolv.conf symlink entry. Both are emitted before the
data_files.custom block and the first entry for a path wins, so they
silently shadowed our own hosts and resolv.conf. That left the image
with the stock QNX /etc/hosts - none of the statically mapped test
server names - and a dangling /etc/resolv.conf symlink. The hosts
entry is dropped in the SDP tarball; resolv.conf is provisioned here
at var/dhcpcd/resolv.conf, which is what the symlink now points at.

Verified with the unmodified upstream test on both architectures -
23 passed, 0 failed, 0 skipped on an aarch64 Raspberry Pi 5 and on the
x86_64 QEMU image built from this SDP. Previously 16 passed, 7 failed.
A standalone inotify poll() reproducer now exits 0 on both, and a
booted image resolves the test server names again.

Pick-to: 6.11
Task-number: QTBUG-149526
Change-Id: I9275aef6c24f693f3115265c51d109d2b2254c7a
Reviewed-by: Marianne Yrjänä <[email protected]>
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 6920b96315)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-14 06:06:43 +00:00
Kai Köhne 14e000740d _clang-format: Suppress false-positive SPDX tag in CommentPragmas
The CommentPragmas regex references the literal string
"SPDX-License-Identifier:" to tell clang-format not to reflow lines
carrying that tag. reuse-tool 6.0+ scans whole files (not just the
first 4 KiB) and its "Invalid SPDX License Expressions" check now
misparses this regex fragment as a real, malformed tag for the file.

Mark it with REUSE-IgnoreStart/End, the same fix already applied to
qtqa's tst_licenses.pl for the identical false positive.

Task-number: QTBUG-149427
Task-number: QTBUG-140916
Change-Id: I047cff90d7c43ece8af23863ec6f3a06d8bf23fd
Reviewed-by: Joerg Bornemann <[email protected]>
(cherry picked from commit 897d609dad)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-13 13:27:40 +00:00
Alexei Cazacov 93b324a453 Update essential top-level files in the Qt's super-repo
This commit introduces the following changes:

- README.md - Updated, completely rewritten. Now includes up-to-date
  information.
- README.git - Deleted.
- SECURITY.md - A new document that points to QUIP 15.
- CODE_OF_CONDUCT.md - A new document that points to QUIP 12.
- GOVERNANCE.md - A new document that points to QUIP 2.
- CHANGELOG.md - A new document that points to what's new pages,
  release wiki pages, porting guide, dist/ deprecation note.
- LICENSE.md - A new document that explains where per-module terms live.
- README.md.template - Updated, to specify its purpose.

Fixes: QTBUG-149126
Pick-to: 6.12.0
Change-Id: I2d2385e22769d4df360a626abc7484baf1cb0285
Reviewed-by: Kai Köhne <[email protected]>
(cherry picked from commit 7e2b6df4a8)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-13 13:27:38 +00:00
Joerg Bornemann 6efdff4901 coin: Switch vcpkg-provided libs to static linkage for HarmonyOS
Task-number: QTBUG-147895
Change-Id: I9534cd6218e4115c8ace1fb1bff7d60e2779274b
Reviewed-by: Liang Qi <[email protected]>
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 574021bdfa)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-13 09:17:25 +00:00
Simo Fält 16d1150522 Provisioning: Install additional Python for Windows
Qt for Python needs more recent Python to be used when creating
wheels for releases.

Change-Id: Ie0faf617dbda7c3d3d97f609c9b23609cb345a5e
Reviewed-by: Elias Toivola <[email protected]>
Reviewed-by: Toni Saario <[email protected]>
(cherry picked from commit e94bda4040)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-11 06:21:42 +00:00
Oliver Wolff eb3a82b7c6 Windows provisioning: Remove duplicate libusb install scripts
When libusb installation was added for Windows, Linux, and Mac in change
2cee9da977 there already was a libusb
installation script for Windows in Coin. This script duplication has
never been fixed, so we had 2 scripts for a long time.

Pick-to: 6.11 6.8
Change-Id: Ic18824faf543a7cae2497b29e4ac8f757ed83af0
Reviewed-by: Tony Sarajärvi <[email protected]>
(cherry picked from commit dc29c6d134)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-10 15:44:40 +00:00
Marianne Yrjänä 11e893f4f8 Provisioning: Update QNX7.1 SDP package
Previous SDP update missed windows tools which are need by RTA. Windows
tools now added back to package. In addition, kernel and OpenSSL updated
to newer version with bugfixes.

Fixes: QTBUG-149349
Pick-to: 6.11 6.8
Change-Id: I65a35e6e8388a8eb7ddfb34f2be66c6817146011
Reviewed-by: Tuomas Vaarala <[email protected]>
Reviewed-by: Simo Fält <[email protected]>
(cherry picked from commit 6683a395e8)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
2026-09-10 07:31:42 +00:00
Qt Submodule Update Bot ff6cb0f138 Update submodules on '6.12 in qt/qt5'
Change-Id: I112d0640f50455ae24030ba72c048da78d28d02f
Reviewed-by: Qt Submodule Update Bot <[email protected]>
2026-09-09 17:27:29 +00:00
168 changed files with 2435 additions and 246 deletions
+45 -45
View File
@@ -1,46 +1,46 @@
[submodule "qtbase"]
path = qtbase
url = ../qtbase.git
branch = 6.12.0
branch = 6.12
status = essential
[submodule "qtsvg"]
depends = qtbase
path = qtsvg
url = ../qtsvg.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtdeclarative"]
depends = qtbase
recommends = qtimageformats qtshadertools qtsvg qtlanguageserver
path = qtdeclarative
url = ../qtdeclarative.git
branch = 6.12.0
branch = 6.12
status = essential
[submodule "qtactiveqt"]
depends = qtbase
path = qtactiveqt
url = ../qtactiveqt.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtmultimedia"]
depends = qtbase qtshadertools
recommends = qtdeclarative qtquick3d
path = qtmultimedia
url = ../qtmultimedia.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qttools"]
depends = qtbase
recommends = qtdeclarative qtactiveqt
path = qttools
url = ../qttools.git
branch = 6.12.0
branch = 6.12
status = essential
[submodule "qttranslations"]
depends = qttools
path = qttranslations
url = ../qttranslations.git
branch = 6.12.0
branch = 6.12
status = essential
priority = 30
[submodule "qtdoc"]
@@ -48,7 +48,7 @@
recommends = qtmultimedia qtshadertools qttasktree
path = qtdoc
url = ../qtdoc.git
branch = 6.12.0
branch = 6.12
status = essential
priority = 40
[submodule "qtrepotools"]
@@ -61,7 +61,7 @@
depends = qtbase
path = qtqa
url = ../qtqa.git
branch = 6.12.0
branch = 6.12
status = essential
priority = 50
[submodule "qtlocation"]
@@ -69,234 +69,234 @@
recommends = qtdeclarative
path = qtlocation
url = ../qtlocation.git
branch = 6.12.0
branch = 6.12
status = preview
[submodule "qtpositioning"]
depends = qtbase
recommends = qtdeclarative qtserialport
path = qtpositioning
url = ../qtpositioning.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtsensors"]
depends = qtbase
recommends = qtdeclarative
path = qtsensors
url = ../qtsensors.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtconnectivity"]
depends = qtbase
recommends = qtdeclarative
path = qtconnectivity
url = ../qtconnectivity.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtwayland"]
depends = qtbase
recommends = qtdeclarative
path = qtwayland
url = ../qtwayland.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qt3d"]
depends = qtbase
recommends = qtdeclarative qtshadertools qtmultimedia
path = qt3d
url = ../qt3d.git
branch = 6.12.0
branch = 6.12
status = deprecated
[submodule "qtimageformats"]
depends = qtbase
path = qtimageformats
url = ../qtimageformats.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtserialbus"]
depends = qtbase
recommends = qtserialport
path = qtserialbus
url = ../qtserialbus.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtserialport"]
depends = qtbase
path = qtserialport
url = ../qtserialport.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtwebsockets"]
depends = qtbase
recommends = qtdeclarative
path = qtwebsockets
url = ../qtwebsockets.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtwebchannel"]
depends = qtbase
recommends = qtdeclarative qtwebsockets
path = qtwebchannel
url = ../qtwebchannel.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtwebview"]
depends = qtdeclarative
path = qtwebview
url = ../qtwebview.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtcharts"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtcharts
url = ../qtcharts.git
branch = 6.12.0
branch = 6.12
status = deprecated
[submodule "qtdatavis3d"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtdatavis3d
url = ../qtdatavis3d.git
branch = 6.12.0
branch = 6.12
status = deprecated
[submodule "qtvirtualkeyboard"]
depends = qtbase qtdeclarative qtsvg
recommends = qtmultimedia
path = qtvirtualkeyboard
url = ../qtvirtualkeyboard.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtscxml"]
depends = qtbase qtdeclarative
path = qtscxml
url = ../qtscxml.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtspeech"]
depends = qtbase qtmultimedia
recommends = qtdeclarative
path = qtspeech
url = ../qtspeech.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtnetworkauth"]
depends = qtbase
path = qtnetworkauth
url = ../qtnetworkauth.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtremoteobjects"]
depends = qtbase
recommends = qtdeclarative
path = qtremoteobjects
url = ../qtremoteobjects.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtlottie"]
depends = qtbase qtdeclarative qtquicktimeline
path = qtlottie
url = ../qtlottie.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtquicktimeline"]
depends = qtbase qtdeclarative
path = qtquicktimeline
url = ../qtquicktimeline
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtquick3d"]
depends = qtbase qtdeclarative qtshadertools
recommends = qtquicktimeline
path = qtquick3d
url = ../qtquick3d.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtshadertools"]
depends = qtbase
path = qtshadertools
url = ../qtshadertools.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qt5compat"]
depends = qtbase qtdeclarative
path = qt5compat
url = ../qt5compat.git
branch = 6.12.0
branch = 6.12
status = deprecated
[submodule "qtcoap"]
depends = qtbase
path = qtcoap
url = ../qtcoap.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtmqtt"]
depends = qtbase qtdeclarative
recommends = qtwebsockets
path = qtmqtt
url = ../qtmqtt.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtopcua"]
depends = qtbase qtdeclarative
path = qtopcua
url = ../qtopcua.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtlanguageserver"]
depends = qtbase
path = qtlanguageserver
url = ../qtlanguageserver.git
branch = 6.12.0
branch = 6.12
status = preview
[submodule "qthttpserver"]
depends = qtbase
recommends = qtwebsockets
path = qthttpserver
url = ../qthttpserver.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtquick3dphysics"]
depends = qtbase qtdeclarative qtquick3d qtshadertools
path = qtquick3dphysics
url = ../qtquick3dphysics.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtgrpc"]
depends = qtbase
recommends = qtdeclarative
path = qtgrpc
url = ../qtgrpc.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtquickeffectmaker"]
depends = qtbase qtdeclarative qtshadertools
recommends = qtquick3d
path = qtquickeffectmaker
url = ../qtquickeffectmaker.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qtgraphs"]
depends = qtbase qtdeclarative qtquick3d
path = qtgraphs
url = ../qtgraphs.git
branch = 6.12.0
branch = 6.12
status = addon
[submodule "qttasktree"]
depends = qtbase
path = qttasktree
url = ../qttasktree.git
branch = 6.12.0
branch = 6.12
status = preview
[submodule "qtopenapi"]
depends = qtbase
recommends = qtdeclarative
path = qtopenapi
url = ../qtopenapi.git
branch = 6.12.0
branch = 6.12
status = preview
[submodule "qtcanvaspainter"]
depends = qtbase qtdeclarative qtshadertools
path = qtcanvaspainter
url = ../qtcanvaspainter.git
branch = 6.12.0
branch = 6.12
status = addon
+2 -2
View File
@@ -38,5 +38,5 @@ EWL subscription requires an active
header that marks how security-relevant a source file is.
* [QUIP 16](https://contribute.qt-project.org/quips/16) — the branch policy,
which governs which branches accept which changes.
* [Responsible Vulnerability Disclosure Agreement](https://www.qt.io/terms-conditions/responsible-vulnerability-disclosure-process) -
Terms and Conditions of Responsible Vulnerability Disclosure Process at Qt Group.
* [Coordinated Vulnerability Disclosure Policy](https://www.qt.io/terms-conditions/coordinated-vulnerability-disclosure-policy) -
Terms and Conditions of Coordinated Vulnerability Disclosure Policy at Qt Group.
+2
View File
@@ -21,7 +21,9 @@ ColumnLimit: 100
# Disable reflow of some specific comments
# qdoc comments: indentation rules are different.
# Translation comments and SPDX license identifiers are also excluded.
# REUSE-IgnoreStart
CommentPragmas: "^!|^:|^ SPDX-License-Identifier:"
# REUSE-IgnoreEnd
# We want a space between the type and the star for pointer types.
PointerBindsToType: false
+3
View File
@@ -30,3 +30,6 @@ enable_if:
- condition: property
property: target.os
equals_value: Linux
- condition: property
property: target.osVersion
not_equals_value: HarmonyOS_ANY
@@ -105,6 +105,20 @@ Configurations:
'VCPKG_HOST_TRIPLET=x64-linux-qt',
'VCPKG_TARGET_TRIPLET=x64-linux-qt',
]
# Ubuntu 26.04 x64 Wayland
-
Id: 'ubuntu-26.04-x64-developer-build'
Template: 'qtci-linux-Ubuntu-26.04-x86_64-51'
Compiler: 'GCC'
Features: ['Sccache', 'UseConfigure', 'InsignificantTests', 'VerboseCTestOutput', 'StandaloneExamples']
Configure arguments: '-make examples -developer-build -c++std c++20 -linker gold -qtlibinfix TestInfix -qtnamespace TestNamespace'
Environment variables: [
'COMMON_TEST_CMAKE_ARGS=-DQT_SKIP_DOCKER_COMPOSE=ON',
'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE',
'VCPKG_HOST_TRIPLET=x64-linux-qt',
'VCPKG_TARGET_TRIPLET=x64-linux-qt',
]
# Ubuntu 24.04 x64 Wayland
-
Id: 'ubuntu-24.04-x64'
Template: 'qtci-linux-Ubuntu-24.04-x86_64-50'
@@ -118,6 +132,20 @@ Configurations:
'VCPKG_HOST_TRIPLET=x64-linux-qt',
'VCPKG_TARGET_TRIPLET=x64-linux-qt',
]
# Ubuntu 26.04 x64 Wayland
-
Id: 'ubuntu-26.04-x64'
Template: 'qtci-linux-Ubuntu-26.04-x86_64-51'
Compiler: 'GCC'
Features: ['Sccache', 'UseConfigure', 'InsignificantTests', 'VerboseCTestOutput', 'GenerateSBOM', 'VerifySBOM', 'DocsGenerationV2']
Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput'
Environment variables: [
'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY',
'COMMON_TEST_CMAKE_ARGS=-DQT_SKIP_DOCKER_COMPOSE=ON',
'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON',
'VCPKG_HOST_TRIPLET=x64-linux-qt',
'VCPKG_TARGET_TRIPLET=x64-linux-qt',
]
# Test on Ubuntu 24.04 x64 X11
-
Id: 'ubuntu-24.04-x64-developer-build-x11-tests'
@@ -55,7 +55,7 @@ Configurations:
-
Id: 'macos-universal-on-x86_64-minimal-static-test'
Template: 'qtci-macos-15-x86_64-103'
Template: 'qtci-macos-15-x86_64-104'
Compiler: 'Clang'
Target arch: 'x86_64-arm64'
Features: ['Packaging', 'Sccache', 'DoNotRunTests', 'WarningsAreErrors', 'UseConfigure', 'MinimalStaticTests']
@@ -11,10 +11,10 @@ Configurations:
Features: ['Sccache', 'UseConfigure', 'DoNotRunTests', 'Packaging', 'GenerateSBOM', 'VerifySBOM']
Environment variables: [
'TARGET_CONFIGURE_ARGS=-release -nomake examples -no-dbus -no-use-gold-linker -no-pch -openssl-runtime',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT}} -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT_CURRENT}}/sdk/default/openharmony -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
'NON_QTBASE_TARGET_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'COMMON_TARGET_TEST_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'QT_HARMONYOS_HVIGOR=/opt/harmonyos/command-line-tools/bin/hvigorw'
'QT_HARMONYOS_HVIGOR={{.Env.HARMONYOS_SDK_ROOT_CURRENT}}/bin/hvigorw'
]
-
Id: 'harmonyos-23-arm64-on-linux-developer-build'
@@ -27,10 +27,42 @@ Configurations:
Features: ['Sccache', 'UseConfigure', 'DoNotRunTests', 'StandaloneExamples']
Environment variables: [
'TARGET_CONFIGURE_ARGS=-developer-build -debug -make examples -no-dbus -no-use-gold-linker -no-pch -openssl-runtime',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT}} -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT_CURRENT}}/sdk/default/openharmony -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'NON_QTBASE_TARGET_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'COMMON_TARGET_TEST_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'QT_HARMONYOS_HVIGOR=/opt/harmonyos/command-line-tools/bin/hvigorw'
'QT_HARMONYOS_HVIGOR={{.Env.HARMONYOS_SDK_ROOT_CURRENT}}/bin/hvigorw'
]
-
Id: 'harmonyos-26-arm64-on-linux'
Template: 'qtci-linux-Ubuntu-24.04-x86_64-50'
Target os: 'HarmonyOS_ANY'
Target arch: 'arm64'
Compiler: 'Clang'
Target compiler: 'Clang'
Platform dependency: 'ubuntu-24.04-x64'
Features: ['Sccache', 'UseConfigure', 'DoNotRunTests', 'Packaging', 'GenerateSBOM', 'VerifySBOM']
Environment variables: [
'TARGET_CONFIGURE_ARGS=-release -nomake examples -no-dbus -no-use-gold-linker -no-pch -openssl-runtime',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT_NEXT}}/sdk/default/openharmony -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
'NON_QTBASE_TARGET_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'COMMON_TARGET_TEST_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'QT_HARMONYOS_HVIGOR={{.Env.HARMONYOS_SDK_ROOT_NEXT}}/bin/hvigorw'
]
-
Id: 'harmonyos-26-arm64-on-linux-developer-build'
Template: 'qtci-linux-Ubuntu-24.04-x86_64-50'
Target os: 'HarmonyOS_ANY'
Target arch: 'arm64'
Compiler: 'Clang'
Target compiler: 'Clang'
Platform dependency: 'ubuntu-24.04-x64-developer-build'
Features: ['Sccache', 'UseConfigure', 'DoNotRunTests', 'StandaloneExamples']
Environment variables: [
'TARGET_CONFIGURE_ARGS=-developer-build -debug -make examples -no-dbus -no-use-gold-linker -no-pch -openssl-runtime',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT_NEXT}}/sdk/default/openharmony -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'NON_QTBASE_TARGET_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'COMMON_TARGET_TEST_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'QT_HARMONYOS_HVIGOR={{.Env.HARMONYOS_SDK_ROOT_NEXT}}/bin/hvigorw'
]
-
Id: 'harmonyos-23-arm64-on-macos'
@@ -43,8 +75,8 @@ Configurations:
Features: ['Sccache', 'UseConfigure', 'DoNotRunTests', 'StandaloneExamples']
Environment variables: [
'TARGET_CONFIGURE_ARGS=-developer-build -debug -make examples -no-dbus -no-use-gold-linker -no-pch -openssl-runtime',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT}} -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'TARGET_CMAKE_ARGS=-DOHOS_SDK_ROOT={{.Env.HARMONYOS_SDK_ROOT_CURRENT}}/sdk/default/openharmony -DOHOS_ARCH=arm64-v8a -DWARNINGS_ARE_ERRORS=OFF -DQT_QMAKE_TARGET_MKSPEC=ohos-clang -DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'NON_QTBASE_TARGET_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'COMMON_TARGET_TEST_CMAKE_ARGS=-DCMAKE_FIND_ROOT_PATH={{.Env.VCPKG_OHOS_INSTALLED}}',
'QT_HARMONYOS_HVIGOR=/opt/harmonyos/command-line-tools/bin/hvigorw'
'QT_HARMONYOS_HVIGOR={{.Env.HARMONYOS_SDK_ROOT_CURRENT}}/bin/hvigorw'
]
+1 -1
View File
@@ -33,7 +33,7 @@ Configurations:
Platform dependency: 'macos-universal-on-arm64'
-
Id: 'macos-15-x86_64-tests'
Template: 'qtci-macos-15-x86_64-103'
Template: 'qtci-macos-15-x86_64-104'
Compiler: 'Clang'
Features: ['Sccache', 'TestOnly', 'Packaging']
Platform dependency: 'macos-universal-on-arm64'
+6
View File
@@ -16,22 +16,28 @@ Overrides:
# Set pch off due to stale pch file causing false positive sccache hit
-
Id: 'ubuntu-22.04'
-Features: ['DoNotRunTests']
-Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DINPUT_headersclean=ON -DQT_DEPLOY_FFMPEG=TRUE']
+Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DINPUT_headersclean=ON -DQT_DEPLOY_FFMPEG=TRUE -DQT_FEATURE_gstreamer_qt_api=ON -DBUILD_WITH_PCH=OFF']
-
Id: 'ubuntu-24.04-x64'
-Features: ['DoNotRunTests']
-Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON']
+Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON -DQT_FEATURE_gstreamer_qt_api=ON -DBUILD_WITH_PCH=OFF']
-
Id: 'ubuntu-24.04-arm64'
-Features: ['DoNotRunTests']
-Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON -DINPUT_tiff=qt -DINPUT_webp=qt']
+Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON -DINPUT_tiff=qt -DINPUT_webp=qt -DQT_FEATURE_gstreamer_qt_api=ON -DBUILD_WITH_PCH=OFF']
-
Id: 'jammy-arm64-debian-pkg-packaging'
-Features: ['DisableTests']
+Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DQT_FEATURE_gstreamer_qt_api=ON -DBUILD_WITH_PCH=OFF']
-
Id: 'jammy-amd64-debian-pkg-packaging'
-Features: ['DisableTests']
+Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DQT_FEATURE_gstreamer_qt_api=ON -DBUILD_WITH_PCH=OFF']
-
Id: 'qemu-arm64-developer-build'
-Features: ['InsignificantTests']
+Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DQT_FEATURE_gstreamer_qt_api=ON -DBUILD_WITH_PCH=OFF']
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# Distribution-specific build settings.
# For another distro/version, copy the bundle and change these values first.
DISTRO_NAME="ubuntu"
DISTRO_VERSION="26.04"
ISO_PATH="/tmp/ubuntu-26.04-desktop-amd64.iso"
# ISO_CHECKSUM_FILE="/tmp/SHA256SUMS"
# Usually reusable without changes.
IMAGE_PREFIX="qtci-linux"
ARCH="x86_64"
MINIMAL_INDEX="50"
CUSTOM_INDEX="51"
DISK_SIZE="500G"
CPUS="8"
MEMORY_MB="16184"
SSH_USERNAME="qt"
SSH_PASSWORD="$(cat /tmp/PASS)"
PROJECT_DIR="/tmp/packer-linux"
ARTIFACT_DIR="/tmp/output-linux-images"
@@ -0,0 +1,111 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -euo pipefail
script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=build-config.sh
source "${script_dir}/build-config.sh"
image_base_name="${IMAGE_PREFIX}-${DISTRO_NAME}-${DISTRO_VERSION}-${ARCH}"
image_50_name="${image_base_name}-${MINIMAL_INDEX}"
image_51_name="${image_base_name}-${CUSTOM_INDEX}"
image_50="${ARTIFACT_DIR}/${image_50_name}"
image_51="${ARTIFACT_DIR}/${image_51_name}"
image_51_seed="/tmp/${image_51_name}-seed.qcow2"
stage_50_output="/tmp/packer-output-${MINIMAL_INDEX}"
stage_51_output="/tmp/packer-output-${CUSTOM_INDEX}"
template="linux-image.pkr.hcl"
# Pass one source of configuration into Packer without duplicating distro and
# version literals in HCL or a second variable file.
export PKR_VAR_distro_name="$DISTRO_NAME"
export PKR_VAR_distro_version="$DISTRO_VERSION"
export PKR_VAR_image_prefix="$IMAGE_PREFIX"
export PKR_VAR_arch="$ARCH"
export PKR_VAR_minimal_index="$MINIMAL_INDEX"
export PKR_VAR_custom_index="$CUSTOM_INDEX"
export PKR_VAR_iso_path="$ISO_PATH"
# export PKR_VAR_iso_checksum_file="$ISO_CHECKSUM_FILE"
export PKR_VAR_project_dir="$PROJECT_DIR"
export PKR_VAR_artifact_dir="$ARTIFACT_DIR"
export PKR_VAR_disk_size="$DISK_SIZE"
export PKR_VAR_cpus="$CPUS"
export PKR_VAR_memory_mb="$MEMORY_MB"
export PKR_VAR_ssh_username="$SSH_USERNAME"
export PKR_VAR_ssh_password="$SSH_PASSWORD"
if [[ "$script_dir" != "$PROJECT_DIR" ]]; then
echo "ERROR: Bundle is at '$script_dir', but PROJECT_DIR is '$PROJECT_DIR'." >&2
echo "Move/extract it there or update PROJECT_DIR in build-config.sh." >&2
exit 1
fi
for required_file in $ISO_PATH; do
if [[ ! -f "$required_file" ]]; then
echo "ERROR: Required file is missing: $required_file" >&2
exit 1
fi
done
# Stage 51 is always regenerated. Stage 50 is retained
rm -rf "$stage_50_output" "$stage_51_output"
rm -f "$image_51" "$image_51_seed"
rm -f "${image_51}.sha256"
packer init "$template"
packer validate "$template"
if [[ -f "$image_50" ]]; then
echo "Stage ${MINIMAL_INDEX}: existing image found:"
echo " $image_50"
echo "Validating existing image before skipping the build..."
if ! qemu-img check "$image_50"; then
echo "ERROR: Existing stage-${MINIMAL_INDEX} image failed validation:" >&2
echo " $image_50" >&2
echo "The image was not deleted or overwritten." >&2
echo "Remove it manually" >&2
exit 1
fi
echo "Stage ${MINIMAL_INDEX}: image is valid, skipping Packer build."
sha256sum "$image_50" > "${image_50}.sha256"
else
echo "Stage ${MINIMAL_INDEX}: no existing image found, starting Packer."
PACKER_LOG=1 \
PACKER_LOG_PATH="/tmp/packer-stage-${MINIMAL_INDEX}.log" \
packer build -only=stage-50.qemu.stage_50 "$template"
qemu-img check "$image_50"
sha256sum "$image_50" > "${image_50}.sha256"
fi
echo "Creating independent stage-${CUSTOM_INDEX} seed..."
qemu-img convert -p -f qcow2 -O qcow2 "$image_50" "$image_51_seed"
qemu-img check "$image_51_seed"
PACKER_LOG=1 \
PACKER_LOG_PATH="/tmp/packer-stage-${CUSTOM_INDEX}.log" \
packer build -only=stage-51.qemu.stage_51 "$template"
qemu-img check "$image_51"
sha256sum "$image_51" > "${image_51}.sha256"
(
cd "$ARTIFACT_DIR"
sha256sum --check "$(basename "${image_50}.sha256")"
)
rm -f "$image_51_seed"
echo
echo "Created independent images:"
echo " $image_50"
echo " $image_51"
echo "Checksums:"
echo " ${image_50}.sha256"
echo " ${image_51}.sha256"
@@ -0,0 +1,2 @@
instance-id: qtci-ubuntu26-packer
local-hostname: qtci-ubuntu26-x64
@@ -0,0 +1,22 @@
#cloud-config
# This file is installer/distribution-specific. The generic HCL and wrapper can
# be reused, but replace this file for a distro that does not use autoinstall.
autoinstall:
version: 1
source:
id: ubuntu-desktop-minimal
locale: en_US.UTF-8
keyboard:
layout: us
timezone: UTC
identity:
hostname: qtci-ubuntu26-x64
username: qt
password: "$6$qtciubuntu2604$FAeHIUtg1iOarKFnnDZim5fWEJ6ZaaYXSc360m68XFTqurIBWNBxsmUDKj.8mGJkVDKlWjFdKZLfrqHYhuBH8/"
ssh:
install-server: true
allow-pw: true
storage:
layout:
name: direct
shutdown: reboot
@@ -0,0 +1,192 @@
packer {
required_version = ">= 1.14.0"
required_plugins {
qemu = {
version = "~> 1"
source = "github.com/hashicorp/qemu"
}
}
}
variable "distro_name" {
type = string
}
variable "distro_version" {
type = string
}
variable "image_prefix" {
type = string
}
variable "arch" {
type = string
}
variable "minimal_index" {
type = string
}
variable "custom_index" {
type = string
}
variable "iso_path" {
type = string
}
variable "project_dir" {
type = string
}
variable "artifact_dir" {
type = string
}
variable "disk_size" {
type = string
}
variable "cpus" {
type = number
}
variable "memory_mb" {
type = number
}
variable "ssh_username" {
type = string
}
variable "ssh_password" {
type = string
sensitive = true
}
locals {
image_base_name = "${var.image_prefix}-${var.distro_name}-${var.distro_version}-${var.arch}"
image_50_name = "${local.image_base_name}-${var.minimal_index}"
image_51_name = "${local.image_base_name}-${var.custom_index}"
image_50_path = "${var.artifact_dir}/${local.image_50_name}"
image_51_path = "${var.artifact_dir}/${local.image_51_name}"
image_51_seed = "/tmp/${local.image_51_name}-seed.qcow2"
stage_50_output = "/tmp/packer-output-${var.minimal_index}"
stage_51_output = "/tmp/packer-output-${var.custom_index}"
}
source "qemu" "stage_50" {
vm_name = local.image_50_name
output_directory = local.stage_50_output
iso_url = var.iso_path
iso_checksum = "none"
accelerator = "kvm"
qemu_binary = "qemu-system-x86_64"
format = "qcow2"
disk_size = var.disk_size
disk_interface = "virtio"
net_device = "virtio-net"
cpus = var.cpus
memory = var.memory_mb
communicator = "ssh"
ssh_username = var.ssh_username
ssh_password = var.ssh_password
ssh_timeout = "60m"
ssh_handshake_attempts = 100
http_directory = "${var.project_dir}/http"
boot_wait = "10s"
# This boot sequence is installer-family-specific. Replace it when adapting
# the bundle to a distro that does not use Ubuntu/Subiquity autoinstall.
boot_command = [
"c<wait>",
"linux /casper/vmlinuz autoinstall ds=nocloud-net\\;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ---<enter><wait>",
"initrd /casper/initrd<enter><wait>",
"boot<enter>"
]
headless = true
vnc_bind_address = "127.0.0.1"
shutdown_command = "echo '${var.ssh_password}' | sudo -S shutdown -P now"
}
source "qemu" "stage_51" {
vm_name = local.image_51_name
output_directory = local.stage_51_output
# build-images.sh creates this independent seed from immutable image -50.
iso_url = local.image_51_seed
iso_checksum = "none"
disk_image = true
accelerator = "kvm"
qemu_binary = "qemu-system-x86_64"
format = "qcow2"
disk_size = var.disk_size
disk_interface = "virtio"
net_device = "virtio-net"
cpus = var.cpus
memory = var.memory_mb
communicator = "ssh"
ssh_username = var.ssh_username
ssh_password = var.ssh_password
ssh_timeout = "30m"
ssh_handshake_attempts = 100
headless = true
vnc_bind_address = "127.0.0.1"
shutdown_command = "echo '${var.ssh_password}' | sudo -S shutdown -P now"
}
build {
name = "stage-50"
sources = ["source.qemu.stage_50"]
provisioner "shell" {
execute_command = "echo '${var.ssh_password}' | {{ .Vars }} sudo -S -E bash '{{ .Path }}'"
script = "${var.project_dir}/scripts/01-minimal-50.sh"
}
post-processor "shell-local" {
inline = [
"mkdir -p '${var.artifact_dir}'",
"rm -f '${local.image_50_path}'",
"mv '${local.stage_50_output}/${local.image_50_name}' '${local.image_50_path}'",
"qemu-img check '${local.image_50_path}'",
"qemu-img info '${local.image_50_path}'"
]
}
}
build {
name = "stage-51"
sources = ["source.qemu.stage_51"]
provisioner "shell" {
execute_command = "echo '${var.ssh_password}' | {{ .Vars }} sudo -S -E bash '{{ .Path }}'"
script = "${var.project_dir}/scripts/02-coin-configuration-51.sh"
}
provisioner "shell" {
execute_command = "echo '${var.ssh_password}' | {{ .Vars }} sudo -S -E bash '{{ .Path }}'"
script = "${var.project_dir}/scripts/03-gnome-configuration-51.sh"
}
provisioner "shell" {
execute_command = "echo '${var.ssh_password}' | {{ .Vars }} sudo -S -E bash '{{ .Path }}'"
script = "${var.project_dir}/scripts/04-no-overview-extension-51.sh"
}
provisioner "shell" {
execute_command = "echo '${var.ssh_password}' | {{ .Vars }} sudo -S -E bash '{{ .Path }}'"
script = "${var.project_dir}/scripts/05-check-configurations-51.sh"
}
post-processor "shell-local" {
inline = [
"mkdir -p '${var.artifact_dir}'",
"rm -f '${local.image_51_path}'",
"mv '${local.stage_51_output}/${local.image_51_name}' '${local.image_51_path}'",
"qemu-img check '${local.image_51_path}'",
"qemu-img info '${local.image_51_path}'"
]
}
}
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -euo pipefail
# This script is run on the minimal -50 image
# Other scripts will be run on the -50 -> -51 cloned image
readonly CI_USER="${CI_USER:-qt}"
export DEBIAN_FRONTEND=noninteractive
# Debian/Ubuntu implementation. Replace this script with the distro's package
# manager commands when reusing the generic wrapper and HCL elsewhere.
apt-get update
apt-get -y full-upgrade
apt-get install -y qemu-guest-agent
systemctl enable qemu-guest-agent
dpkg-query -W -f='${binary:Package}\t${Version}\n' \
> /var/tmp/qtci-minimal-image-packages.txt
apt-get -y autoremove
apt-get clean
rm -rf /var/lib/apt/lists/*
qemu-ga --version
@@ -0,0 +1,169 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -euo pipefail
# Initial Coin configuration for the customized image (-51).
readonly CI_USER="${CI_USER:-qt}"
readonly GRUB_GFXMODE_VALUE="${GRUB_GFXMODE_VALUE:-1280x800}"
export DEBIAN_FRONTEND=noninteractive
log() {
printf '\n[51-coin-configuration] %s\n' "$*"
}
require_root() {
if [[ "${EUID}" -ne 0 ]]; then
echo "ERROR: This script must run as root." >&2
exit 1
fi
}
require_user() {
if ! id "$CI_USER" >/dev/null 2>&1; then
echo "ERROR: Required CI user does not exist: $CI_USER" >&2
exit 1
fi
}
require_root
require_user
log "Installing required base packages"
apt-get update
apt-get install -y \
openssh-server \
ufw
# Remove GNOME welcome window at boot
log "Removing gnome-initial-setup"
apt-get purge -y gnome-initial-setup
# No sudo PW
log "Configuring passwordless sudo for ${CI_USER}"
cat > "/etc/sudoers.d/${CI_USER}" <<EOF
${CI_USER} ALL=(ALL) NOPASSWD: ALL
EOF
chmod 0440 "/etc/sudoers.d/${CI_USER}"
visudo --check
# UTC
log "Setting the system timezone to UTC"
timedatectl set-timezone UTC
# Enable SSH
log "Enabling SSH"
# Current Ubuntu releases may use socket activation. Enabling both units is
# harmless and keeps the image compatible with service- and socket-based SSH.
systemctl enable ssh.service
systemctl enable ssh.socket 2>/dev/null || true
# Enable QEMU GA
log "Enabling QEMU guest agent"
systemctl enable qemu-guest-agent
# Disable firewall
log "Disabling UFW"
ufw --force disable
systemctl disable ufw.service 2>/dev/null || true
# Set resolution
log "Configuring GRUB graphics mode: ${GRUB_GFXMODE_VALUE}"
if grep -qE '^GRUB_GFXMODE=' /etc/default/grub; then
sed -i "s/^GRUB_GFXMODE=.*/GRUB_GFXMODE=${GRUB_GFXMODE_VALUE}/" /etc/default/grub
else
printf '\nGRUB_GFXMODE=%s\n' "$GRUB_GFXMODE_VALUE" >> /etc/default/grub
fi
update-grub
# Disable auto upgrade/update
log "Disabling periodic APT update checks"
cat > /etc/apt/apt.conf.d/99-qtci-no-periodic-updates << EOF
APT::Periodic "0";
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";
EOF
sudo systemctl disable --now \
apt-daily.timer \
apt-daily-upgrade.timer
sudo systemctl mask \
apt-daily.service \
apt-daily-upgrade.service \
apt-daily.timer \
apt-daily-upgrade.timer
log "Disabling release-upgrade notifications"
if [[ -f /etc/update-manager/release-upgrades ]]; then
if grep -qE '^Prompt=' /etc/update-manager/release-upgrades; then
sed -i 's/^Prompt=.*/Prompt=never/' \
/etc/update-manager/release-upgrades
else
printf '\nPrompt=never\n' >> /etc/update-manager/release-upgrades
fi
fi
# GDM Auto login
log "Configuring GDM for ${CI_USER}"
if [[ -d /etc/gdm3 ]]; then
gdm_config="/etc/gdm3/custom.conf"
touch "$gdm_config"
if ! grep -qE '^\[daemon\]' "$gdm_config"; then
printf '\n[daemon]\n' >> "$gdm_config"
fi
sed -i \
'/^AutomaticLoginEnable=/d; /^AutomaticLogin=/d; /^InitialSetupEnable=/d' \
"$gdm_config"
sed -i \
"/^\[daemon\]/a InitialSetupEnable=False\nAutomaticLogin=${CI_USER}\nAutomaticLoginEnable=True" \
"$gdm_config"
else
log "GDM is not installed; skipping GDM configuration"
fi
# Run Coin-setup
log "Downloading and running coin-setup"
coin_setup_url="https://ci-files01-hki.ci.qt.io/input/linux/coin-setup-linux-amd64.zip"
coin_setup_zip="/tmp/coin-setup-linux-amd64.zip"
coin_setup_dir="/tmp/coin-setup-linux-amd64"
coin_setup_binary="${coin_setup_dir}/coin-setup"
rm -rf "$coin_setup_dir"
rm -f "$coin_setup_zip"
mkdir -p "$coin_setup_dir"
wget --quiet --output-document="$coin_setup_zip" "$coin_setup_url"
unzip -q "$coin_setup_zip" -d "$coin_setup_dir"
if [[ ! -f "$coin_setup_binary" ]]; then
echo "ERROR: coin-setup binary was not found at ${coin_setup_binary}" >&2
echo "Archive contents:" >&2
unzip -l "$coin_setup_zip" >&2
exit 1
fi
chmod 0755 "$coin_setup_binary"
sudo -H -u "$CI_USER" "$coin_setup_binary"
rm -rf "$coin_setup_dir"
rm -f "$coin_setup_zip"
log "coin-setup completed successfully"
# Clean apt
log "Cleaning APT metadata"
apt-get clean
rm -rf /var/lib/apt/lists/*
log "Configuration completed successfully"
echo "A reboot is required for all GRUB and login-manager changes to take effect."
@@ -0,0 +1,150 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -euo pipefail
readonly CI_USER="${CI_USER:-qt}"
log() {
printf '\n[gnome-configuration] %s\n' "$*"
}
if [[ "$EUID" -ne 0 ]]; then
echo "ERROR: This script must run as root." >&2
exit 1
fi
if ! id "$CI_USER" >/dev/null 2>&1; then
echo "ERROR: User does not exist: $CI_USER" >&2
exit 1
fi
ci_home="$(getent passwd "$CI_USER" | cut -d: -f6)"
if [[ -z "$ci_home" || ! -d "$ci_home" ]]; then
echo "ERROR: Cannot determine home directory for $CI_USER" >&2
exit 1
fi
log "Applying GNOME preferences for ${CI_USER}"
# GNOME preferences are stored per user in the dconf database. Packer runs this
# provisioner as root over SSH, without a graphical login or user D-Bus session.
# Run gsettings as the CI user inside a temporary D-Bus session so the values
# are written to the CI user's dconf database rather than root's configuration.
sudo -H -u "$CI_USER" HOME="$ci_home" dbus-run-session -- bash <<'GNOME_SETTINGS'
set -euo pipefail
schema_exists() {
local schema="$1"
gsettings list-schemas |
grep -Fx "$schema" >/dev/null
}
key_exists() {
local schema="$1"
local key="$2"
gsettings list-keys "$schema" |
grep -Fx "$key" >/dev/null
}
set_setting() {
local schema="$1"
local key="$2"
local value="$3"
if ! schema_exists "$schema"; then
echo "ERROR: Missing GSettings schema: $schema" >&2
exit 1
fi
if ! key_exists "$schema" "$key"; then
echo "ERROR: Missing GSettings key: $schema $key" >&2
exit 1
fi
echo "Setting: $schema $key = $value"
gsettings set "$schema" "$key" "$value"
actual="$(gsettings get "$schema" "$key")"
echo "Result: $schema $key = $actual"
}
set_setting \
org.gnome.desktop.notifications \
show-banners \
false
set_setting \
org.gnome.desktop.notifications \
show-in-lock-screen \
false
set_setting \
org.gnome.desktop.screensaver \
lock-enabled \
false
if key_exists \
org.gnome.desktop.screensaver \
ubuntu-lock-on-suspend; then
set_setting \
org.gnome.desktop.screensaver \
ubuntu-lock-on-suspend \
false
fi
set_setting \
org.gnome.desktop.privacy \
remember-recent-files \
false
rm -f "${XDG_DATA_HOME:-$HOME/.local/share}/recently-used.xbel"
set_setting \
org.gnome.desktop.session \
idle-delay \
'uint32 0'
set_setting \
org.gnome.settings-daemon.plugins.power \
sleep-inactive-ac-type \
"'nothing'"
set_setting \
org.gnome.settings-daemon.plugins.power \
sleep-inactive-battery-type \
"'nothing'"
set_setting \
org.gnome.settings-daemon.plugins.power \
sleep-inactive-ac-timeout \
0
set_setting \
org.gnome.settings-daemon.plugins.power \
sleep-inactive-battery-timeout \
0
set_setting \
org.gnome.shell.extensions.dash-to-dock \
dock-fixed \
true
set_setting \
org.gnome.shell.extensions.dash-to-dock \
autohide \
false
set_setting \
org.gnome.shell.extensions.dash-to-dock \
intellihide \
false
GNOME_SETTINGS
log "GNOME preferences applied successfully"
@@ -0,0 +1,46 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -euo pipefail
# Install no-overview gnome extension to prevent desktop overview at boot (QTBUG-132070)
readonly CI_USER="${CI_USER:-qt}"
readonly EXTENSION_UUID="no-overview@fthx"
readonly EXTENSION_URL="https://ci-files01-hki.ci.qt.io/input/linux/no-overviewfthx.v23.shell-extension.zip" # GNOME <50
readonly EXTENSION_ZIP="/tmp/${EXTENSION_UUID}.zip"
readonly EXTENSION_DIR="/usr/share/gnome-shell/extensions/${EXTENSION_UUID}"
if [[ "$EUID" -ne 0 ]]; then
echo "ERROR: This script must run as root." >&2
exit 1
fi
if ! id "$CI_USER" >/dev/null 2>&1; then
echo "ERROR: User does not exist: $CI_USER" >&2
exit 1
fi
ci_home="$(getent passwd "$CI_USER" | cut -d: -f6)"
echo "Installing No Overview GNOME extension"
wget --quiet --output-document="$EXTENSION_ZIP" "$EXTENSION_URL"
install -d -o root -g root -m 0755 "$EXTENSION_DIR"
unzip -q "$EXTENSION_ZIP" -d "$EXTENSION_DIR"
chown -R root:root "$EXTENSION_DIR"
find "$EXTENSION_DIR" -type d -exec chmod 0755 {} +
find "$EXTENSION_DIR" -type f -exec chmod 0644 {} +
# gnome-extensions writes the enabled state to the CI user's dconf database.
# Packer runs over SSH without a user session, so provide a temporary D-Bus.
sudo -H -u "$CI_USER" HOME="$ci_home" dbus-run-session -- gnome-extensions enable "$EXTENSION_UUID"
rm -f "$EXTENSION_ZIP"
echo "Installed and enabled: $EXTENSION_UUID"
echo "After a reboot, check with: gnome-extensions list --enabled"
@@ -0,0 +1,138 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -euo pipefail
failures=0
pass() {
printf 'PASS: %s\n' "$1"
}
fail() {
printf 'FAIL: %s\n' "$1"
failures=$((failures + 1))
}
echo "=== Image -51 verification ==="
# No PW prompt
if sudo -n true 2>/dev/null; then
pass "passwordless sudo"
else
fail "passwordless sudo"
fi
if sudo visudo --check >/dev/null 2>&1; then
pass "sudoers syntax"
else
fail "sudoers syntax"
fi
# Timezone
timezone="$(timedatectl show --property=Timezone --value)"
if [[ "$timezone" == "UTC" || "$timezone" == "Etc/UTC" ]]; then
pass "timezone is UTC"
else
fail "timezone is '$timezone', expected UTC"
fi
# SSH
if dpkg-query -W -f='${db:Status-Abbrev}' openssh-server 2>/dev/null | grep -q '^ii'; then
pass "openssh-server installed"
else
fail "openssh-server installed"
fi
if systemctl is-active --quiet ssh.socket || systemctl is-active --quiet ssh.service; then
pass "SSH listener active"
else
fail "SSH listener active"
fi
if sudo ss -ltn |
grep -qE 'LISTEN.+:22[[:space:]]'; then
pass "TCP port 22 listening"
else
fail "TCP port 22 listening"
fi
# QEMU GA
if dpkg-query -W -f='${db:Status-Abbrev}' qemu-guest-agent 2>/dev/null | grep -q '^ii'; then
pass "qemu-guest-agent installed"
else
fail "qemu-guest-agent installed"
fi
if systemctl is-enabled --quiet qemu-guest-agent; then
pass "qemu-guest-agent enabled"
else
fail "qemu-guest-agent enabled"
fi
# UFW
if sudo ufw status | grep -Fxq 'Status: inactive'; then
pass "UFW inactive"
else
fail "UFW inactive"
fi
# Resolution
if grep -Fxq 'GRUB_GFXMODE=1280x800' /etc/default/grub; then
pass "GRUB graphics mode"
else
fail "GRUB graphics mode"
fi
# Auto update/upgrade disabled
if apt-config dump | grep -i 'APT::Periodic \"0\";'; then
pass "APT periodic processing disabled"
else
apt-config dump | grep -i APT::Periodic
fail "APT periodic processing enabled"
fi
if apt-config dump | grep -i 'APT::Periodic::Unattended-Upgrade \"0\";'; then
pass "APT unattended upgrades disabled"
else
apt-config dump | grep -i APT::Periodic
fail "APT unattended upgrades enabled"
fi
if grep -Fxq 'Prompt=never' /etc/update-manager/release-upgrades; then
pass "release-upgrade notifications disabled"
else
fail "release-upgrade notifications enabled"
fi
# Auto login
if sudo grep -Fxq 'AutomaticLoginEnable=True' /etc/gdm3/custom.conf && sudo grep -Fxq 'AutomaticLogin=qt' /etc/gdm3/custom.conf; then
pass "GDM automatic login configured"
else
fail "GDM automatic login configured"
fi
# Broken packages
if [[ -z "$(sudo dpkg --audit)" ]]; then
pass "dpkg audit"
else
fail "dpkg audit"
fi
# GNOME initial setup executable removed
if [[ ! -x /usr/libexec/gnome-initial-setup ]]; then
pass "GNOME initial setup executable is absent"
else
fail "/usr/libexec/gnome-initial-setup exists. There might be a welcome window popup"
fi
# Summary
echo
if (( failures == 0 )); then
echo "All conf checks passed."
else
echo "${failures} check(s) failed."
# exit 1
fi
@@ -161,12 +161,13 @@ cd "$sdkTargetFolder/cmdline-tools/tools/bin"
./sdkmanager --install "emulator" --sdk_root="$sdkTargetFolder" \
| eval "$sdkmanager_no_progress_bar_cmd"
echo "Download and unzip Android Emulator version 35.2.10"
emulatorFileName="emulator-linux_x64-12414864.zip"
echo "Download and unzip Android Emulator version 36.6.11"
# See https://developer.android.com/studio/emulator_archive
emulatorFileName="emulator-linux_x64-15507667.zip"
emulatorCiUrl="https://ci-files01-hki.ci.qt.io/input/android/$emulatorFileName"
emulatorUrl="http://dl.google.com/android/repository/$emulatorFileName"
emulatorTargetFile="$sdkTargetFolder/$emulatorFileName"
emulatorSha1="41dd213d120f727d8c3840347d234b135793ba10"
emulatorSha1="f8d8b83cf21a04966326eb1378bacda255f63b93"
DownloadURL "$emulatorCiUrl" "$emulatorUrl" "$emulatorSha1" "$emulatorTargetFile"
echo "Unzipping the Android Emulator to '$sdkTargetFolder'"
sudo unzip -o -q "$emulatorTargetFile" -d "$sdkTargetFolder"
@@ -202,21 +203,21 @@ echo "Unzipping the Android 16 to $maxVersionDestination"
sudo unzip -o -q "$maxVersionFilePath" -d "$maxVersionDestination"
rm "$maxVersionFilePath"
echo "Download and unzip Android 17 Beta 3 16KB System Image"
insignificantMaxVersionFileName="x86_64-ps16k-37.0_r03.zip"
echo "Download and unzip Android 17 (16KB Page Size) System Image"
insignificantMaxVersionFileName="x86_64-ps16k-37.1_r07.zip"
insignificantMaxVersionDestination="$sdkTargetFolder/system-images/android-37/google_apis_ps16k/"
insignificantMaxVersionFilePath="$insignificantMaxVersionDestination/$insignificantMaxVersionFileName"
insignificantMaxVersionCiUrl="$basePath/system_images/google_apis/$insignificantMaxVersionFileName"
insignificantMaxVersionUrl="https://dl.google.com/android/repository/sys-img/google_apis/$insignificantMaxVersionFileName"
insignificantMaxVersionSha1="b89a6686f9a9e9942d596bed45d422cbccb70c98"
insignificantMaxVersionSha1="88e208a83a5f0b18958275b7c1a047e931395f3f"
mkdir -p "$insignificantMaxVersionDestination"
DownloadURL "$insignificantMaxVersionCiUrl" "$insignificantMaxVersionUrl" "$insignificantMaxVersionSha1" "$insignificantMaxVersionFilePath"
echo "Unzipping the Android 17 Beta3 16KB to $insignificantMaxVersionDestination"
echo "Unzipping the Android 17 (16KB Page Size) to $insignificantMaxVersionDestination"
sudo unzip -o -q "$insignificantMaxVersionFilePath" -d "$insignificantMaxVersionDestination"
# Hack to avoid SDK version bug in source.properties file, the usage of ".0" messes things for avdmanager. TODO: undo when official comes
sudo sed -i 's/AndroidVersion.ApiLevel=37.0/AndroidVersion.ApiLevel=37/g' "$insignificantMaxVersionDestination/x86_64/source.properties"
sudo sed -i 's/AndroidVersion.ApiLevel=37.1/AndroidVersion.ApiLevel=37/g' "$insignificantMaxVersionDestination/x86_64/source.properties"
rm "$insignificantMaxVersionFilePath"
echo "Checking the contents of Android SDK again..."
@@ -229,7 +230,7 @@ echo "no" | ./avdmanager create avd -n emulator_x86_64_api_36 -c 2048M -f \
-k "system-images;android-36;google_apis;x86_64"
echo "no" | ./avdmanager create avd -n emulator_x86_64_api_37 -c 2048M -f \
-k "system-images;android-37;google_apis,page_size_16kb,ai_glasses_compatible;x86_64"
-k "system-images;android-37;google_apis,page_size_16kb;x86_64"
echo "Install maximum supported SDK level image for Android Automotive $sdkApiLevelAutomotiveMax"
DownloadURL "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxSha" \
@@ -11,8 +11,12 @@ PROVISIONING_DIR="$(dirname "$0")/../.."
# shellcheck source=../unix/common.sourced.sh
source "$PROVISIONING_DIR/common/unix/common.sourced.sh"
if [ -f /usr/lib/sysctl.d/55-ptrace.conf ]; then
f="/usr/lib/sysctl.d/55-ptrace.conf" # New location in Ubuntu 26.04
else
f="/etc/sysctl.d/10-ptrace.conf"
fi
f="/etc/sysctl.d/10-ptrace.conf"
if [ -f $f ]
then
echo "Modifying $f ..."
@@ -16,52 +16,42 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
targetFolder="/opt/harmonyos"
sdkTargetFolder="$targetFolder/command-line-tools"
sudo mkdir -p "$sdkTargetFolder"
basePath="http://ci-files01-hki.ci.qt.io/input/harmonyos"
toolsVersion="6.1.0.850"
toolsFile="commandline-tools-linux-x64-6.1.0.850.zip"
toolsSha1="6fdf7dbe0faddeb6a36cc76752faaf03d2abd462"
function InstallCommandLineTools() {
toolsTargetFile="/tmp/$toolsFile"
toolsSourceFile="$basePath/$toolsFile"
cltVersion=$1
cltSha1=$2
echo "Download and unzip HarmonyOS SDK"
DownloadURL "$toolsSourceFile" "$toolsSourceFile" "$toolsSha1" "$toolsTargetFile"
echo "Unzipping HarmonyOS Tools to '$targetFolder'"
sudo unzip -q "$toolsTargetFile" -d "$targetFolder"
rm "$toolsTargetFile"
cltFile="commandline-tools-linux-x64-$cltVersion.zip"
cltTargetFile="/tmp/$cltFile"
cltSourceFile="$basePath/$cltFile"
patchFile="harmonyos_sdk_patches.zip"
patchSha1="7f912104a5600bc176891bc6e9d97732f4266ad6"
cltTargetDir="$targetFolder/$cltVersion"
sudo mkdir -p "$cltTargetDir"
patchTargetFile="/tmp/$patchFile"
patchSourceFile="$basePath/$patchFile"
patchTargetFolder="$targetFolder/harmonyos_sdk_patches"
DownloadURL "$cltSourceFile" "$cltSourceFile" "$cltSha1" "$cltTargetFile"
echo "Unzipping HarmonyOS Command Line Tools to '$cltTargetDir'"
# Get the package base directory name as string
zipBase=$(sudo zipinfo -1 "$cltTargetFile" 2>/dev/null | awk '!seen {sub("/.*",""); print; seen=1}')
sudo unzip -q "$cltTargetFile" -d "$cltTargetDir"
rm "$cltTargetFile"
harmonycltRoot="${cltTargetDir}/${zipBase}"
echo "Download and unzip HarmonyOS SDK patches"
DownloadURL "$patchSourceFile" "$patchSourceFile" "$patchSha1" "$patchTargetFile"
echo "Unzipping HarmonyOS SDK patches to '$targetFolder'"
sudo unzip -q "$patchTargetFile" -d "$targetFolder"
rm "$patchTargetFile"
echo "Changing ownership of HarmonyOS files."
sudo chown -R qt:users "$harmonycltRoot"
}
echo "Changing ownership of HarmonyOS files."
if uname -a |grep -q "el7"; then
sudo chown -R qt:wheel "$sdkTargetFolder"
sudo chown -R qt:wheel "$patchTargetFolder"
else
sudo chown -R qt:users "$sdkTargetFolder"
sudo chown -R qt:users "$patchTargetFolder"
fi
cltVersionCurrent="6.1.0.850"
cltSha1Current="6fdf7dbe0faddeb6a36cc76752faaf03d2abd462"
InstallCommandLineTools $cltVersionCurrent $cltSha1Current
SetEnvVar "HARMONYOS_SDK_ROOT_CURRENT" "$harmonycltRoot"
sudo ln -s "$harmonycltRoot" "$sdkTargetFolder"
SetEnvVar "HARMONYOS_SDK_ROOT" "$sdkTargetFolder"
echo "Patching HarmonyOS SDK"
sdkRootFolder="$sdkTargetFolder/sdk/default/openharmony"
echo "Checking the contents of HarmonyOS SDK..."
ls -l "$sdkRootFolder"
SetEnvVar "HARMONYOS_SDK_ROOT" "$sdkRootFolder"
export HARMONYOS_SDK_ROOT="$sdkRootFolder"
cltVersionNext="26.0.0.821"
cltSha1Next="d89fc1a09ceb5b25a350695068fe9918912785d2"
InstallCommandLineTools $cltVersionNext $cltSha1Next
SetEnvVar "HARMONYOS_SDK_ROOT_NEXT" "$harmonycltRoot"
echo "HarmonyOS SDK setup finished"
@@ -14,7 +14,7 @@ cp -R x86_64-android-qt-tmp/* "$VCPKG_ROOT/installed/"
cmake "-DVCPKG_EXECUTABLE=$VCPKG_ROOT/vcpkg"\
"-DVCPKG_INSTALL_ROOT=$PWD/x86-android-qt-tmp"\
"-DOUTPUT=~/versions.txt"\
"-DOUTPUT=$HOME/versions.txt"\
-P\
"${BASH_SOURCE%/*}/../shared/vcpkg_parse_packages.cmake"
+2 -2
View File
@@ -43,9 +43,9 @@ if [ ! -d "$targetFolder" ]; then
fi
# QNX SDP
sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx710-windows-linux-20260422.tar.xz"
sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx710-windows-linux-20260828.tar.xz"
targetFile="qnx710.tar.xz"
sha1="98b24df7e8c53a104aee76e769011396fa4bdafd"
sha1="c37e6f3a49a259d450b601843a9af2818b6feb96"
DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$targetFolder"
# IANA timezone database overlay. Packaged separately from the SDP so it can be
+11 -8
View File
@@ -43,9 +43,9 @@ if [ ! -d "$targetFolder" ]; then
fi
# QNX SDP
sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx800-windows-linux-20260410.tar.xz"
sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx800-windows-linux-20260828.tar.xz"
targetFile="qnx800.tar.xz"
sha1="a3fdcd98e12bc5054d00f18e4088af26288fd020"
sha1="f44b66d91625ab33e367cfb62a2950a041607caa"
DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$targetFolder"
# IANA timezone database overlay. Packaged separately from the SDP so it can be
@@ -60,14 +60,17 @@ sudo cp "$aarch64le_toolchain" "$targetPath"
sudo cp "$armv7le_toolchain" "$targetPath"
sudo cp "$x8664_toolchain" "$targetPath"
cp -R "$QNX_qemu_bld_files_dir" "$qemuTargetPath"
# fc-match tool is missing from QNX SDP and tst_qfont requires it to work corretly
# Download code-only package from https://www.iana.org/time-zones and follow README
# to build tools for QNX x86_64. If need to build new tool create new qnx_qemu_utils
# package which contains it and update required info below
sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx_qemu_utils_20211208.tar.xz"
# The SDP ships fc-cache but not fc-match, which tst_qfont needs. Build it from
# fontconfig's fc-match/fc-match.c at the release matching the SDP's fontconfig
# (FC_MINOR/FC_REVISION in fontconfig.h), once per arch:
# qcc -Vgcc_ntox86_64 -O2 -o fc-match fc-match.c \
# -DHAVE_GETOPT_LONG=1 -DHAVE_UNISTD_H=1 -lfontconfig
# Pack as <arch>/fc-match into a new dated archive, then update below. 7.1 keeps
# its own archive.
sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx_qemu_utils_800_20260825.tar.xz"
targetFile="qnx_qemu_utils.tar.xz"
targetFolder="$qemuTargetPath/local/misc_files"
sha1="7653f5d50f61f1591d7785c3ec261228ecc9dd22"
sha1="965b957c76d4bc59c010bb0908d1fea8975179c1"
mkdir -p "$targetFolder"
@@ -17,7 +17,7 @@ var/etc/fontconfig/fonts.conf=etc/fonts/fonts.conf
var/share/fonts=usr/share/fonts
var/etc/hosts=local/misc_files/etc/hosts
var/etc/resolv.conf=local/misc_files/etc/resolv.conf
var/dhcpcd/resolv.conf=local/misc_files/etc/resolv.conf
var/etc/nsswitch.conf=etc/nsswitch.conf
[uid=0 gid=0 dperms=755 type=dir] var/etc/ssl/certs
@@ -61,10 +61,9 @@ lib/libasound.so.5=lib/libasound.so.5
# for fontconfig
lib/libfontconfig.so.17=usr/lib/libfontconfig.so.17
xbin/fc-cache=bin/fc-cache
xbin/fc-match=local/misc_files/fc-match
xbin/fc-match=local/misc_files/x86_64/fc-match
# network
lib/libssl.so=usr/lib/libssl.so
xbin/nslookup=usr/bin/nslookup
xbin/unbound=sbin/unbound
xbin/curl=usr/bin/curl
+6 -1
View File
@@ -77,7 +77,12 @@ targetFolder="/opt/itl_generic_skylake_VSB/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
# Enable ipv4 routing from vxWorks to Qt DNS
sudo sed -i s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g /etc/sysctl.conf
if [ -f /etc/sysctl.conf ]; then
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
else
# There's no /etc/sysctl.conf in Ubuntu 26.04, use sysctl.d instead
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-vxworks.conf
fi
sudo iptables -I FORWARD 1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
@@ -61,4 +61,8 @@ ls -l "$sdkRootFolder"
SetEnvVar "HARMONYOS_SDK_ROOT" "$sdkRootFolder"
export HARMONYOS_SDK_ROOT="$sdkRootFolder"
# Same meaning as on Linux: the command-line-tools root, which holds hvigorw.
SetEnvVar "HARMONYOS_SDK_ROOT_CURRENT" "$sdkTargetFolder"
export HARMONYOS_SDK_ROOT_CURRENT="$sdkTargetFolder"
echo "HarmonyOS SDK setup finished"
@@ -2,14 +2,19 @@
"overrides": [
{
"name": "openssl",
"version": "3.0.7",
"port-version": 2
"version": "3.5.4",
"port-version": 0
}
],
"dependencies": [
{
"name": "openssl",
"platform": "!ohos"
"platform": "!ohos & !android",
"features": [ "tools" ]
},
{
"name": "openssl",
"platform": "android"
},
{
"name": "protobuf",
@@ -112,7 +112,7 @@ do
echo "Starting emulator ${AVD_NAME}, try ${counter}/${EMULATOR_MAX_RETRIES}" \
| tee "${EMULATOR_RUN_LOG_PATH}"
$EMULATOR_EXEC -avd "$AVD_NAME" \
-gpu swiftshader_indirect -no-audio $WINDOW_ARG -no-boot-anim \
-gpu swiftshader -no-audio $WINDOW_ARG -no-boot-anim \
-cores 4 -memory 16000 -partition-size 4096 \
-detect-image-hang -restart-when-stalled -no-snapshot-save \
-no-nested-warnings -logcat '*:v' -logcat-output "${LOGCAT_PATH}" \
@@ -8,13 +8,22 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
echo "Installing vcpkg OHOS ports"
# The vcpkg OHOS toolchain expects OHOS_SDK_ROOT; CI sets HARMONYOS_SDK_ROOT.
export OHOS_SDK_ROOT="${OHOS_SDK_ROOT:-$HARMONYOS_SDK_ROOT}"
ohosSdkRoot="${OHOS_SDK_ROOT:-$HARMONYOS_SDK_ROOT}"
if [ -z "$OHOS_SDK_ROOT" ]; then
if [ -z "$ohosSdkRoot" ]; then
echo "ERROR: Neither OHOS_SDK_ROOT nor HARMONYOS_SDK_ROOT is set." >&2
exit 1
fi
# On Linux, HARMONYOS_SDK_ROOT points at the command-line-tools root; the vcpkg
# toolchain needs the openharmony native SDK inside it. On macOS it already
# points there, so only descend when the nested SDK exists.
if [ -d "$ohosSdkRoot/sdk/default/openharmony/native" ]; then
ohosSdkRoot="$ohosSdkRoot/sdk/default/openharmony"
fi
export OHOS_SDK_ROOT="$ohosSdkRoot"
# Coin sets TARGET=hdb in the environment. GNU Make imports env vars as make
# variables, which breaks ICU's Makefile (it defines its own TARGET variable
# for the library path). Unset it before invoking vcpkg.
@@ -11,6 +11,15 @@ source "${BASH_SOURCE%/*}/SourceEnvVars.sh"
# This script will install Google's Protocal Buffers
# On Intel macOS /usr/local is user-owned by homebrew; using sudo there would
# change ownership to root and break later brew installations. On Apple Silicon
# homebrew uses /opt/homebrew instead, and /usr/local stays root-owned, so sudo
# is still required.
SUDO="sudo"
if uname -a | grep -q Darwin && [ "$(uname -m)" = "x86_64" ]; then
SUDO=""
fi
version="21.9"
sha1="3226a0e49d048759b702ae524da79387c59f05cc"
internalUrl="http://ci-files01-hki.ci.qt.io/input/automotive_suite/protobuf-all-$version.zip"
@@ -20,7 +29,7 @@ targetDir="$HOME/protobuf-$version"
targetFile="$targetDir.zip"
DownloadURL "$internalUrl" "$externalUrl" "$sha1" "$targetFile"
unzip "$targetFile" -d "$HOME"
sudo rm "$targetFile"
$SUDO rm "$targetFile"
cd $targetDir
@@ -81,7 +90,7 @@ cmake "$targetDir" -G"Ninja Multi-Config" \
-DCMAKE_CROSS_CONFIGS=all \
-DCMAKE_DEFAULT_CONFIGS=all
ninja all:all
sudo env "PATH=$PATH" ninja install:all
$SUDO env "PATH=$PATH" ninja install:all
SetEnvVar "protobuf_ROOT" "$installPrefix"
@@ -90,5 +99,5 @@ if uname -a |grep -qv "Darwin"; then
sudo ldconfig
fi
sudo rm -r "$targetDir"
sudo rm -r "$buildDir"
$SUDO rm -r "$targetDir"
$SUDO rm -r "$buildDir"
@@ -38,10 +38,10 @@ zip="/tmp/libclang.7z"
destination="/usr/local/libclang-dynlibs-$version"
DownloadURL "$url_cached" "$url" "$sha1" "$zip"
if command -v 7zr &> /dev/null; then
sudo 7zr x $zip -o/usr/local/
else
if command -v 7z &> /dev/null; then
sudo 7z x $zswitch $zip -o/usr/local/
else
sudo 7zr x $zip -o/usr/local/
fi
sudo mv /usr/local/libclang "$destination"
rm -rf $zip
+3 -3
View File
@@ -59,10 +59,10 @@ zip="/tmp/libclang.7z"
destination="/usr/local/libclang-$version"
DownloadURL $url_cached $url $sha1 $zip
if command -v 7zr &> /dev/null; then
sudo 7zr x $zip -o/usr/local/
else
if command -v 7z &> /dev/null; then
sudo 7z x $zswitch $zip -o/usr/local/
else
sudo 7zr x $zip -o/usr/local/
fi
sudo mv /usr/local/libclang "$destination"
rm -rf $zip
+3 -3
View File
@@ -28,10 +28,10 @@ $folderName = "qnx710"
$targetPath = "$targetFolder$folderName"
# QNX SDP
$cachedUrl = "\\ci-files01-hki.ci.qt.io\provisioning\qnx\qnx710-windows-linux-20260422.tar.xz"
$sourceFile = "http://ci-files01-hki.ci.qt.io/input/qnx/qnx710-windows-linux-20260422.tar.xz"
$cachedUrl = "\\ci-files01-hki.ci.qt.io\provisioning\qnx\qnx710-windows-linux-20260828.tar.xz"
$sourceFile = "http://ci-files01-hki.ci.qt.io/input/qnx/qnx710-windows-linux-20260828.tar.xz"
$targetFile = "qnx710.tar.xz"
$sha1 = "98b24df7e8c53a104aee76e769011396fa4bdafd"
$sha1 = "c37e6f3a49a259d450b601843a9af2818b6feb96"
DownloadAndExtract $sourceFile $sha1 $targetFile $targetFolder $cachedUrl
Copy-Item $aarch64le_toolchain $targetPath
+3 -3
View File
@@ -28,10 +28,10 @@ $folderName = "qnx800"
$targetPath = "$targetFolder$folderName"
# QNX SDP
$cachedUrl = "\\ci-files01-hki.ci.qt.io\provisioning\qnx\qnx800-windows-linux-20260410.tar.xz"
$sourceFile = "http://ci-files01-hki.ci.qt.io/input/qnx/qnx800-windows-linux-20260410.tar.xz"
$cachedUrl = "\\ci-files01-hki.ci.qt.io\provisioning\qnx\qnx800-windows-linux-20260828.tar.xz"
$sourceFile = "http://ci-files01-hki.ci.qt.io/input/qnx/qnx800-windows-linux-20260828.tar.xz"
$targetFile = "qnx800.tar.xz"
$sha1 = "a3fdcd98e12bc5054d00f18e4088af26288fd020"
$sha1 = "f44b66d91625ab33e367cfb62a2950a041607caa"
DownloadAndExtract $sourceFile $sha1 $targetFile $targetFolder $cachedUrl
# IANA timezone database overlay. Packaged separately from the SDP so it can be
+40
View File
@@ -0,0 +1,40 @@
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
. "$PSScriptRoot\helpers.ps1"
$version = "9.2.0984"
$versioned_dir = "vim92"
$cpu_arch = Get-CpuArchitecture
Write-Host "Installing vim for architecture $cpu_arch"
switch ($cpu_arch) {
arm64 {
$arch = "arm64"
$sha1 = "7df12598d95edfc283015e19c430ecf6d75d28a3"
Break
}
x64 {
$arch = "x64"
$sha1 = "decbdd2b7ad7afb18576fee51ac027f4a9610710"
}
default {
throw "Unknown architecture $cpu_arch"
}
}
$filename = "gvim_" + $version + "_" + $arch + "_signed.zip"
$officialurl = "https://github.com/vim/vim-win32-installer/releases/download/v$version/$filename"
$cachedurl = "https://ci-files01-hki.ci.qt.io/input/windows/vim/$filename"
Download $officialurl $cachedurl $filename
Verify-Checksum $filename $sha1
Extract-7Zip $filename C:\Utils
$vim_dir = "C:\Utils\vim\$versioned_dir\"
Prepend-Path $vim_dir
if (-not (Test-Path "$vim_dir\vim.exe")) {
throw "vim.exe not found"
}
@@ -5,11 +5,7 @@ source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
# p7zip has a pathing bug in rhel-10, install 7zip-standalone-all instead
sudo dnf install -y 7zip-standalone-all
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
echo "$name = $version" >> ~/versions.txt
sudo ln -s /usr/bin/7zz /usr/bin/7z
@@ -9,9 +9,6 @@ set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
sudo dnf -y install "$name" "$name-plugins"
echo "$name = $version" >> ~/versions.txt
@@ -7,9 +7,6 @@ set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
sudo dnf -y install "$name" "$name-plugins"
echo "$name = $version" >> ~/versions.txt
@@ -7,9 +7,6 @@ set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
sudo dnf -y install "$name" "$name-plugins"
echo "$name = $version" >> ~/versions.txt
@@ -9,9 +9,6 @@ set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
sudo dnf -y install "$name" "$name-plugins"
echo "$name = $version" >> ~/versions.txt
@@ -9,9 +9,6 @@ set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
sudo dnf -y install "$name" "$name-plugins"
echo "$name = $version" >> ~/versions.txt
@@ -5,11 +5,6 @@ source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
sudo dnf install -y 7zip-standalone-all
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
echo "$name = $version" >> ~/versions.txt
sudo ln -s /usr/bin/7zz /usr/bin/7z
@@ -5,11 +5,6 @@ source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
sudo dnf install -y 7zip-standalone-all
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
echo "$name = $version" >> ~/versions.txt
sudo ln -s /usr/bin/7zz /usr/bin/7z
@@ -5,11 +5,6 @@ source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
sudo dnf install -y 7zip-standalone-all
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
echo "$name = $version" >> ~/versions.txt
sudo ln -s /usr/bin/7zz /usr/bin/7z
@@ -5,11 +5,6 @@ source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
sudo dnf install -y 7zip-standalone-all
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
echo "$name = $version" >> ~/versions.txt
sudo ln -s /usr/bin/7zz /usr/bin/7z
@@ -16,6 +16,11 @@ target=swiftly.tar.gz
DownloadURL $url_cached $url $checksum $target
tar zxf swiftly.tar.gz
./swiftly init --quiet-shell-followup -y
./swiftly init --quiet-shell-followup -y --skip-install
# Swift 6.4.0 is not found for Ubuntu 24.04
# Pin to a toolchain that is published for Ubuntu 24.04.
swift_version="6.3.3"
source "${HOME}/.local/share/swiftly/env.sh"
swiftly install "$swift_version" --use --assume-yes
# The installer leaves out line feed when modifying .profile
echo " " >> /home/qt/.profile
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# Disalbe updates
echo "Disabling auto-upgrades"
sudo sed -i 's/"1"/"0"/g' /etc/apt/apt.conf.d/20auto-upgrades
@@ -0,0 +1,6 @@
#!/bin/sh
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
echo "ethtool -K \${DEVICE_IFACE} tso off" | sudo tee -a /etc/NetworkManager/dispatcher.d/pre-up.d/net_tso_off
sudo chmod +x /etc/NetworkManager/dispatcher.d/pre-up.d/net_tso_off
@@ -0,0 +1,3 @@
#!/bin/sh
"$(dirname "$0")"/../common/unix/telegraf_install.sh
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/set_ulimit.sh"
@@ -0,0 +1,51 @@
#!/usr/bin/env bash
# Copyright (C) 2017 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script modifies system settings for automated use
set -ex
BASEDIR=$(dirname "$0")
# shellcheck source=../common/unix/check_and_set_proxy.sh
source "${BASH_SOURCE%/*}/../common/unix/check_and_set_proxy.sh"
# shellcheck source=../common/linux/distro_version_check.sh
source "$BASEDIR/../common/linux/distro_version_check.sh"
# Get distro version to later check if version has changed at the end of the provisioning
record_os_version
NTS_IP=10.212.2.216
echo "Set timezone to UTC."
sudo timedatectl set-timezone Etc/UTC
"$BASEDIR/../common/linux/configure-gnome-shell.sh"
echo "Disable windows key from showing the GNOME Shell Activities overlay"
gsettings set org.gnome.mutter overlay-key ""
echo "Set grub timeout to 0"
sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub
sudo update-grub
# https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624320
# Checking if Ubuntu 20.04 works without this
#echo "Setting up workaround for Ubuntu systemd resolve bug"
#sudo rm -f /etc/resolv.conf
#sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
# remove hostname to get unique based on IP address
sudo rm /etc/hostname
echo "Set Network Test Server address to $NTS_IP in /etc/hosts"
echo "$NTS_IP qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts
echo 'LC_ALL=en_US.UTF8' | sudo tee /etc/default/locale
if [ "$http_proxy" != "" ]; then
echo "Acquire::http::Proxy \"$proxy\";" | sudo tee -a /etc/apt/apt.conf
fi
# This script diverts qtlogging.ini file so we don't get debugging related auto-test failures.
sudo dpkg-divert --divert /etc/xdg/QtProject/qtlogging.ini.foo --rename /etc/xdg/QtProject/qtlogging.ini
@@ -0,0 +1,300 @@
#!/usr/bin/env bash
# Copyright (C) 2025 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# Install required packages with APT
# shellcheck source=../common/linux/apt_wait_loop.sh
source "${BASH_SOURCE%/*}/../common/linux/apt_wait_loop.sh"
echo "Disabling auto update"
sudo sed -i 's/APT::Periodic::Update-Package-Lists "1";/APT::Periodic::Update-Package-Lists "0";/' /etc/apt/apt.conf.d/10periodic
for service in apt-daily.timer apt-daily-upgrade.timer apt-daily.service apt-daily-upgrade.service; do
sudo systemctl stop $service
sudo systemctl disable $service
done
set_internal_repo() {
# Stop fetching the dep-11 metadata, since our mirrors do not handle them well
if [ -f /etc/apt/apt.conf.d/50appstream ]; then
sudo mv /etc/apt/apt.conf.d/50appstream /etc/apt/apt.conf.d/50appstream.disabled
fi
# Disable external APT sources
for source_file in \
/etc/apt/sources.list \
/etc/apt/sources.list.d/ubuntu.sources
do
if [ -f "$source_file" ]; then
sudo mv "$source_file" "$source_file.disabled"
fi
done
sudo tee "/etc/apt/sources.list.d/ubuntu.list" > /dev/null <<-EOC
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 resolute-amd64 main restricted universe multiverse
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 resolute-updates-amd64 main restricted universe multiverse
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 resolute-backports-amd64 main restricted universe
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 resolute-security-amd64 main restricted universe multiverse
EOC
}
(ping -c 3 repo-clones-apt.ci.qt.io && set_internal_repo) || echo "Internal package repository not found. Using public repositories."
# Make sure needed ca-certificates are available
sudo apt-get install --reinstall ca-certificates
# Git is not needed by builds themselves, but is nice to have
# immediately as one starts debugging
installPackages+=(git)
# 7zip is a needed decompressing tool
installPackages+=(p7zip-full)
# To be able to mount yocto-cache during builds
installPackages+=(nfs-common)
# libssl-dev provides headers for OpenSSL
installPackages+=(libssl-dev)
# Needed for qioring
installPackages+=(liburing-dev)
# Needed libraries for X11 support accordingly to https://wiki.qt.io/Building_Qt_5_from_Git
installPackages+=("^libxcb.*")
installPackages+=(libxkbcommon-dev)
installPackages+=(libxkbcommon-x11-dev)
installPackages+=(libx11-xcb-dev)
installPackages+=(libglu1-mesa-dev)
installPackages+=(libxrender-dev)
installPackages+=(libxi-dev)
# Enable linking to system dbus
installPackages+=(libdbus-1-dev)
# Needed libraries for WebEngine
installPackages+=(udev)
installPackages+=(libudev-dev)
installPackages+=(libdrm-dev)
installPackages+=(libegl1-mesa-dev)
installPackages+=(libfontconfig1-dev)
installPackages+=(libgbm-dev)
installPackages+=(liblcms2-dev)
installPackages+=(libpci-dev)
installPackages+=(libre2-dev)
installPackages+=(libsnappy-dev)
installPackages+=(libva-dev)
installPackages+=(libvpx-dev)
installPackages+=(libxkbfile-dev)
installPackages+=(libxshmfence-dev)
installPackages+=(libxss-dev)
installPackages+=(rustc)
installPackages+=(bindgen)
installPackages+=(clang)
installPackages+=(libclang-dev)
installPackages+=(python3-html5lib)
# Common event loop handling
installPackages+=(libglib2.0-dev)
# MySQL support
installPackages+=(libmysqlclient-dev)
# PostgreSQL support
installPackages+=(libpq-dev)
# SQLite support
installPackages+=(libsqlite3-dev)
# ODBC support
installPackages+=(unixodbc-dev)
# Support for FreeType font engine
installPackages+=(libfreetype6-dev)
# Enable the usage of system jpeg libraries
installPackages+=(libjpeg-dev)
# Enable support for printer driver
installPackages+=(libcups2-dev)
# Install libraries needed for QtMultimedia to be able to support all plugins
installPackages+=(libasound2-dev)
installPackages+=(libgstreamer1.0-dev)
installPackages+=(libgstreamer-plugins-extra1.0-dev)
installPackages+=(libgstreamer-plugins-base1.0-dev)
installPackages+=(libgstreamer-plugins-bad1.0-dev)
installPackages+=(libgstreamer-gl1.0-0)
installPackages+=(gstreamer1.0-libav)
installPackages+=(gstreamer1.0-plugins-base)
installPackages+=(gstreamer1.0-plugins-good)
installPackages+=(gstreamer1.0-plugins-bad)
installPackages+=(gstreamer1.0-plugins-rtp)
installPackages+=(gstreamer1.0-plugins-ugly)
installPackages+=(gir1.2-gst-plugins-base-1.0)
installPackages+=(gir1.2-gst-plugins-bad-1.0)
installPackages+=(libpipewire-0.3-dev)
installPackages+=(libspa-0.2-dev)
installPackages+=(yasm)
installPackages+=(libva-dev)
# for QtMultimedia streaming tests
installPackages+=(vlc-bin)
installPackages+=(vlc-plugin-base)
# Required FFmpeg packages
required_ffmpeg_packages=()
while IFS= read -r line; do required_ffmpeg_packages+=("$line"); done < "${BASH_SOURCE%/*}/../common/linux/ffmpeg_required_ubuntu_packages.txt"
installPackages+=("${required_ffmpeg_packages[@]}")
# for tst_qfloat16format, see also QTQAINFRA-6390
installPackages+=(locales-all)
# Support for cross-building to x86 (needed by WebEngine boot2qt builds)
installPackages+=(g++-multilib)
# python3 development package
installPackages+=(python3-dev)
installPackages+=(python3-pip)
installPackages+=(python3-venv)
installPackages+=(virtualenv)
installPackages+=(python3-wheel)
installPackages+=(python-is-python3)
# TODO: Ubuntu 24.04 Removal - not available
# python2 development package
#installPackages+=(python2-dev)
# Automates interactive applications (Needed by RTA to automate configure testing)
installPackages+=(expect)
installPackages+=(mesa-common-dev)
# TODO: Ubuntu 24.04 Replacement
#installPackages+=(libgl1-mesa-glx)
installPackages+=(libglx-mesa0)
installPackages+=(libgl1-mesa-dev)
installPackages+=(libegl1-mesa-dev)
installPackages+=(libegl1)
installPackages+=(libegl-mesa0)
installPackages+=(libegl-dev)
installPackages+=(libglvnd-dev)
installPackages+=(libgles2-mesa-dev)
installPackages+=(curl)
installPackages+=(libcurl4-openssl-dev)
installPackages+=(libicu-dev)
installPackages+=(zlib1g-dev)
installPackages+=(zlib1g)
# 32-bit zlib is needed for for qemu-armv7 toolchain + WebEngine
installPackages+=(lib32z1-dev)
#Java 21 for Android
installPackages+=(openjdk-21-jdk)
installPackages+=(libgtk-3-dev)
installPackages+=(ninja-build)
installPackages+=(libssl-dev)
installPackages+=(libxcursor-dev)
installPackages+=(libxcomposite-dev)
installPackages+=(libxdamage-dev)
installPackages+=(libxrandr-dev)
installPackages+=(libfontconfig1-dev)
installPackages+=(libsrtp2-dev)
installPackages+=(libwebp-dev)
installPackages+=(libjsoncpp-dev)
installPackages+=(libopus-dev)
installPackages+=(libminizip-dev)
installPackages+=(libavutil-dev)
installPackages+=(libavformat-dev)
installPackages+=(libavcodec-dev)
installPackages+=(libevent-dev)
installPackages+=(bison)
installPackages+=(flex)
installPackages+=(gperf)
installPackages+=(libasound2-dev)
installPackages+=(libpulse-dev)
installPackages+=(libxtst-dev)
installPackages+=(libnspr4-dev)
installPackages+=(libnss3-dev)
installPackages+=(libnss3)
installPackages+=(libopenal-dev)
installPackages+=(libbluetooth-dev)
#VirtualBox for RTA
installPackages+=(virtualbox)
installPackages+=(dkms)
# Needed for qtspeech
installPackages+=(libspeechd-dev)
installPackages+=(flite1-dev)
#Pypdf for PDF reading in RTA tests
installPackages+=(python3-pypdf)
# Needed for b2qt
installPackages+=(git-lfs)
installPackages+=(chrpath)
installPackages+=(gawk)
installPackages+=(texinfo)
# Needed for Poppler test in QtWebEngine
installPackages+=(libpoppler-cpp-dev)
# Needed for QtCore
installPackages+=(libdouble-conversion-dev)
installPackages+=(libpcre2-dev)
# Needed for testlib selftests
installPackages+=(valgrind)
# Needed for qtgampepad
installPackages+=(libsdl2-2.0)
installPackages+=(libsdl2-dev)
# Needed for qtwebkit
installPackages+=(ruby)
installPackages+=(libxslt1-dev)
installPackages+=(libxml2-dev)
installPackages+=(libhyphen-dev)
# For remote access
installPackages+=(ssh)
# For bitbake
installPackages+=(diffstat)
installPackages+=(binfmt-support)
installPackages+=(zstd)
installPackages+=(libzstd-dev)
installPackages+=(lz4)
# Vulkan is needed for examples
installPackages+=(libvulkan-dev)
# Needed for qtdltlogging
installPackages+=(libdlt-dev)
# For QNX
installPackages+=(nfs-kernel-server)
installPackages+=(net-tools)
installPackages+=(bridge-utils)
# For Debian packaging
installPackages+=(sbuild)
installPackages+=(ubuntu-dev-tools)
# cifs-utils, for mounting smb drive
installPackages+=(keyutils)
installPackages+=(cifs-utils)
# VxWorks QEMU network setup (tunctl)
installPackages+=(uml-utilities)
# For swiftly
installPackages+=(gnupg2)
installPackages+=(pkg-config)
# For Qt bridges swift
installPackages+=(swiftlang)
# Keep zoneinfo up-to-date (COIN-1282)
installPackages+=(tzdata)
# Autotools needed by vcpkg ports (gperf, icu, fontconfig)
installPackages+=(autoconf autoconf-archive automake libtool)
# For RTA: QTQAINFRA-7368
installPackages+=(xclip)
# Extra utils to include newgrp
installPackages+=(util-linux-extra)
# Install gold linker for faster developer builds
installPackages+=(binutils-gold)
echo "Running update for apt"
waitLoop
sudo apt-get update
echo "Installing packages"
waitLoop
sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o DPkg::Lock::Timeout=300 install "${installPackages[@]}"
# Configure pip
pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache
pip config --user set global.extra-index-url https://pypi.org/simple/
# Ubuntu 24.04 comes with a newer pip that disallows installing into the system site-packages,
# so we explicitly ask it to allow it.
pip install --user -r "${BASH_SOURCE%/*}/../common/shared/requirements.txt" --break-system-packages
source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh"
# SetEnvVar "PATH" "/usr/lib/nodejs-mozilla/bin:\$PATH"
# Provisioning during installation says:
# 'The script sbom2doc is installed in '/home/qt/.local/bin' which is not on PATH.'
# hence the explicit assignment to SBOM_PYTHON_APPS_PATH.
SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/.local/bin"
# Set SBOM_PYTHON_INTERP_PATH to Python3 instance which was used to install SBOM packages from requirements
SetEnvVar "SBOM_PYTHON_INTERP_PATH" "/usr/bin/python3"
gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)"
echo "GCC = $gccVersion" >> versions.txt
glibcVersion="$(ldd --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)"
echo "glibc = $glibcVersion" >> versions.txt
OpenSSLVersion="$(openssl version |cut -b 9-14)"
echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/linux/disable-notifications.sh
source "${BASH_SOURCE%/*}/../common/linux/disable-notifications.sh"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/linux/disable-ntp_linux.sh
source "${BASH_SOURCE%/*}/../common/linux/disable-ntp_linux.sh"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/linux/remove-apport.sh
source "${BASH_SOURCE%/*}/../common/linux/remove-apport.sh"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/linux/remove-update_notifier.sh
source "${BASH_SOURCE%/*}/../common/linux/remove-update_notifier.sh"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/linux/fix-bitbake-apparmor.sh
source "${BASH_SOURCE%/*}/../common/linux/fix-bitbake-apparmor.sh"
@@ -0,0 +1,5 @@
#!/usr/bin/env bash
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
sudo sed -i -e '/nfs4/s/permissions/skip/' /etc/xattr.conf
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/linux/fix-bwrap-apparmor.sh
source "${BASH_SOURCE%/*}/../common/linux/fix-bwrap-apparmor.sh"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/linux/install-nodejs.sh
source "${BASH_SOURCE%/*}/../common/linux/install-nodejs.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2024 The Qt Company Ltd
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/limit-avahi-interfaces.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/mount-vcpkg-cache-drive.sh
source "${BASH_SOURCE%/*}/../common/linux/mount-vcpkg-cache-drive.sh"
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# Copyright (C) 2021 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/SetEnvVar.sh
source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh"
# First test using QFont fails if fonts-noto-cjk is installed. This happens because
# running fontcache for that font takes > 5 mins when run on QEMU. Running fc-cache
# doesn't help since host version creates cache for a wrong architecture and running
# armv7 fc-cache segfaults on QEMU.
sudo DEBIAN_FRONTEND=noninteractive apt-get -y remove fonts-noto-cjk
# Disable QtWayland window decorations, as they cause flakiness when used inside qemu (QTBUG-66173)
qemu_env="QT_WAYLAND_DISABLE_WINDOWDECORATION=1"
SetEnvVar "QEMU_SET_ENV" "\"${qemu_env}\""
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/libclang-dyn.sh" "-snld20"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/libclang.sh" "-snld20"
@@ -0,0 +1,124 @@
#!/usr/bin/env bash
# Copyright (C) 2025 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script installs the Yocto toolchain
set -ex
# shellcheck source=../common/unix/DownloadURL.sh
source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
# shellcheck source=../common/unix/SetEnvVar.sh
source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh"
primaryBaseUrlPath="http://ci-files01-hki.ci.qt.io/input/boot2qt/scarthgap"
altBaseUrlPath="http://download.qt.io/development_releases/prebuilt/boot2qt/scarthgap"
echo "Installing Yocto toolchain for 32-bit b2qt ARMV7..."
versionARM="5.0"
package="b2qt-x86_64-meta-toolchain-b2qt-ci-sdk-qemuarm-126db6b9.sh"
PrimaryUrl="$primaryBaseUrlPath/$package"
AltUrl="$altBaseUrlPath/$package"
SHA1="4ee043f851440c231a1faba3003c251cbdee9947"
yoctoInstaller="/tmp/yocto-toolchain-ARMv7.sh"
yoctoLocationARMv7="/opt/b2qt/$versionARM"
sysrootARMv7="cortexa15t2hf-neon-poky-linux-gnueabi"
crosscompileARMv7="sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-"
envSetupARMv7="environment-setup-$sysrootARMv7"
toolchainFileARMv7="sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake"
DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller"
chmod +x "$yoctoInstaller"
/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationARMv7"
rm -rf "$yoctoInstaller"
echo "Installing Yocto toolchain for 64-bit b2qt ARM64..."
versionARM64="5.0"
package="b2qt-x86_64-meta-toolchain-b2qt-ci-sdk-qemuarm64-126db6b9.sh"
PrimaryUrl="$primaryBaseUrlPath/$package"
AltUrl="$altBaseUrlPath/$package"
SHA1="c7f8838e724f3802f68a9c9154eec8690748e8b0"
yoctoInstaller="/tmp/yocto-toolchain-ARM64.sh"
yoctoLocationARM64="/opt/b2qt/$versionARM64"
sysrootARM64="cortexa57-poky-linux"
crosscompileARM64="sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-"
envSetupARM64="environment-setup-$sysrootARM64"
toolchainFileARM64="sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake"
DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller"
chmod +x "$yoctoInstaller"
/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationARM64"
rm -rf "$yoctoInstaller"
echo "Installing Yocto toolchain for 64-bit b2qt MIPS64..."
versionMIPS64="5.0"
package="b2qt-x86_64-meta-toolchain-b2qt-ci-sdk-qemumips64-126db6b9.sh"
PrimaryUrl="$primaryBaseUrlPath/$package"
AltUrl="$altBaseUrlPath/$package"
SHA1="aa95da9a61910baa7f1700ce91fd9ee3cea027be"
yoctoInstaller="/tmp/yocto-toolchain-mips64.sh"
yoctoLocationMIPS64="/opt/b2qt/$versionMIPS64"
sysrootMIPS64="mips64r2-poky-linux"
crosscompileMIPS64="sysroots/x86_64-pokysdk-linux/usr/bin/mips64-poky-linux/mips64-poky-linux-"
envSetupMIPS64="environment-setup-$sysrootMIPS64"
toolchainFileMIPS64="sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake"
DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller"
chmod +x "$yoctoInstaller"
/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationMIPS64"
rm -rf "$yoctoInstaller"
if [ -e "$yoctoLocationARMv7/sysroots/$sysrootARMv7" ] && [ -e "$yoctoLocationARMv7/${crosscompileARMv7}g++" ] && \
[ -e "$yoctoLocationARMv7/$envSetupARMv7" ] && [ -e "$yoctoLocationARMv7/$toolchainFileARMv7" ] && \
[ -e "$yoctoLocationARM64/sysroots/$sysrootARM64" ] && [ -e "$yoctoLocationARM64/${crosscompileARM64}g++" ] && \
[ -e "$yoctoLocationARM64/$envSetupARM64" ] && [ -e "$yoctoLocationARM64/$toolchainFileARM64" ] && \
[ -e "$yoctoLocationMIPS64/sysroots/$sysrootMIPS64" ] && [ -e "$yoctoLocationMIPS64/${crosscompileMIPS64}g++" ] && \
[ -e "$yoctoLocationMIPS64/$envSetupMIPS64" ] && [ -e "$yoctoLocationMIPS64/$toolchainFileMIPS64" ]; then
SetEnvVar "QEMUARMV7_TOOLCHAIN_SYSROOT" "$yoctoLocationARMv7/sysroots/$sysrootARMv7"
SetEnvVar "QEMUARMV7_TOOLCHAIN_CROSS_COMPILE" "$yoctoLocationARMv7/$crosscompileARMv7"
SetEnvVar "QEMUARMV7_TOOLCHAIN_ENVSETUP" "$yoctoLocationARMv7/$envSetupARMv7"
SetEnvVar "QEMUARMV7_TOOLCHAIN_FILE" "$yoctoLocationARMv7/$toolchainFileARMv7"
SetEnvVar "QEMUARM64_TOOLCHAIN_SYSROOT" "$yoctoLocationARM64/sysroots/$sysrootARM64"
SetEnvVar "QEMUARM64_TOOLCHAIN_CROSS_COMPILE" "$yoctoLocationARM64/$crosscompileARM64"
SetEnvVar "QEMUARM64_TOOLCHAIN_ENVSETUP" "$yoctoLocationARM64/$envSetupARM64"
SetEnvVar "QEMUARM64_TOOLCHAIN_FILE" "$yoctoLocationARM64/$toolchainFileARM64"
SetEnvVar "QEMUMIPS64_TOOLCHAIN_SYSROOT" "$yoctoLocationMIPS64/sysroots/$sysrootMIPS64"
SetEnvVar "QEMUMIPS64_TOOLCHAIN_CROSS_COMPILE" "$yoctoLocationMIPS64/$crosscompileMIPS64"
SetEnvVar "QEMUMIPS64_TOOLCHAIN_ENVSETUP" "$yoctoLocationMIPS64/$envSetupMIPS64"
SetEnvVar "QEMUMIPS64_TOOLCHAIN_FILE" "$yoctoLocationMIPS64/$toolchainFileMIPS64"
else
echo "Error! Couldn't find installation paths for Yocto toolchain. Aborting provisioning." 1>&2
exit 1
fi
cat << EOB >> ~/versions.txt
Yocto ARMv7 toolchain = $versionARM
Yocto ARM64 toolchain = $versionARM64
Yocto MIPS64 toolchain = $versionMIPS64
EOB
# List qt user in qemu toolchain sysroots
sudo sh -c "grep ^qt /etc/passwd >> $yoctoLocationARMv7/sysroots/$sysrootARMv7/etc/passwd"
sudo sh -c "grep ^qt /etc/group >> $yoctoLocationARMv7/sysroots/$sysrootARMv7/etc/group"
sudo sh -c "grep ^qt /etc/passwd >> $yoctoLocationARM64/sysroots/$sysrootARM64/etc/passwd"
sudo sh -c "grep ^qt /etc/group >> $yoctoLocationARM64/sysroots/$sysrootARM64/etc/group"
# Fix mdns to support both docker and network tests
# See also https://bugreports.qt.io/browse/QTBUG-106013
sudo sed -i '/^hosts:/s/.*/hosts: files myhostname mdns_minimal [NOTFOUND=return] mdns4 dns/' \
$yoctoLocationARMv7/sysroots/$sysrootARMv7/etc/nsswitch.conf \
$yoctoLocationARM64/sysroots/$sysrootARM64/etc/nsswitch.conf
# Install qemu binfmt for 32bit and 64bit arm architectures
sudo update-binfmts --package qemu-arm --install arm $yoctoLocationARMv7/sysroots/x86_64-pokysdk-linux/usr/bin/qemu-arm \
--magic "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"
sudo update-binfmts --package qemu-aarch64 --install aarch64 $yoctoLocationARM64/sysroots/x86_64-pokysdk-linux/usr/bin/qemu-aarch64 \
--magic "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2017 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/integrity.sh
source "${BASH_SOURCE%/*}/../common/linux/integrity.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/syft.sh"
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
source "${BASH_SOURCE%/*}/../common/linux/sccache.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2018 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/mqtt_broker.sh
source "${BASH_SOURCE%/*}/../common/unix/mqtt_broker.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/fbx_linux.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/install-conan.sh" "linux" "--break-system-packages"
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/unix/DownloadURL.sh
source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
# This script will install ICU
icuVersion="73.2"
icuLocationLib="/usr/local/lib"
icuLocationInclude="/usr/local/include"
sha1="5699987afcceb0390e52fb860bb3b4ab8b39cabe"
baseBinaryPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Ubuntu22.04-x64.7z"
baseBinaryPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Ubuntu22.04-x64.7z"
sha1Dev="6b9da2fa5fd88db88e9957ee5e3cf9dbcd08fe6b"
develPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Ubuntu22.04-x64-devel.7z"
develPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Ubuntu22.04-x64-devel.7z"
echo "Installing custom ICU $icuVersion $sha1 packages on Ubuntu to $icuLocationLib"
targetFile=$(mktemp)
sudo mkdir -p "$icuLocationLib"
sudo mkdir -p "$icuLocationInclude"
DownloadURL "$baseBinaryPackageURL" "$baseBinaryPackageExternalURL" "$sha1" "$targetFile"
sudo 7z x -snld20 -y -o$icuLocationLib "$targetFile"
sudo rm "$targetFile"
echo "Installing custom ICU devel packages on Ubuntu"
tempDir=$(mktemp -d)
targetFile=$(mktemp)
DownloadURL "$develPackageURL" "$develPackageExternalURL" "$sha1Dev" "$targetFile"
7z x -snld20 -y -o"$tempDir" "$targetFile"
sudo cp -a "$tempDir"/lib/* "$icuLocationLib"
sudo cp -a "$tempDir"/include/* "$icuLocationInclude"
sudo rm "$targetFile"
sudo rm -fr "$tempDir"
sudo /sbin/ldconfig
echo "ICU = $icuVersion" >> ~/versions.txt
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install-breakpad.sh
source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Copyright (C) 2025 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-maven.sh"
@@ -0,0 +1,8 @@
#!/bin/bash
# Copyright (C) 2017 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/android_linux.sh
source "${BASH_SOURCE%/*}/../common/linux/android_linux.sh"
@@ -0,0 +1,8 @@
#!/bin/bash
# Copyright (C) 2025 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/harmonyos_linux.sh
source "${BASH_SOURCE%/*}/../common/linux/harmonyos_linux.sh"
@@ -0,0 +1,7 @@
#!/bin/bash
#Copyright (C) 2023 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/cmake_linux.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/gradle.sh
source "${BASH_SOURCE%/*}/../common/linux/gradle.sh"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/install-vcpkg.sh"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-linux-qt
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Copyright (C) 2025 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-golang.sh" "linux"
@@ -0,0 +1,8 @@
#!/bin/bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install-vcpkg-ports-ohos.sh
source "${BASH_SOURCE%/*}/../common/unix/install-vcpkg-ports-ohos.sh"
@@ -0,0 +1,8 @@
#!/bin/bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install-openssl-headers-ohos.sh
source "${BASH_SOURCE%/*}/../common/unix/install-openssl-headers-ohos.sh"
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script install cpdb from sources.
# Requires GCC and Perl to be in PATH.
set -ex
# Install the dependencies
sudo apt install -y autopoint libglib2.0-dev libdbus-1-dev
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-cpdb.sh"
@@ -0,0 +1,8 @@
#!/bin/bash
# Copyright (C) 2021 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/openssl_for_android.sh
source "${BASH_SOURCE%/*}/../common/unix/openssl_for_android.sh"
@@ -0,0 +1,7 @@
#!/bin/bash
#Copyright (C) 2025 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/install_openapi.sh"
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Copyright (C) 2018 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install_protobuf.sh
source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh"
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install_grpc.sh
source "${BASH_SOURCE%/*}/../common/unix/install_grpc.sh"
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/DownloadURL.sh
source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
# shellcheck source=../common/unix/SetEnvVar.sh
source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh"
checksum="83051570e514a10b6f60d732cd2c35eb3fcc9d3d"
url="https://download.swift.org/swiftly/linux/swiftly-1.1.1-x86_64.tar.gz"
url_cached="http://ci-files01-hki.ci.qt.io/input/swiftly-1.1.1-x86_64.tar.gz"
target=swiftly.tar.gz
# Ubuntu 26.04 has issues with swiftly installer, it's installed with apt instead
if command -v swift >/dev/null 2>&1; then
echo "Swift is already installed"
swift --version
else
DownloadURL $url_cached $url $checksum $target
tar zxf swiftly.tar.gz
./swiftly init --quiet-shell-followup -y
# The installer leaves out line feed when modifying .profile
echo " " >> /home/qt/.profile
fi
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
# Copyright (C) 2020 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script installs QEMU Guest Agent
set -ex
sudo apt -y install qemu-guest-agent
sudo systemctl start qemu-guest-agent
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
# Copyright (C) 2021 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/qnx_710.sh
source "${BASH_SOURCE%/*}/../common/linux/qnx_710.sh"
# setup NFS
sudo bash -c "echo '/home/qt/work ${qemuNetwork}/24(rw,sync,root_squash,no_subtree_check,anonuid=1000,anongid=1000)' >> /etc/exports"
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/qnx_800.sh
source "${BASH_SOURCE%/*}/../common/linux/qnx_800.sh"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2021 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/vx_works.sh
source "${BASH_SOURCE%/*}/../common/linux/vx_works.sh"
@@ -0,0 +1,60 @@
#!/usr/bin/env bash
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -e
PROVISIONING_DIR="$(dirname "$0")/../"
# shellcheck source=../common/unix/common.sourced.sh
source "$PROVISIONING_DIR"/common/unix/common.sourced.sh
# shellcheck source=../common/unix/DownloadURL.sh
source "$PROVISIONING_DIR"/common/unix/DownloadURL.sh
localRepo=http://ci-files01-hki.ci.qt.io/input/docker
# upstreamRepo=https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64
#upstreamRepo=https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64
#upstreamRepo=https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64
upstreamRepo=https://download.docker.com/linux/ubuntu/dists/resolute/pool/stable/amd64
echo '
40e42f4d1f868c68e3bdb19d8e1e82872e0328a7 containerd.io_2.3.3-1~ubuntu.26.04~resolute_amd64.deb
14cedb6de2737bc165c0460ad86604bc510aca4f docker-ce_29.7.2-1~ubuntu.26.04~resolute_amd64.deb
36c54832eb62cf9af38b5101276b36f145abbd07 docker-ce-cli_29.7.2-1~ubuntu.26.04~resolute_amd64.deb
' \
| xargs -n2 | while read -r sha f
do
DownloadURL "$localRepo/$f" "$upstreamRepo/$f" "$sha"
done
sudo apt-get -y install ./containerd.io_*.deb ./docker-ce_*.deb ./docker-ce-cli_*.deb
rm -f ./containerd.io_*.deb ./docker-ce_*.deb ./docker-ce-cli_*.deb
sudo usermod -a -G docker "$USER"
sudo docker --version
# Download and install the docker-compose extension from https://github.com/docker/compose/releases
f=docker-compose-$(uname -s)-$(uname -m)
DownloadURL \
"$localRepo/$f-1.24.1" \
"https://github.com/docker/compose/releases/download/1.24.1/$f" \
cfb3439956216b1248308141f7193776fcf4b9c9b49cbbe2fb07885678e2bb8a
sudo install -m 755 ./docker-compose* /usr/local/bin/docker-compose
sudo docker-compose --version
rm ./docker-compose*
# Install Avahi to discover Docker containers in the test network
sudo apt-get install avahi-daemon -y
# Add registry mirror for docker images
sudo tee -a /etc/docker/daemon.json <<"EOF"
{
"registry-mirrors": ["http://repo-clones.ci.qt.io:5000"]
}
EOF
echo "Restart Docker"
sudo systemctl daemon-reload
sudo systemctl restart docker
# Start testserver provisioning
sudo "$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")/../common/shared/testserver/docker_testserver.sh"
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# Copyright (C) 2021 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# The new version of libnss-mdns resolver library automatically rejects all
# hostnames with more than two labels (i.e. subdomains deep), for example
# vsftpd.test-net.qt.local is automatically rejected. The changes here fix
# this, see also https://github.com/lathiat/nss-mdns#etcmdnsallow
cat <<EOT | sudo tee /etc/mdns.allow
.local.
.local
EOT
sudo sed -i '/^hosts:/s/.*/hosts: files mdns_minimal [NOTFOUND=return] mdns4 dns/' /etc/nsswitch.conf
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# Provisions qdoc and qtattributionsscanner binaries; these are used for
# documentation testing without the need for a dependency to qttools.
set -e
# shellcheck source=../common/unix/check_and_set_proxy.sh
"${BASH_SOURCE%/*}/../common/unix/check_and_set_proxy.sh"
# shellcheck source=../common/unix/DownloadURL.sh
source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
version="68bdc5764da2d4e442181b408751b6572f36fa74"
sha1="dac76e8f6cb69990661e7d814bea6f32fea29bf4"
url="https://download.qt.io/development_releases/prebuilt/qdoc/qt/qdoc-qtattributionsscanner_${version//\./}-based-linux-Ubuntu22.04-gcc11.4-x86_64.7z"
url_cached="http://ci-files01-hki.ci.qt.io/input/qdoc/qt/qdoc-qtattributionsscanner_${version//\./}-based-linux-Ubuntu22.04-gcc11.4-x86_64.7z"
zip="/tmp/qdoc-qtattributionsscanner.7z"
destination="/opt/qt-doctools"
sudo mkdir -p "$destination"
sudo chmod 755 "$destination"
DownloadURL "$url_cached" "$url" "$sha1" "$zip"
if command -v 7zr &> /dev/null; then
sudo 7zr -snld20 x "$zip" "-o$destination/"
else
sudo 7z -snld20 x "$zip" "-o$destination/"
fi
sudo chown -R qt:users "$destination"
rm -rf "$zip"
echo -e "qdoc = $version\nqtattributionsscanner = $version" >> ~/versions.txt

Some files were not shown because too many files have changed in this diff Show More