diff --git a/coin/platform_configs/cmake_platforms.yaml b/coin/platform_configs/cmake_platforms.yaml index 7ff38455..bfff282e 100644 --- a/coin/platform_configs/cmake_platforms.yaml +++ b/coin/platform_configs/cmake_platforms.yaml @@ -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' diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/build-config.sh b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/build-config.sh new file mode 100644 index 00000000..09da9886 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/build-config.sh @@ -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" diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/build-images.sh b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/build-images.sh new file mode 100644 index 00000000..e56cbd8e --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/build-images.sh @@ -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" diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/http/meta-data b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/http/meta-data new file mode 100644 index 00000000..60db8cb5 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/http/meta-data @@ -0,0 +1,2 @@ +instance-id: qtci-ubuntu26-packer +local-hostname: qtci-ubuntu26-x64 diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/http/user-data b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/http/user-data new file mode 100644 index 00000000..e1fc8621 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/http/user-data @@ -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 diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/linux-image.pkr.hcl b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/linux-image.pkr.hcl new file mode 100644 index 00000000..c49860db --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/linux-image.pkr.hcl @@ -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", + "linux /casper/vmlinuz autoinstall ds=nocloud-net\\;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ---", + "initrd /casper/initrd", + "boot" + ] + + 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}'" + ] + } +} diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/01-minimal-50.sh b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/01-minimal-50.sh new file mode 100644 index 00000000..5448aea5 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/01-minimal-50.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 -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 diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/02-coin-configuration-51.sh b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/02-coin-configuration-51.sh new file mode 100644 index 00000000..a08efb9f --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/02-coin-configuration-51.sh @@ -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}" </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." diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/03-gnome-configuration-51.sh b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/03-gnome-configuration-51.sh new file mode 100644 index 00000000..71b07c42 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/03-gnome-configuration-51.sh @@ -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" diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/04-no-overview-extension-51.sh b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/04-no-overview-extension-51.sh new file mode 100644 index 00000000..8ae67287 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/04-no-overview-extension-51.sh @@ -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" diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/05-check-configurations-51.sh b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/05-check-configurations-51.sh new file mode 100644 index 00000000..c72fab4d --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-26.04-x86_64/scripts/05-check-configurations-51.sh @@ -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 diff --git a/coin/provisioning/common/linux/enable_test_stacktraces.sh b/coin/provisioning/common/linux/enable_test_stacktraces.sh index 7b5871db..3755037a 100755 --- a/coin/provisioning/common/linux/enable_test_stacktraces.sh +++ b/coin/provisioning/common/linux/enable_test_stacktraces.sh @@ -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 ..." diff --git a/coin/provisioning/common/linux/vx_works.sh b/coin/provisioning/common/linux/vx_works.sh index 9d6a9dbf..8111e396 100755 --- a/coin/provisioning/common/linux/vx_works.sh +++ b/coin/provisioning/common/linux/vx_works.sh @@ -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 diff --git a/coin/provisioning/common/unix/libclang-dyn.sh b/coin/provisioning/common/unix/libclang-dyn.sh index 5c465a88..4f07bdbb 100755 --- a/coin/provisioning/common/unix/libclang-dyn.sh +++ b/coin/provisioning/common/unix/libclang-dyn.sh @@ -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 diff --git a/coin/provisioning/common/unix/libclang.sh b/coin/provisioning/common/unix/libclang.sh index b19ba010..0bd7e6d7 100755 --- a/coin/provisioning/common/unix/libclang.sh +++ b/coin/provisioning/common/unix/libclang.sh @@ -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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-disable-updates.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-disable-updates.sh new file mode 100644 index 00000000..4c9adc5f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-disable-updates.sh @@ -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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-disable_net_lso.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-disable_net_lso.sh new file mode 100644 index 00000000..81e7d137 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-disable_net_lso.sh @@ -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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-install_telegraf.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-install_telegraf.sh new file mode 100644 index 00000000..729f9003 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-install_telegraf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/unix/telegraf_install.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-set-ulimit.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-set-ulimit.sh new file mode 100644 index 00000000..e951e82a --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-set-ulimit.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-systemsetup.sh new file mode 100644 index 00000000..c2c2ba7c --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/01-systemsetup.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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-apt.sh new file mode 100644 index 00000000..45b262aa --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-apt.sh @@ -0,0 +1,302 @@ +#!/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 + +function set_internal_repo { + + # Stop fetching the dep-11 metadata, since our mirrors do not handle them well + sudo mv /etc/apt/apt.conf.d/50appstream{,.disabled} + + 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 + deb [arch=i386 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 resolute-i386 main restricted universe multiverse + deb [arch=i386 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 resolute-updates-i386 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 integrity +installPackages+=(libc6:i386) +# TODO: Ubuntu 24.04 Removal - not available +#installPackages+=(libncurses5:i386) + +installPackages+=(libstdc++6:i386) +installPackages+=(libx11-6:i386) +installPackages+=(lib32z1) +installPackages+=(linux-libc-dev:i386) +installPackages+=(libxcursor1:i386) +installPackages+=(libc6-dev-i386) +sudo dpkg --add-architecture i386 +# 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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-disable-notifications.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-disable-notifications.sh new file mode 100644 index 00000000..1b9ed6c9 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-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-notifications.sh +source "${BASH_SOURCE%/*}/../common/linux/disable-notifications.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-disable-ntp.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-disable-ntp.sh new file mode 100644 index 00000000..1995aa14 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-disable-ntp.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-remove-apport.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-remove-apport.sh new file mode 100644 index 00000000..879f3ffb --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-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-apport.sh +source "${BASH_SOURCE%/*}/../common/linux/remove-apport.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-remove-update_notifier.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-remove-update_notifier.sh new file mode 100644 index 00000000..f4a5119f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/02-remove-update_notifier.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bitbake-apparmor.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bitbake-apparmor.sh new file mode 100644 index 00000000..57b33767 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bitbake-apparmor.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bitbake-nfs4-acl.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bitbake-nfs4-acl.sh new file mode 100644 index 00000000..92de9816 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bitbake-nfs4-acl.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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bwrap-apparmor.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bwrap-apparmor.sh new file mode 100644 index 00000000..e155338a --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-fix-bwrap-apparmor.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-bwrap-apparmor.sh +source "${BASH_SOURCE%/*}/../common/linux/fix-bwrap-apparmor.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-install-nodejs.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-install-nodejs.sh new file mode 100644 index 00000000..07121a36 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-install-nodejs.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-limit-avahi-interfaces.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-limit-avahi-interfaces.sh new file mode 100644 index 00000000..0dd09067 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-limit-avahi-interfaces.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-mount-vcpkg-cache-drive.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-mount-vcpkg-cache-drive.sh new file mode 100644 index 00000000..ed49b3a5 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-mount-vcpkg-cache-drive.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-qemu.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-qemu.sh new file mode 100644 index 00000000..5ed06f29 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/03-qemu.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}\"" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-libclang-dyn.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-libclang-dyn.sh new file mode 100644 index 00000000..50400ed2 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-libclang-dyn.sh @@ -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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-libclang.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-libclang.sh new file mode 100644 index 00000000..20385404 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-libclang.sh @@ -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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-yocto.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-yocto.sh new file mode 100644 index 00000000..d121acbe --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/04-yocto.sh @@ -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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/08-integrity.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/08-integrity.sh new file mode 100644 index 00000000..0e8dbb39 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/08-integrity.sh @@ -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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/09-install-syft.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/09-install-syft.sh new file mode 100644 index 00000000..cc0db58b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/09-install-syft.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/20-sccache.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/20-sccache.sh new file mode 100644 index 00000000..b371d947 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/20-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/sccache.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/22-mqtt_broker.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/22-mqtt_broker.sh new file mode 100644 index 00000000..b0791cb1 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/22-mqtt_broker.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-fbx.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-fbx.sh new file mode 100644 index 00000000..16a9bda8 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-fbx.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-install-conan.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-install-conan.sh new file mode 100644 index 00000000..d24cb242 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-install-conan.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-install_icu.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-install_icu.sh new file mode 100644 index 00000000..9019ee52 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/30-install_icu.sh @@ -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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/35-install-breakpad.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/35-install-breakpad.sh new file mode 100644 index 00000000..8a9dde56 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/35-install-breakpad.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/unix/install-breakpad.sh +source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/38-maven.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/38-maven.sh new file mode 100644 index 00000000..ded1d623 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/38-maven.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-android_linux.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-android_linux.sh new file mode 100644 index 00000000..2526bc6d --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-android_linux.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-harmonyos_linux.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-harmonyos_linux.sh new file mode 100644 index 00000000..0dfbbed2 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-harmonyos_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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-install-cmake.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-install-cmake.sh new file mode 100644 index 00000000..a418e4c5 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/40-install-cmake.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" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/41-gradle.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/41-gradle.sh new file mode 100644 index 00000000..5e9a37ad --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/41-gradle.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/41-install-vcpkg.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/41-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/41-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/42-install-vcpkg-ports.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/42-install-vcpkg-ports.sh new file mode 100644 index 00000000..60a2dce9 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/42-install-vcpkg-ports.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-linux-qt diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/43-install-golang.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/43-install-golang.sh new file mode 100644 index 00000000..af51440b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/43-install-golang.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-golang.sh" "linux" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/43-install-vcpkg-ports-ohos.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/43-install-vcpkg-ports-ohos.sh new file mode 100644 index 00000000..4482e97a --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/43-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-vcpkg-ports-ohos.sh +source "${BASH_SOURCE%/*}/../common/unix/install-vcpkg-ports-ohos.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/44-install-openssl-headers-ohos.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/44-install-openssl-headers-ohos.sh new file mode 100644 index 00000000..21a7f99f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/44-install-openssl-headers-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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/45-install-cpdb.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/45-install-cpdb.sh new file mode 100644 index 00000000..a5a5dd9b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/45-install-cpdb.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/50-openssl_for_android_linux.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/50-openssl_for_android_linux.sh new file mode 100644 index 00000000..fd1151d9 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/50-openssl_for_android_linux.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/51-openapi.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/51-openapi.sh new file mode 100644 index 00000000..e709fa70 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/51-openapi.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" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/60-install_protobuf.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/60-install_protobuf.sh new file mode 100644 index 00000000..3e2b8921 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/60-install_protobuf.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" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/61-install_grpc.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/61-install_grpc.sh new file mode 100644 index 00000000..ecd6a51f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/61-install_grpc.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" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/62-install-swiftly.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/62-install-swiftly.sh new file mode 100644 index 00000000..aef3642b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/62-install-swiftly.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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-install_QemuGA.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-install_QemuGA.sh new file mode 100644 index 00000000..9a80fc0b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-install_QemuGA.sh @@ -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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-qnx710.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-qnx710.sh new file mode 100644 index 00000000..08eeb57b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-qnx710.sh @@ -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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-qnx800.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-qnx800.sh new file mode 100644 index 00000000..45d9e43e --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-qnx800.sh @@ -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" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-vxworks.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-vxworks.sh new file mode 100644 index 00000000..3bb48d11 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/70-vxworks.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" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/80-docker.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/80-docker.sh new file mode 100644 index 00000000..2abc5d48 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/80-docker.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" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/81-fix_mdns_docker_resolution.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/81-fix_mdns_docker_resolution.sh new file mode 100644 index 00000000..30fe71ca --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/81-fix_mdns_docker_resolution.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 < /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 diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/89-install-patchelf.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/89-install-patchelf.sh new file mode 100644 index 00000000..14636587 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/89-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/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 + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-bootstrap-autostart.sh new file mode 100644 index 00000000..1ff43850 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-bootstrap-autostart.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-install-ffmpeg.sh new file mode 100644 index 00000000..882680b7 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-install-ffmpeg.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/install-ffmpeg-linux.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-mimer.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-mimer.sh new file mode 100644 index 00000000..f06ca1c8 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/90-mimer.sh @@ -0,0 +1,8 @@ +#!/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 + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/mimersql.sh" "openssl-3" "deb" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-install-dummy-sound.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-install-dummy-sound.sh new file mode 100644 index 00000000..5d280b36 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-install-dummy-sound.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 + +# shellcheck source=../common/linux/install-dummy-alsa-device.sh +source "${BASH_SOURCE%/*}/../common/linux/install-dummy-alsa-device.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-install-vivid-camera.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-install-vivid-camera.sh new file mode 100644 index 00000000..4c14ef03 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-install-vivid-camera.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 + +# shellcheck source=../common/linux/install-vivid-camera.sh +source "${BASH_SOURCE%/*}/../common/linux/install-vivid-camera.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-squish-coco.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-squish-coco.sh new file mode 100644 index 00000000..e42a5373 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/91-squish-coco.sh @@ -0,0 +1,6 @@ +#!/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 + +# shellcheck source=../common/linux/squish-coco.sh +source "${BASH_SOURCE%/*}/../common/linux/squish-coco.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/92-sbuild.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/92-sbuild.sh new file mode 100644 index 00000000..59b32627 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/92-sbuild.sh @@ -0,0 +1,57 @@ +#!/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 + +# Setups sbuild environment + +tee ~/.sbuildrc << EOF +############################################################################## +# PACKAGE BUILD RELATED (additionally produce _source.changes) +############################################################################## +# -d +\$distribution = 'stable'; +# -A +\$build_arch_all = 1; +# -s +\$build_source = 1; +# -v +\$verbose = 1; +# parallel build +\$ENV{'DEB_BUILD_OPTIONS'} = 'parallel=8'; +############################################################################## +# POST-BUILD RELATED (turn off functionality by setting variables to 0) +############################################################################## +\$run_lintian = 1; +\$lintian_opts = ['-i', '-I']; +\$run_piuparts = 0; +\$piuparts_opts = ['--schroot', 'stable-amd64-sbuild', '--no-eatmydata']; +\$run_autopkgtest = 0; +\$autopkgtest_root_args = ''; +\$autopkgtest_opts = [ '--', 'schroot', '%r-%a-sbuild' ]; + +############################################################################## +# PERL MAGIC +############################################################################## +1; +EOF + +# Add user group +sudo sbuild-adduser "$LOGNAME" +newgrp sbuild + +# Create chroot +sudo sbuild-createchroot --include=eatmydata,ccache,gnupg,ca-certificates stable /srv/chroot/stable-amd64 + +# For ubuntu 26.04 +echo "Create chroot for Ubuntu Resolute" +## ccache can't be found with Jammy (TODO: but now we have Noble - this should be tested) +# Noble -> Resolute +sudo sbuild-createchroot --include=eatmydata,gnupg,ca-certificates resolute /srv/chroot/resolute-amd64 http://archive.ubuntu.com/ubuntu/ +echo "Done creating chroot for Ubuntu Resolute" + +# Update chroot. +# sudo sbuild-update -udcar stable +# -> sbuild-update is likely deprecated in Ubuntu 26.04, running it errors to: +# "With the "unshare" mode, it is without function. +# Instead, recreate tarballs from scratch or let sbuild +# manage them for you and use mmdebstrap_extra_args to do the custom setup." diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-axivion-bauhaus-suite.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-axivion-bauhaus-suite.sh new file mode 100644 index 00000000..9423c26d --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-axivion-bauhaus-suite.sh @@ -0,0 +1,40 @@ +#!/bin/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 + +# This script installs Axivion Bauhaus Suite tool. + +set -ex + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +DownloadAndExtract () { + url=$1 + sha=$2 + file=$3 + + DownloadURL "$url" "$url" "$sha" "$file" + tar -xzvf "$file" + + rm -rf "$file" +} + + +# Axivion Bauhaus Suite +version="7.11.3" +sourceFile="http://ci-files01-hki.ci.qt.io/input/axivion/bauhaus-suite-$version-x86_64-gnu_linux.tar.gz" +targetFile="bauhaus-suite.tar.gz" +sha1="8ca558908b38ca99500b7e0687609a1531b19121" +cd "$HOME" +DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" + +mkdir "$HOME/.bauhaus" +cd "$HOME/.bauhaus" +wget http://ci-files01-hki.ci.qt.io/input/axivion/QT_11427439_2026-12-31.key +cd "$HOME" + +#Axivion configuration +cp -r "${BASH_SOURCE%/*}/../common/linux/axivion/" "$HOME/" + +echo "Axivion Bauhaus Suite = $version" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-download-files-for-sbuild.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-download-files-for-sbuild.sh new file mode 100644 index 00000000..8f53319c --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-download-files-for-sbuild.sh @@ -0,0 +1,17 @@ +#!/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 + +# Get required deb files for sbuild to build qt debian packages for Ubuntu jammy +mkdir -p /home/qt/debian_packages +cd /home/qt/debian_packages || exit +# Backported cmake 3.24 +wget https://ci-files01-hki.ci.qt.io/input/debian/cmake/amd64-jammy/cmake-3.24-deb.tar.gz +tar xzf cmake-3.24-deb.tar.gz +rm -rf cmake-3.24-deb.tar.gz +# TODO: Adapt this from jammy to noble Ubuntu 24.04: +# get rest of ready made Ubuntu jammy arm debian packages +# so that sbuild can find those + +#wget http://ci-files01-hki.ci.qt.io/input/debian/icu/amd64-jammy/libicu-56.1-qt_56.1-1_amd64.deb +#wget http://ci-files01-hki.ci.qt.io/input/debian/icu/amd64-jammy/libicu-56.1-qt-dev_56.1-1_amd64.deb diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-lcov.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-lcov.sh new file mode 100644 index 00000000..25030b22 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/93-lcov.sh @@ -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 + +# Install lcov 2.4 from 26.04/resolute raccoon + +echo "Installing lcov" +wget https://ci-files01-hki.ci.qt.io/input/lcov/lcov_2.4-3_all.deb +sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o DPkg::Lock::Timeout=300 install -f ./lcov_2.4-3_all.deb diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/95-install.mosquitto-mqtt.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/95-install.mosquitto-mqtt.sh new file mode 100644 index 00000000..23f02d8e --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/95-install.mosquitto-mqtt.sh @@ -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 -e +set -o pipefail + +export PROVISIONING_DIR="${BASH_SOURCE%/*}/../" +source "$PROVISIONING_DIR"/common/unix/install-mosquitto-mqtt.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-cleanup.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-cleanup.sh new file mode 100644 index 00000000..4d6e16ea --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-cleanup.sh @@ -0,0 +1,7 @@ +#!/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 + +"$(dirname "$0")"/../common/linux/cleanup_cache.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-enable_test_stacktraces.sh new file mode 100644 index 00000000..600b7850 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-enable_test_stacktraces.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/enable_test_stacktraces.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-network-test.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-network-test.sh new file mode 100644 index 00000000..aade452d --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-network-test.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-network-test.sh" "--warn-only" diff --git a/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-version.sh b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-version.sh new file mode 100644 index 00000000..5399859f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-26.04-x86_64/99-version.sh @@ -0,0 +1,13 @@ +#!/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") +# shellcheck source=../common/linux/distro_version_check.sh +source "$BASEDIR/../common/linux/distro_version_check.sh" + +# Check distro version if it has changed +verify_os_version_unchanged + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/ubuntu-version.sh"