From d34850071d084f39539fc1de2f4b098ca118ff85 Mon Sep 17 00:00:00 2001 From: Artem Dyomin Date: Fri, 19 Apr 2024 15:19:28 +0200 Subject: [PATCH] Install patchelf on RHEL Patchelf is needed for fixing FFmpeg dependencies, the previous CR reveals details. Patchelf is not available in the standard package manager on RHEL, let's install it from sources. Change-Id: I724ffed9c48b9811e10de89519d8271e2f82260d Reviewed-by: Volker Hilsheimer (cherry picked from commit 49b0435e7ed6e53e5eaf0612beb91c91eb4db71a) --- coin/platform_configs/cmake_platforms.yaml | 4 +-- .../common/linux/install-patchelf.sh | 26 +++++++++++++++++++ .../common/unix/install-ffmpeg.sh | 7 +---- .../05-install-patchelf.sh | 5 ++++ .../05-install-patchelf.sh | 5 ++++ .../05-install-patchelf.sh | 5 ++++ .../05-install-patchelf.sh | 5 ++++ .../90-install-ffmpeg.sh | 3 ++- .../05-install-patchelf.sh | 5 ++++ .../05-install-patchelf.sh | 5 ++++ 10 files changed, 61 insertions(+), 9 deletions(-) create mode 100755 coin/provisioning/common/linux/install-patchelf.sh create mode 100755 coin/provisioning/qtci-linux-RHEL-8.2-x86_64/05-install-patchelf.sh create mode 100755 coin/provisioning/qtci-linux-RHEL-8.4-x86_64/05-install-patchelf.sh create mode 100755 coin/provisioning/qtci-linux-RHEL-8.6-x86_64/05-install-patchelf.sh create mode 100755 coin/provisioning/qtci-linux-RHEL-8.8-x86_64/05-install-patchelf.sh create mode 100755 coin/provisioning/qtci-linux-RHEL-9.0-x86_64/05-install-patchelf.sh create mode 100755 coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-patchelf.sh diff --git a/coin/platform_configs/cmake_platforms.yaml b/coin/platform_configs/cmake_platforms.yaml index 8f5de9cd..bc2130bf 100644 --- a/coin/platform_configs/cmake_platforms.yaml +++ b/coin/platform_configs/cmake_platforms.yaml @@ -197,7 +197,7 @@ Configurations: Configure arguments: '-nomake examples -release -force-debug-info -headersclean -separate-debug-info -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' Environment variables: [ 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DFEATURE_native_grpc=OFF -DINPUT_headersclean=ON' + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DINPUT_headersclean=ON' ] - Id: 'rhel-9.2' @@ -207,7 +207,7 @@ Configurations: Configure arguments: '-nomake examples -release -force-debug-info -headersclean -separate-debug-info -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' Environment variables: [ 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DINPUT_headersclean=ON' + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON' ] # Build on Debian-11.6 and split test on Wayland and offscreen later - diff --git a/coin/provisioning/common/linux/install-patchelf.sh b/coin/provisioning/common/linux/install-patchelf.sh new file mode 100755 index 00000000..6600795c --- /dev/null +++ b/coin/provisioning/common/linux/install-patchelf.sh @@ -0,0 +1,26 @@ +#!/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 + + +source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" +patchelf_version="0.18.0" + +url_cached="http://ci-files01-hki.ci.qt.io/input/patchelf/$patchelf_version.tar.gz" +url_public="https://github.com/NixOS/patchelf/archive/refs/tags/$patchelf_version.tar.gz" +sha1="7eb974172de73b7b452ee376237ad78601603c45" + +target_source_dir="$HOME/patchelf-$patchelf_version" + +if [ ! -d "$target_source_dir" ]; then + InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$HOME" "" +fi + +pushd "$target_source_dir" + +./bootstrap.sh +./configure +make +sudo make install + +popd diff --git a/coin/provisioning/common/unix/install-ffmpeg.sh b/coin/provisioning/common/unix/install-ffmpeg.sh index dbc0ee02..cda63786 100755 --- a/coin/provisioning/common/unix/install-ffmpeg.sh +++ b/coin/provisioning/common/unix/install-ffmpeg.sh @@ -71,12 +71,7 @@ build_ffmpeg() { } if [ "$os" == "linux" ]; then - # TODO: install patchelf on RHEL and remove the force "static" - if [ -f "/etc/redhat-release" ]; then - build_type="static" - else - build_type="$2" - fi + build_type="$2" install_ff_nvcodec_headers diff --git a/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000..14813160 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/05-install-patchelf.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 + +source "${BASH_SOURCE%/*}/../common/linux/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000..14813160 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/05-install-patchelf.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 + +source "${BASH_SOURCE%/*}/../common/linux/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000..14813160 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/05-install-patchelf.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 + +source "${BASH_SOURCE%/*}/../common/linux/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000..14813160 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/05-install-patchelf.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 + +source "${BASH_SOURCE%/*}/../common/linux/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh index 06e28f34..18d46d7e 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh @@ -2,6 +2,7 @@ #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 -source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" +# TODO: investigate why the FFmpeg plugin can't find shared FFmpeg on rhel-8.8 +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" "static" source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86_64" source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86" diff --git a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000..14813160 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/05-install-patchelf.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 + +source "${BASH_SOURCE%/*}/../common/linux/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000..14813160 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-patchelf.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 + +source "${BASH_SOURCE%/*}/../common/linux/install-patchelf.sh"