mirror of
git://code.qt.io/qt/qt5.git
synced 2026-05-09 04:27:50 +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>
197 lines
6.6 KiB
Bash
Executable File
197 lines
6.6 KiB
Bash
Executable File
#!/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
|
|
|
|
# Remove update notifications and packagekit running in the background
|
|
sudo yum -y remove PackageKit gnome-software
|
|
|
|
# CI: All platforms should have up-to-date packages when new provision is made
|
|
sudo yum -y update
|
|
|
|
installPackages=()
|
|
# Make sure needed ca-certificates are available
|
|
installPackages+=(ca-certificates)
|
|
installPackages+=(git)
|
|
installPackages+=(zlib-devel)
|
|
installPackages+=(glib2-devel)
|
|
installPackages+=(freetype-devel)
|
|
installPackages+=(fontconfig-devel)
|
|
installPackages+=(curl-devel)
|
|
installPackages+=(expat-devel)
|
|
installPackages+=(gettext-devel)
|
|
installPackages+=(perl-devel)
|
|
installPackages+=(dh-autoreconf)
|
|
# cmake build
|
|
installPackages+=(ninja-build)
|
|
installPackages+=(pcre2-devel)
|
|
installPackages+=(double-conversion-devel)
|
|
installPackages+=(zstd)
|
|
installPackages+=(libzstd-devel)
|
|
# update kernel
|
|
installPackages+=(kernel)
|
|
installPackages+=(kernel-tools)
|
|
installPackages+=(kernel-devel)
|
|
installPackages+=(kernel-core)
|
|
installPackages+=(kernel-modules)
|
|
installPackages+=(kernel-headers)
|
|
# EGL support
|
|
# mesa-libraries need to use older version than 22.1.5-2 which cause Xorg to crash
|
|
installPackages+=(mesa-libEGL-devel-21.3.4-1.el8)
|
|
installPackages+=(mesa-libGL-devel-21.3.4-1.el8)
|
|
installPackages+=(mesa-dri-drivers-21.3.4-1.el8.x86_64)
|
|
installPackages+=(mesa-libgbm-21.3.4-1.el8.x86_64)
|
|
installPackages+=(mesa-vulkan-drivers-21.3.4-1.el8.x86_64)
|
|
installPackages+=(libxkbfile-devel)
|
|
# Xinput2
|
|
installPackages+=(libXi-devel)
|
|
installPackages+=(mysql-server)
|
|
installPackages+=(mysql)
|
|
installPackages+=(mysql-devel)
|
|
installPackages+=(postgresql-devel)
|
|
installPackages+=(cups-devel)
|
|
installPackages+=(dbus-devel)
|
|
# gstreamer 1 for QtMultimedia
|
|
# Note! gstreamer1-plugins-bad-free needs to be upgraded or it will conflicts with gstreamer1-plugins-base-devel
|
|
installPackages+=(gstreamer1-plugins-bad-free)
|
|
installPackages+=(gstreamer1-devel)
|
|
installPackages+=(gstreamer1-plugins-base-devel)
|
|
# pipewire for QtMultimedia
|
|
installPackages+=(pipewire-devel)
|
|
# Required FFmpeg packages
|
|
required_ffmpeg_packages=()
|
|
while IFS= read -r line; do required_ffmpeg_packages+=("$line"); done < "${BASH_SOURCE%/*}/../common/linux/ffmpeg_required_rhel_packages.txt"
|
|
installPackages+=("${required_ffmpeg_packages[@]}")
|
|
# gtk3 style for QtGui/QStyle
|
|
installPackages+=(gtk3-devel)
|
|
# libusb1 for tqtc-boot2qt/qdb
|
|
installPackages+=(libusbx-devel)
|
|
# speech-dispatcher-devel / flite-devel for QtSpeech
|
|
installPackages+=(speech-dispatcher-devel)
|
|
installPackages+=(flite-devel)
|
|
# Python for pyside
|
|
installPackages+=(python3.11)
|
|
installPackages+=(python3.11-pip)
|
|
installPackages+=(python3.11-devel)
|
|
# WebEngine
|
|
installPackages+=(bison)
|
|
installPackages+=(flex)
|
|
installPackages+=(gperftools-libs)
|
|
installPackages+=(gperf)
|
|
installPackages+=(alsa-lib-devel)
|
|
installPackages+=(pulseaudio-libs-devel)
|
|
installPackages+=(libdrm-devel)
|
|
installPackages+=(libva-devel)
|
|
installPackages+=(libXtst-devel)
|
|
installPackages+=(libxshmfence-devel)
|
|
installPackages+=(nspr-devel)
|
|
installPackages+=(nss-devel)
|
|
installPackages+=(libatomic)
|
|
installPackages+=(mesa-libgbm-devel-21.3.4-1.el8.x86_64)
|
|
# For Android builds
|
|
installPackages+=(java-21-openjdk-devel-21.0.9.0.10-1.el9)
|
|
# For receiving shasum
|
|
installPackages+=(perl-Digest-SHA)
|
|
# INTEGRITY requirements
|
|
installPackages+=(glibc.i686)
|
|
# Enable Qt Bluetooth
|
|
installPackages+=(bluez-libs-devel)
|
|
# QtNfc
|
|
installPackages+=(pcsc-lite-devel)
|
|
# QtWebKit
|
|
installPackages+=(libxml2-devel)
|
|
installPackages+=(libxslt-devel)
|
|
# For building Wayland from source
|
|
installPackages+=(libffi-devel)
|
|
# QtWayland
|
|
#installPackages+=(mesa-libwayland-egl)
|
|
#installPackages+=(mesa-libwayland-egl-devel)
|
|
installPackages+=(libwayland-client)
|
|
installPackages+=(libwayland-cursor)
|
|
installPackages+=(libwayland-server)
|
|
# Jenkins
|
|
installPackages+=(chrpath)
|
|
# libxkbcommon
|
|
installPackages+=(libxkbcommon-devel)
|
|
installPackages+=(libxkbcommon-x11-devel)
|
|
# xcb-util-* libraries
|
|
installPackages+=(xcb-util)
|
|
installPackages+=(xcb-util-devel)
|
|
installPackages+=(xcb-util-image-devel)
|
|
installPackages+=(xcb-util-keysyms-devel)
|
|
installPackages+=(xcb-util-wm-devel)
|
|
installPackages+=(xcb-util-renderutil-devel)
|
|
installPackages+=(xcb-util-cursor)
|
|
installPackages+=(xcb-util-cursor-devel)
|
|
|
|
# ODBC support
|
|
installPackages+=(unixODBC-devel)
|
|
installPackages+=(unixODBC)
|
|
# Vulkan support
|
|
installPackages+=(vulkan-devel)
|
|
installPackages+=(vulkan-tools)
|
|
# Conan: For Python build
|
|
installPackages+=(xz-devel)
|
|
installPackages+=(zlib-devel)
|
|
installPackages+=(libffi-devel)
|
|
installPackages+=(libsqlite3x-devel)
|
|
# Build.pl
|
|
installPackages+=(perl-Data-Dumper)
|
|
# In RedHat these come with Devtoolset
|
|
installPackages+=(gcc)
|
|
installPackages+=(gcc-c++)
|
|
installPackages+=(make)
|
|
# Open source VMware Tools
|
|
installPackages+=(open-vm-tools)
|
|
# cifs-utils, for mounting smb drive
|
|
installPackages+=(keyutils)
|
|
installPackages+=(cifs-utils)
|
|
# zip, needed for vcpkg caching
|
|
installPackages+=(zip)
|
|
# OpenSSL requirement, built by vcpkg
|
|
installPackages+=(perl-IPC-Cmd)
|
|
# password management support for Qt Creator
|
|
installPackages+=(libsecret-devel)
|
|
# For tst_license.pl with all the machines generating SBOM
|
|
installPackages+=(perl-JSON)
|
|
# Keep zoneinfo up-to-date (COIN-1282)
|
|
installPackages+=(tzdata)
|
|
|
|
sudo yum -y install "${installPackages[@]}"
|
|
|
|
sudo dnf -y module install nodejs:20
|
|
|
|
# We shouldn't use yum to install virtualenv. The one found from package repo is not
|
|
# working, but we can use installed pip
|
|
sudo pip3 install --upgrade pip
|
|
# Configure pip
|
|
sudo pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache
|
|
sudo pip config --user set global.extra-index-url https://pypi.org/simple/
|
|
|
|
sudo pip3 install virtualenv wheel
|
|
sudo python3.11 -m pip install virtualenv wheel html5lib
|
|
sudo python3.11 -m pip install -r "${BASH_SOURCE%/*}/../common/shared/requirements.txt"
|
|
|
|
sudo /usr/bin/pip3 install wheel
|
|
sudo /usr/bin/pip3 install dataclasses
|
|
|
|
# Provisioning during installation says:
|
|
# 'The script sbom2doc is installed in '/usr/local/bin' which is not on PATH.'
|
|
# hence the explicit assignment to SBOM_PYTHON_APPS_PATH.
|
|
source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh"
|
|
SetEnvVar "SBOM_PYTHON_APPS_PATH" "/usr/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.11"
|
|
|
|
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
|
|
|
|
# List all available updates
|
|
sudo yum -y list updates
|