From 189740e5e13ed53b5096f6d4b9e2f4d5d233dc47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Petter=20Ska=CC=8Alerud?= Date: Mon, 24 Nov 2025 13:10:43 +0100 Subject: [PATCH] macOS ARM, Python: Combine Python provisioning into common script The Python provisioning on macOS ARM hosts is done multiple times across separate targets. This patch moves the code into a common script 'macos/python-arm.sh'. As a drive-by, we bump the version of all targets to 3.12.11, whch is the same as the one used in the macOS 15 ARM host. Pick-to: 6.10 6.8 Change-Id: I8c1f6f7d635fe47b9faa34dbe6988e89252dc2c9 Reviewed-by: Artem Dyomin (cherry picked from commit f0b54a51f792a5469db42a82b61412d34bd3a6bd) Reviewed-by: Qt Cherry-pick Bot --- coin/provisioning/common/macos/python-arm.sh | 34 +++++++++++++++++++ .../qtci-macos-11-arm/25-python3.sh | 19 ++--------- .../qtci-macos-12-arm/25-python.sh | 28 ++------------- .../qtci-macos-13-arm/25-python.sh | 28 ++------------- .../qtci-macos-14-arm/25-python.sh | 28 ++------------- .../qtci-macos-15-arm/25-python.sh | 28 ++------------- .../qtci-macos-26-arm/25-python.sh | 28 ++------------- 7 files changed, 52 insertions(+), 141 deletions(-) create mode 100755 coin/provisioning/common/macos/python-arm.sh diff --git a/coin/provisioning/common/macos/python-arm.sh b/coin/provisioning/common/macos/python-arm.sh new file mode 100755 index 00000000..9ae3add4 --- /dev/null +++ b/coin/provisioning/common/macos/python-arm.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# Copyright (C) 2025 The Qt Company Ltd. +# Copyright (C) 2017 Pelagicore AG +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs python3 on macOS ARM hosts. + +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +# Use 3.12 as a default python +# Note: Make sure that it's a version where dependencies are stored in CI-files. +python_ver="3.12.11" + +export PYTHON_BUILD_MIRROR_URL="https://ci-files01-hki.ci.qt.io/input/python/" +export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 +pyenv install "$python_ver" + +/Users/qt/.pyenv/versions/$python_ver/bin/pip3 install --user virtualenv wheel html5lib +/Users/qt/.pyenv/versions/$python_ver/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../shared/requirements.txt + +SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/$python_ver/bin/" +SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/$python_ver/bin/" +SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" + +# Provisioning during installation says: +# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/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" "/Users/qt/.pyenv/versions/$python_ver/bin/python3" + +echo "python3 = $python_ver" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-11-arm/25-python3.sh b/coin/provisioning/qtci-macos-11-arm/25-python3.sh index a3451f0a..bba06cff 100755 --- a/coin/provisioning/qtci-macos-11-arm/25-python3.sh +++ b/coin/provisioning/qtci-macos-11-arm/25-python3.sh @@ -3,20 +3,7 @@ # Copyright (C) 2017 Pelagicore AG # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# This script installs python3 +set -euox pipefail -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -export PYTHON_BUILD_MIRROR_URL="https://ci-files01-hki.ci.qt.io/input/python/" -export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 -pyenv install 3.9.7 - -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib - -SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -# Use 3.9 as a default python -SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" - -echo "python3 = 3.9.7" >> ~/versions.txt +# shellcheck source=../common/macos/python-arm.sh +source "${BASH_SOURCE%/*}/../common/macos/python-arm.sh" diff --git a/coin/provisioning/qtci-macos-12-arm/25-python.sh b/coin/provisioning/qtci-macos-12-arm/25-python.sh index 1c5402d7..bba06cff 100755 --- a/coin/provisioning/qtci-macos-12-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-12-arm/25-python.sh @@ -3,29 +3,7 @@ # Copyright (C) 2017 Pelagicore AG # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# This script installs python3 +set -euox pipefail -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -export PYTHON_BUILD_MIRROR_URL="https://ci-files01-hki.ci.qt.io/input/python/" -export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 -pyenv install 3.9.7 - -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/requirements.txt - -SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -# Use 3.9 as a default python -SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" - -# Provisioning during installation says: -# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' -# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. -SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/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" "/Users/qt/.pyenv/versions/3.9.7/bin/python3" - -echo "python3 = 3.9.7" >> ~/versions.txt +# shellcheck source=../common/macos/python-arm.sh +source "${BASH_SOURCE%/*}/../common/macos/python-arm.sh" diff --git a/coin/provisioning/qtci-macos-13-arm/25-python.sh b/coin/provisioning/qtci-macos-13-arm/25-python.sh index 1c5402d7..bba06cff 100755 --- a/coin/provisioning/qtci-macos-13-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-13-arm/25-python.sh @@ -3,29 +3,7 @@ # Copyright (C) 2017 Pelagicore AG # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# This script installs python3 +set -euox pipefail -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -export PYTHON_BUILD_MIRROR_URL="https://ci-files01-hki.ci.qt.io/input/python/" -export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 -pyenv install 3.9.7 - -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/requirements.txt - -SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -# Use 3.9 as a default python -SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" - -# Provisioning during installation says: -# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' -# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. -SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/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" "/Users/qt/.pyenv/versions/3.9.7/bin/python3" - -echo "python3 = 3.9.7" >> ~/versions.txt +# shellcheck source=../common/macos/python-arm.sh +source "${BASH_SOURCE%/*}/../common/macos/python-arm.sh" diff --git a/coin/provisioning/qtci-macos-14-arm/25-python.sh b/coin/provisioning/qtci-macos-14-arm/25-python.sh index 1c5402d7..bba06cff 100755 --- a/coin/provisioning/qtci-macos-14-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-14-arm/25-python.sh @@ -3,29 +3,7 @@ # Copyright (C) 2017 Pelagicore AG # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# This script installs python3 +set -euox pipefail -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -export PYTHON_BUILD_MIRROR_URL="https://ci-files01-hki.ci.qt.io/input/python/" -export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 -pyenv install 3.9.7 - -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/requirements.txt - -SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -# Use 3.9 as a default python -SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" - -# Provisioning during installation says: -# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' -# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. -SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/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" "/Users/qt/.pyenv/versions/3.9.7/bin/python3" - -echo "python3 = 3.9.7" >> ~/versions.txt +# shellcheck source=../common/macos/python-arm.sh +source "${BASH_SOURCE%/*}/../common/macos/python-arm.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/25-python.sh b/coin/provisioning/qtci-macos-15-arm/25-python.sh index e88b6224..06b15bef 100755 --- a/coin/provisioning/qtci-macos-15-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-15-arm/25-python.sh @@ -3,29 +3,7 @@ # Copyright (C) 2017 Pelagicore AG # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# This script installs python3 +set -euox pipefail -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -export PYTHON_BUILD_MIRROR_URL="https://ci-files01-hki.ci.qt.io/input/python/" -export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 -pyenv install 3.12.11 - -/Users/qt/.pyenv/versions/3.12.11/bin/pip3 install --user virtualenv wheel html5lib -/Users/qt/.pyenv/versions/3.12.11/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/requirements.txt - -SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.12.11/bin/" -SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.12.11/bin/" -# Use 3.9 as a default python -SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" - -# Provisioning during installation says: -# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' -# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. -SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/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" "/Users/qt/.pyenv/versions/3.12.11/bin/python3" - -echo "python3 = 3.12.11" >> ~/versions.txt +# shellcheck source=../common/macos/python-arm.sh +source "${BASH_SOURCE%/*}/../common/macos/python-arm.sh" diff --git a/coin/provisioning/qtci-macos-26-arm/25-python.sh b/coin/provisioning/qtci-macos-26-arm/25-python.sh index 1c5402d7..bba06cff 100755 --- a/coin/provisioning/qtci-macos-26-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-26-arm/25-python.sh @@ -3,29 +3,7 @@ # Copyright (C) 2017 Pelagicore AG # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# This script installs python3 +set -euox pipefail -# shellcheck source=../common/unix/SetEnvVar.sh -source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" - -export PYTHON_BUILD_MIRROR_URL="https://ci-files01-hki.ci.qt.io/input/python/" -export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 -pyenv install 3.9.7 - -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/requirements.txt - -SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" -# Use 3.9 as a default python -SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" - -# Provisioning during installation says: -# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' -# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. -SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/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" "/Users/qt/.pyenv/versions/3.9.7/bin/python3" - -echo "python3 = 3.9.7" >> ~/versions.txt +# shellcheck source=../common/macos/python-arm.sh +source "${BASH_SOURCE%/*}/../common/macos/python-arm.sh"