Run vcpkg_generate_attributions.py after installing the ports, so the
generated qt_attribution.json files and the port index are written in
place into $VCPKG_ROOT/installed, next to the libraries they describe.
The OHOS wrapper needs no change, it delegates to install-vcpkg-ports.sh.
Task-number: QTBUG-150865
Change-Id: Ib9b9cded132dac9b574bcadc05c939e6ed352946
Reviewed-by: Alexandru Croitor <[email protected]>
Walk an installed vcpkg tree, convert each port's SPDX document into a
qt_attribution.json next to it, and write an index mapping installed
library paths to port names. Qt's SBOM machinery reads
qt_attribution.json, so this gets license and provenance information for
vcpkg provided third party libraries into Qt's SBOM without duplicating
that data in Qt repositories.
Ports that install nothing outside share/ and tools/ are skipped. They
are metaports that exist only to depend on other ports, can never be
linked, and are also the only ports whose license metadata is unusable.
Filtering on that rather than on a missing license keeps a real library
with broken metadata visible, which is the case that must not be hidden.
The index exists because a MODULE mode find_package sets no <Package>_DIR
to resolve, and because the vcpkg install database is not shipped in the
developer archives. Its keys are relative to the prefix, so the same file
serves both the vcpkg installed tree and the flattened archive.
A port whose .list file is missing still gets an attribution file, since
emitting nothing would hide a real library. A missing install database
directory, by contrast, is fatal: it would silently disable the whole
feature for every port.
Task-number: QTBUG-150865
Change-Id: I6383169ee321cd88dfe90477e92aa071448c4d6d
Reviewed-by: Alexandru Croitor <[email protected]>
Brings the isExternal property for Components, which is useful to add
for Qt product sboms for system library components.
Pick-to: 6.8 6.12
Change-Id: Iff8e7a50688eefc585322f512681a33202fab437
Reviewed-by: Joerg Bornemann <[email protected]>
The CI VIP images were built with NUM_FILES, RTP_FD_NUM_MAX and
HRFS_DEFAULT_MAX_FILES at 300. That is too tight for the Qt autotests.
A single test binary runs several style suites in one RTP, and each Qt
thread's event dispatcher costs two descriptors for its wakeup pipe, on
top of windows, the QML disk cache on /ram0 and test data read over NFS.
tst_qquickpopup exhausted the per-RTP descriptor table roughly five
sixths of the way through its run and aborted with
QFATAL : QEventDispatcherUNIXPrivate(): Cannot continue without a
thread pipe
which is pipe() failing for want of a free descriptor.
NUM_FILES is the kernel-wide table, shared with the SSH daemon, the NFS
client and the serial console, so the same exhaustion starves those
services: the guest stops answering SSH, the test runner cannot reach it
any more and has to reboot the emulator. tst_qquickmenu wedges its guest
the same way.
Raise all three parameters to 1000. Descriptor table entries are a few
tens of bytes, so the memory cost is negligible on the emulated targets,
and the value stays well below FD_SETSIZE (2048) for any code that still
uses select(); Qt itself polls. This leaves an estimated two to three
times headroom over the peak demand of the heaviest test binary, which
is enough to stop the limit being the binding constraint while keeping a
genuine descriptor leak visible rather than merely delayed.
Fixes: QTBUG-150363
Pick-to: 6.12
Change-Id: I42e26afe0b21215d19b8ed5755a425d8bfed5278
Reviewed-by: Toni Saario <[email protected]>
Also amend the original macOS config name with 'developer-build'
which it actually is.
Pick-to: 6.12
Change-Id: Iec077d75f8a25b4249d46293b5ddee9bd869c9c0
Reviewed-by: Liang Qi <[email protected]>
- Duplicated the packaging configs for QtMCP, in order to have two
builds: one without QHttpServer dependency (QT_FEATURE_httpmcp=OFF)
for the packaged artifact, and the other one with the QHttpServer
enabled for CI coverage only (not packaged).
- Modified the tqtc-qml-preview-mcp config to be built against the QtMcp
variant without the QHttpServer dependency
Pick-to: 6.12
Change-Id: I16db34dd5c85d6b2d06c34ccd1e10ef99e16f027
Reviewed-by: Antti Kokko <[email protected]>
All Qt repos should now be ready for the stricter 6.2.0 reuse license
parser.
Some of our platforms don't have Python 3.10 though (RHEL 9.6) which
is a requirement for reuse 6.2.0, so we keep provisioning the older
5.1.1 version on those platforms.
Pick-to: 6.12
Task-number: QTBUG-149427
Task-number: QTBUG-140916
Change-Id: I17a77b16345c974dc076edda3e7481b6ef005a6f
Reviewed-by: Joerg Bornemann <[email protected]>
qemu-armv7-developer-build and qemu-mips64-developer-build are the same
case as qemu-arm64-developer-build: they build against boot2qt sysroots
that already provide the third-party libraries vcpkg would supply, so
vcpkg has no role there, and armv7-linux-qt and mips64-linux-qt are
triplets that do not exist.
All three are hosted on Ubuntu 24.04 x86_64, which provisions vcpkg for
x64-linux-qt only, so VCPKG_ROOT is set and qt.toolchain.cmake
chainloads vcpkg with CMAKE_PREFIX_PATH pointing at a prefix that is not
provisioned on the host. Nothing breaks today because the sysroot
satisfies every find_package.
This finishes the file; the arm64 configuration was cleaned separately
and leaving the other two behind was an inconsistency.
Task-number: QTBUG-115715
Pick-to: 6.12
Change-Id: Ib5add962424ca83615496ea3723f69162ef061a8
Reviewed-by: Simo Fält <[email protected]>
Reviewed-by: Aku Pietikäinen <[email protected]>
Building the additional packages for the x86_64 target needs an x64
counterpart to the arm64-ohos-qt triplet. Without it vcpkg rejects the
triplet name outright.
It differs from arm64-ohos-qt only in the target architecture and the
matching values from the OHOS CMake toolchain: OHOS_ARCH x86_64 and the
x86_64-unknown-linux-ohos make build triplet.
Change-Id: Ied8c9db9946b9d3dec27d05a0123473927f6d50c
Reviewed-by: Liang Qi <[email protected]>
This script was hardcoded to two ABIs, arm64 iphoneOS and x86_64
simulator. We need to support both arm64 and x86 simulators.
This patch reworks the scripts logic, to instead iterate over a list
of target platforms. We add arm64 simulator to that list.
An .xcframework can only hold one framework per platform, so the
arm64 and x86_64 simulator binaries are now lipoed together into a
single universal framework. The device and simulator binaries are
still kept as separate frameworks inside the .xcframework.
Pick-to: 6.12 6.12.0
Change-Id: Id5dad1d8fd2fcc8dbedcc9bdf314eb521bcd897a
Reviewed-by: Tor Arne Vestbø <[email protected]>
This modifies install-ffmpeg-msvc.ps1 so that we can run it as a
standalone script. It adds several optional command line parameters:
-InstallDir to decide installation output directory
-MsysBash to control which MSYS bash.exe installation to use
-ZlibPath to provide zlib installation directory
-SkipEnvVar disables setting of environment variables (can now run
without elevated privileges)
-Help prints usage message
Pick-to: 6.12
Change-Id: I22f9598f289f4db4dfdaa10bb65471e6c1d35460
Reviewed-by: Dimitrios Apostolou <[email protected]>
install-ffmpeg.ps1 will build and install FFmpeg for many targets.
Future patches will make it possible to run each of these individually
to build only a single target on a local machine. See relation chain.
This patch splits the initial script into multiple files, one per
build target, and one for common functionality and definitions.
No functional change for CI.
Pick-to: 6.12
Change-Id: I717675ae73053be0426155b315d5a5f3fede6d29
Reviewed-by: Dimitrios Apostolou <[email protected]>
At present, this script has two functions that resolve the exact same
path. One does it for a regular path, and one does it for a MSYS-style
path.
This patch adds a new helper function that converts regular paths to
MSYS-style paths to helpers.ps1 and uses it in install-ffmpeg.ps1.
As a drive-by, we fix some incorrect paths for Android OpenSSL.
Pick-to: 6.12
Change-Id: Ia0c7b4be21ed58d4b4fb633b8aeb16de1664694c
Reviewed-by: Dimitrios Apostolou <[email protected]>
This script is useful to run locally if you also need to run the
FFmpeg provisioning scripts locally. This patch adds the following
features:
- Help message displaying how to use
- Parameter for setting build output directory
- Parameter for disabling assigning environment variable (can now run
without elevated privileges)
No changes to normal CI behavior.
Pick-to: 6.12
Change-Id: Ic5f20b84a5873281e1414fca82bd8e5a791fbc25
Reviewed-by: Dimitrios Apostolou <[email protected]>
The current code for finding 7-Zip contains a list of multiple source
folders, but it only checks whether the first folder is non-null for
whether it might hold 7-Zip. This means we do not search all the
folders.
This patch changes this logic to search all the possible program
folders in order to find 7-Zip. It also moves the logic for finding
7-Zip into a dedicated function.
This patch makes it easier to run this function on a local machine.
As a drive-by, we fix some quotation issues in how 7-zip is invoked
to allow filepaths that contain whitespaces.
Pick-to: 6.12
Change-Id: I0e9487f3a27d775545a0671238f9bfbc4fe03598
Reviewed-by: Joerg Bornemann <[email protected]>
Reviewed-by: Oliver Wolff <[email protected]>
Starting with macOS 27, tccd's per-user TCC.db moved out of
~/Library/Application Support/com.apple.TCC into a randomly named
container under /private/var/containers/Data/ProtectedSystem. The
container UUID is assigned by containermanagerd at container
creation time and isn't derived from anything we can compute or
rely on staying put, so we look it up by identifier instead,
matching on MCMMetadataIdentifier in each container's
containermanagerd metadata plist.
The system-wide database, owned by "tccd system" running as root,
is unaffected and stays where it always was, so we only take this
detour for the per-user services (microphone, Bluetooth).
While here, rename the service|path pairs to service|scope, using
"user"/"system" instead of embedding $HOME or / directly, since the
path is no longer a simple function of the scope on newer macOS.
Change-Id: I8db909c7df355d568e4e021e18e7a5c6ebc52a71
Reviewed-by: Aku Pietikäinen <[email protected]>
Reviewed-by: Jukka Jokiniva <[email protected]>
v9.0.2 is the the latest bugfix release of ffmpeg.
Pick-to: 6.12 6.12.0
Change-Id: I2a34b745d122972daedb74a1832c028e33ddb12e
Reviewed-by: Nils Petter Skålerud <[email protected]>
A VxWorks guest that hits a kernel exception reboots itself. QEMU
then restarts the kernel from the same -kernel/-append, and the guest
comes back running only the romfs startup script, without the
per-instance configuration written over the serial console by
coin_vxworks_vars.sh. The test runner's health check (serial echo and
SSH rtp list probe) cannot tell such a guest from a healthy one, so it
keeps handing tests to it. In a qtdeclarative run one x86 emulator
slot rebooted about 90s after provisioning and then failed every test
it was given, because the startup script set an LD_LIBRARY_PATH with
the ARM VSB path baked in, so no RTP could load its shared objects.
Fix both halves:
Start QEMU with -no-reboot, so a guest reset ends the QEMU process
instead of rebooting the kernel. The runner already detects a dead
emulator (serial FIFO without a reader, SSH unresponsive) and
relaunches and re-provisions that slot only; the other parallel
instances are unaffected. A reset during boot is now reported by the
launcher's "exited during boot" check right away instead of after
the SSH wait deadline.
Update the VSB and VIP images to build 15-09-2026, whose startup
script sets the correct per-architecture LD_LIBRARY_PATH, so a guest
that does come up from the romfs defaults is still able to run RTPs.
Fixes: QTBUG-150258
Pick-to: 6.12
Change-Id: I199c507eae14a54c6765f3166a56236c44782f1b
Reviewed-by: Toni Saario <[email protected]>
764040 rebuilt fc-match for the 8.0 SDP, but tst_qfont::defaultFamily
still fails all five rows with "fc-match cannot be started: execve: No
such file or directory". The binary is in the image; it is just not on
PATH. Both fontconfig tools are installed to /system/xbin, while the
image PATH is /proc/boot:/system/bin. Coin does add /system/xbin, by
redefining home/root/.ssh/environment in data_files.custom, but
mkqnximage's own inputs/data.build defines that same file at line 72 and
the custom include only follows at line 96. data.build sets
[+dupignore], so the first entry wins and the override is dropped
without a warning. QNX 7.1 is unaffected: its built-in entry already
names /system/xbin.
The same gap has silently disabled the fc-cache call that
post_start.custom runs at the end of startup:
post_startup.sh: fc-cache: cannot execute - No such file or directory
Install both tools into /system/bin, which is on PATH in the boot
environment and in an ssh session. fc-cache additionally needs HOME:
without it fontconfig fails with "Cannot load default config file" and
"No writable cache directories", because every cache directory in the
config is either absent or relative to HOME. The HOME and
FONTCONFIG_FILE that QNX_TEST_ENV sets do not reach guest startup, so
pass the same two values there.
Verified on a locally built and booted GA8.0.5 image: bare fc-match
resolves to /system/bin/fc-match and all five generic families return
DejaVu Sans, which is what QFont::defaultFamily() returns, so the five
rows pass; and the cache lands in /data/home/root/.cache/fontconfig,
which is the HOME the tests run with.
Pick-to: 6.12 6.11
Change-Id: I6bd29f997b9567218d85768fa47fab38b076cb28
Reviewed-by: Marianne Yrjänä <[email protected]>
Reviewed-by: Simo Fält <[email protected]>
Emulator 36.6.11 maps host visible Vulkan memory into the guest
with a hard coded 4 KB page while the guest driver on the x86_64
16 KB page size image uses getpagesize(), so the mapped pointer
is off by up to 12 KB. Uploads and readbacks then hit the wrong
memory, which is what fails the RHI tests on Android 17. The
emulator 37.1.11 ships the gfxstream fix that aligns to the page
size the guest kernel reports.
Task-number: QTBUG-136620
Task-number: QTBUG-146930
Pick-to: 6.12 6.8
Change-Id: I73e3194d00eca422b6aa5d99a726bfcb14d7e084
Reviewed-by: Simo Fält <[email protected]>
Updated bootstrap to allow running in the USB adapter pool.
Pick-to: 6.12 6.11 6.8
Task-number: QTQAINFRA-8059
Change-Id: If621f2b2d8e2ae9ade61a88816b30814cc080274
Reviewed-by: Jukka Jokiniva <[email protected]>
Replace Android 16 with Android 17 in CI, Android 17
is the max supported version for Qt 6.12.
Pick-to: 6.12
Task-number: QTBUG-146930
Change-Id: I1780ed538b852c7d46491bae7be512766f7da2c1
Reviewed-by: Simo Fält <[email protected]>
Provision the Android 17 SDK platform and build tools,
and compile the Gradle cache project against them.
Pick-to: 6.12
Task-number: QTBUG-136620
Change-Id: I6470f60c08f028a2bfbc6ed09a99492d4a174402
Reviewed-by: Ville Voutilainen <[email protected]>
configure's own -submodules handling now turns the requested submodules
on explicitly, so there is no need to append -DBUILD_<module>=ON to the
argument list that is passed on to qtbase's configure.
Appending them recorded arguments in config.opt that were never on the
command line. Plain
configure -submodules qtsvg
ended up recording
-submodules
qtsvg
--
-DBUILD_qtsvg=ON
so for a command line without a '--' of its own, even the '--' was an
artefact.
extra_cmake_args has no other producer now, so drop it along with the
'--' handling that only existed to place it.
This requires the qtbase change with the same task number. Without it
the requested submodules are no longer turned on at all if a previous
-skip left BUILD_<module>=OFF in the cache.
Fixes: QTBUG-134948
Change-Id: I8df56af86aa30deaa88e3abdd59ddfa2362325f9
Reviewed-by: Alexandru Croitor <[email protected]>
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
Pick-to: 6.12
Change-Id: I806d733b8249c3d2b9dd59ad84f0ab8c23c9068e
Reviewed-by: Joerg Bornemann <[email protected]>
Reviewed-by: Tony Sarajärvi <[email protected]>
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.
Pick-to: 6.12
Change-Id: I2bcd1d5d6426ed26e02aec6d6753660a148270b2
Reviewed-by: Simo Fält <[email protected]>
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.
Pick-to: 6.12
Task-number: QTQAINFRA-8001
Change-Id: If036cca65f5bad9f54216863160e37aa806600b4
Reviewed-by: Simo Fält <[email protected]>
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]
Pick-to: 6.12
Task-number: QTQAINFRA-8001
Task-number: QTQAINFRA-5844
Change-Id: Ic6951f46845f8de8ca012a7c4f353fb042a16ae4
Reviewed-by: Simo Fält <[email protected]>
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.
Pick-to: 6.12
Task-number: QTBUG-146930
Change-Id: If9fe32defa505aa6150aa69bb874bb05345027ee
Reviewed-by: Ville Voutilainen <[email protected]>
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 6.12.0
Change-Id: I2d2385e22769d4df360a626abc7484baf1cb0285
Reviewed-by: Kai Köhne <[email protected]>
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.
Pick-to: 6.12
Task-number: QTBUG-149427
Task-number: QTBUG-140916
Change-Id: I047cff90d7c43ece8af23863ec6f3a06d8bf23fd
Reviewed-by: Joerg Bornemann <[email protected]>
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.
Pick-to: 6.12
Change-Id: I0f452bed3f91f1de133acf345419e7a4a83805c2
Reviewed-by: Simo Fält <[email protected]>
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.12 6.11
Change-Id: I9fe43ec7ba10d8105ef6c9566580e1305935e29a
Reviewed-by: Alexandru Croitor <[email protected]>
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
Pick-to: 6.12
Change-Id: I3b36677837fae3080e9362526bd35012e31fc04e
Reviewed-by: Alexandru Croitor <[email protected]>
Qt for Python needs more recent Python to be used when creating
wheels for releases.
Pick-to: 6.12
Change-Id: Ie0faf617dbda7c3d3d97f609c9b23609cb345a5e
Reviewed-by: Elias Toivola <[email protected]>
Reviewed-by: Toni Saario <[email protected]>
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.12 6.11 6.8
Change-Id: Ic18824faf543a7cae2497b29e4ac8f757ed83af0
Reviewed-by: Tony Sarajärvi <[email protected]>