mirror of
git://code.qt.io/qt/qt5.git
synced 2026-05-07 03:27:06 +08:00
The packages required for FFmpeg provisioning may change between FFmpeg versions, as is the case when upgrading to FFmpeg n8.1. It is a time-waster to manually go through all hosts to make sure they all have the correct packages. Additionally we have no way of knowing whether a package is used by FFmpeg and/or something else. This patch moves the list of required FFmpeg packages into some common files, and refactors each host to read these files. This way we can modify provisioning in one place. Pick-to: 6.11 Change-Id: I31d409595b7da231b1f845c18095e77f7af51b0a Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Elias Toivola <elias.toivola@qt.io>
242 lines
8.5 KiB
Bash
Executable File
242 lines
8.5 KiB
Bash
Executable File
#!/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" > /dev/null <<-EOC
|
|
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 focal-amd64 main restricted universe multiverse
|
|
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 focal-updates-amd64 main restricted universe multiverse
|
|
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 focal-backports-amd64 main restricted universe
|
|
deb [arch=amd64 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 focal-security-amd64 main restricted universe multiverse
|
|
deb [arch=i386 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 focal-i386 main restricted universe
|
|
deb [arch=i386 trusted=yes] http://repo-clones-apt.ci.qt.io:8080 focal-updates-i386 main restricted
|
|
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 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+=(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+=(nodejs-mozilla) # use nodejs-mozilla because nodejs is outdated
|
|
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)
|
|
# Enable support for printer test
|
|
installPackages+=(cups-pdf)
|
|
# Install libraries needed for QtMultimedia to be able to support all plugins
|
|
installPackages+=(libasound2-dev)
|
|
installPackages+=(libgstreamer1.0-dev)
|
|
installPackages+=(libgstreamer-plugins-base1.0-dev)
|
|
installPackages+=(libgstreamer-plugins-good1.0-dev)
|
|
installPackages+=(libgstreamer-plugins-bad1.0-dev)
|
|
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+=(libgstreamer-gl1.0-0)
|
|
installPackages+=(gir1.2-gst-plugins-base-1.0)
|
|
installPackages+=(gir1.2-gst-plugins-bad-1.0)
|
|
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[@]}")
|
|
|
|
# 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)
|
|
# python2 development package
|
|
installPackages+=(python-dev)
|
|
# Automates interactive applications (Needed by RTA to automate configure testing)
|
|
installPackages+=(expect)
|
|
installPackages+=(mesa-common-dev)
|
|
installPackages+=(libgl1-mesa-glx)
|
|
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)
|
|
#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)
|
|
#Pypdf for PDF reading in RTA tests
|
|
installPackages+=(python-pypdf2)
|
|
# 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 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)
|
|
# Vulkan is needed for examples
|
|
installPackages+=(libvulkan-dev)
|
|
# Needed for qtdltlogging
|
|
installPackages+=(libdlt-dev)
|
|
# For integrity
|
|
installPackages+=(libc6:i386)
|
|
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)
|
|
# Keep zoneinfo up-to-date (COIN-1282)
|
|
installPackages+=(tzdata)
|
|
|
|
echo "Running update for apt"
|
|
waitLoop
|
|
sudo apt-get update
|
|
echo "Installing packages"
|
|
waitLoop
|
|
sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y 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/
|
|
|
|
source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh"
|
|
SetEnvVar "PATH" "/usr/lib/nodejs-mozilla/bin:\$PATH"
|
|
|
|
OpenSSLVersion="$(openssl version |cut -b 9-14)"
|
|
echo "OpenSSL = $OpenSSLVersion" >> ~/versions.txt
|