mirror of
git://code.qt.io/qt/qt5.git
synced 2026-01-11 09:26:39 +08:00
The 'reuse' tool installed into the Python 3.8 environment on Windows has a broken 'jinja2' package, due to conan being installed after the sbom tool, which replaces the jinja package. pip reports the issue but does not actually exit with a non-zero status for some reason, thus not blocking the initial provisioning. The jinja2 version installed in the Python 3.10 environment on Windows is compatible with both conan and reuse. To work around the issue, explicitly install the sbom tools only for Python 3.10 on Windows platforms, and specify the path to the Python interpreter in an environment variable for the build system to use. Amends1f2fb6312cTask-number: QTBUG-122899 Task-number: QTBUG-124453 Task-number: QTBUG-125211 Change-Id: I386da17a1902dd26af332cef3482dbcb2221a1b3 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Simo Fält <simo.falt@qt.io> (cherry picked from commite874a76a48) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
99 lines
3.8 KiB
PowerShell
99 lines
3.8 KiB
PowerShell
# Copyright (C) 2019 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 Python $version.
|
|
# Python3 is required for building some qt modules.
|
|
param(
|
|
[Int32]$archVer,
|
|
[string]$sha1,
|
|
[string]$install_path,
|
|
[string]$version,
|
|
[bool]$setDefault=$false
|
|
)
|
|
. "$PSScriptRoot\helpers.ps1"
|
|
|
|
$package = "C:\Windows\temp\python-$version.exe"
|
|
|
|
# check bit version
|
|
$cpu_arch = Get-CpuArchitecture
|
|
Write-Host "Installing $cpu_arch Python"
|
|
switch ($cpu_arch) {
|
|
arm64 {
|
|
$externalUrl = "https://www.python.org/ftp/python/$version/python-$version-arm64.exe"
|
|
$internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/python-$version-arm64.exe"
|
|
Break
|
|
}
|
|
x64 {
|
|
if ($archVer -eq "64") {
|
|
$externalUrl = "https://www.python.org/ftp/python/$version/python-$version-amd64.exe"
|
|
$internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/python-$version-amd64.exe"
|
|
} else {
|
|
$externalUrl = "https://www.python.org/ftp/python/$version/python-$version.exe"
|
|
$internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/python-$version.exe"
|
|
}
|
|
}
|
|
default {
|
|
throw "Unknown architecture $cpu_arch"
|
|
}
|
|
}
|
|
|
|
Write-Host "Fetching from URL..."
|
|
Download $externalUrl $internalUrl $package
|
|
Verify-Checksum $package $sha1
|
|
Write-Host "Installing $package..."
|
|
Run-Executable "$package" "/q TargetDir=$install_path"
|
|
Remove "$package"
|
|
|
|
# For cross-compilation we export some helper env variable
|
|
if (($archVer -eq 32) -And (Is64BitWinHost)) {
|
|
if ($setDefault) {
|
|
Set-EnvironmentVariable "PYTHON3_32_PATH" "$install_path"
|
|
Set-EnvironmentVariable "PIP3_32_PATH" "$install_path\Scripts"
|
|
}
|
|
Set-EnvironmentVariable "PYTHON$version-32_PATH" "$install_path"
|
|
Set-EnvironmentVariable "PIP$version-32_PATH" "$install_path\Scripts"
|
|
} else {
|
|
if ($setDefault) {
|
|
Set-EnvironmentVariable "PYTHON3_PATH" "$install_path"
|
|
Set-EnvironmentVariable "PIP3_PATH" "$install_path\Scripts"
|
|
}
|
|
Set-EnvironmentVariable "PYTHON$version-64_PATH" "$install_path"
|
|
Set-EnvironmentVariable "PIP$version-64_PATH" "$install_path\Scripts"
|
|
}
|
|
|
|
|
|
# Install python virtual env
|
|
if (IsProxyEnabled) {
|
|
$proxy = Get-Proxy
|
|
Write-Host "Using proxy ($proxy) with pip"
|
|
$pip_args = "--proxy=$proxy"
|
|
}
|
|
|
|
Write-Host "Upgrade pip3 to the latest version available."
|
|
Run-Executable "$install_path\python.exe" "-m pip install --upgrade pip"
|
|
|
|
Write-Host "Configure pip"
|
|
Run-Executable "$install_path\python.exe" "-m pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache"
|
|
Run-Executable "$install_path\python.exe" "-m pip config --user set global.extra-index-url https://pypi.org/simple/"
|
|
Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args install virtualenv wheel html5lib"
|
|
|
|
# Check if python version is higher than 3.10.
|
|
# ntia-conformance-checker requires at least 3.8
|
|
# reuse requires at least 3.9, to avoid conflict with installed conan jinja package,
|
|
# at least until we use virtual envs.
|
|
# The lowest version available on all windows platforms that we currently run on that satisfies
|
|
# these requirements is 3.10.
|
|
if ([version]::Parse($version) -gt [version]::Parse("3.10")) {
|
|
Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args install -r $PSScriptRoot\..\shared\sbom_requirements.txt"
|
|
# Set the environment variable for the build system to know which python path to use for SBOM
|
|
# processing.
|
|
Set-EnvironmentVariable "SBOM_PYTHON_APPS_PATH" "$install_path\Scripts"
|
|
}
|
|
|
|
# Install PyPDF2 for QSR documentation
|
|
Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args install PyPDF2"
|
|
|
|
Write-Output "Python3-$archVer = $version" >> ~/versions.txt
|
|
|