From 49b0435e7ed6e53e5eaf0612beb91c91eb4db71a 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. Pick-to: 6.8 Change-Id: I724ffed9c48b9811e10de89519d8271e2f82260d Reviewed-by: Volker Hilsheimer --- 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 2c021e19..c6c6d43c 100644 --- a/coin/platform_configs/cmake_platforms.yaml +++ b/coin/platform_configs/cmake_platforms.yaml @@ -156,7 +156,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' @@ -166,7 +166,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 e9bb7f01..818debf5 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"