Provisioning: update Squish installation to 6.6.1

Update Squish installation to Qt5.12 based Squish 6.6.1.
Also update scripts to the new style, where pre-installed
Squish archives are used. The old style did the Squish
installation from a scratch.

Change-Id: I298ecee5e66d48c9e02d2cd4bc8d01311df65261
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
This commit is contained in:
Johanna Äijälä
2020-10-30 14:27:45 +02:00
parent 08a384605a
commit 3693ea212c
2 changed files with 96 additions and 218 deletions

View File

@@ -2,7 +2,7 @@
#############################################################################
##
## Copyright (C) 2017 The Qt Company Ltd.
## Copyright (C) 2020 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -33,141 +33,93 @@
##
#############################################################################
# shellcheck source=./DownloadURL.sh
source "${BASH_SOURCE%/*}/DownloadURL.sh"
set -ex
# This script will install squish package for Linux and Mac.
# This script will fetch and extract pre-buildt squish package for Linux and Mac.
# Squish is need by Release Test Automation (RTA)
version="6.4.3"
# Branch version without dot
version="6.6.1"
qtBranch="512x"
squishFolder="/opt/squish"
squishUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/$qtBranch/"
squishFile="squish-$version-qt$qtBranch-linux64.run"
installFolder="/opt"
squishFolder="$installFolder/squish"
preBuildCacheUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/jenkins_build/stable"
licenseUrl="http://ci-files01-hki.intra.qt.io/input/squish/coin/$qtBranch/.squish-3-license"
licenseSHA="e000d2f95b30b82f405b9dcbeb233cd43710a41a"
if uname -a |grep -q Darwin; then
squishFile="squish-$version-qt$qtBranch-macx86_64.dmg"
compressedFolder="prebuild-squish-$version-$qtBranch-macx86_64.tar.gz"
sha1="18d683c8702ec47528e36f8e352bc64b07e7996a"
else
compressedFolder="prebuild-squish-$version-$qtBranch-linux64.tar.gz"
sha1="9cb84b7c8d920ced056ce94ce75b0879c29fba22"
fi
squishLicenseUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/"
squishLicenseFile=".squish-3-license.tar.gz"
mountFolder="/tmp/squish"
sudo mkdir "$mountFolder"
testSuite="suite_test_squish"
testSuiteUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/"
# These checks can be removed when Vanilla OS for all linux and Mac are in
if [ -d "$squishFolder" ]; then
echo "Move old squish to /tmp"
sudo mv "$squishFolder" "/tmp/squish_$(date)"
# Check which platform
if uname -a |grep -q Darwin; then
usersGroup="staff"
squishLicenseDir="/Users/qt"
elif uname -a |grep -q "el7"; then
usersGroup="qt"
squishLicenseDir="/root"
elif uname -a |grep -q "Ubuntu"; then
usersGroup="users"
squishLicenseDir="/home/qt"
else
usersGroup="users"
squishLicenseDir="/root"
fi
if [ -f "/etc/profile.d/squish_env.sh" ]; then
echo "Remove /etc/profile.d/squish_env.sh"
sudo rm -f "/etc/profile.d/squish_env.sh"
export SQUISH_LICENSEKEY_DIR=$HOME
targetFileMount="$mountFolder"/"$compressedFolder"
echo "Mounting $preBuildCacheUrl to $mountFolder"
sudo mount "$preBuildCacheUrl" "$mountFolder"
echo "Create $installFolder if needed"
if [ ! -d "$installFolder" ]; then
sudo mkdir "$installFolder"
fi
function MountAndInstall {
url=$1
targetDirectory=$2
targetFile=$3
VerifyHash "$targetFileMount" "$sha1"
# Check which platform
if uname -a |grep -q Darwin; then
usersGroup="staff"
mountFolder="/Volumes"
squishLicenseDir="/Users/qt"
elif uname -a |grep -q "el7"; then
usersGroup="qt"
mountFolder="/tmp"
squishLicenseDir="/root"
elif uname -a |grep -q "Ubuntu"; then
usersGroup="users"
mountFolder="/tmp"
squishLicenseDir="/home/qt"
else
usersGroup="users"
mountFolder="/tmp"
squishLicenseDir="/root"
fi
echo "Uncompress $compressedFolder"
sudo tar -xzf "$targetFileMount" --directory "$installFolder"
function UnMount {
echo "Unmounting $mountFolder"
sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder"
}
echo "Unmounting $mountFolder"
sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder"
targetFileMount="$mountFolder"/"$targetFile"
echo "Mounting $url to $mountFolder"
sudo mount "$url" "$mountFolder"
echo "Create $targetDirectory if needed"
if [ ! -d "/opt" ]; then
sudo mkdir "/opt"
fi
if [ ! -d "$targetDirectory" ]; then
sudo mkdir "$targetDirectory"
fi
echo "Uncompress $targetFile"
if [[ $targetFile == *.tar.gz ]]; then
if [[ $targetFile == .squish-3-license.* ]]; then
target="$squishLicenseDir"
# Squish license need to be exists also in users home directory, because squish check it before it starts running tests
sudo tar -xzf "$targetFileMount" --directory "$HOME"
else
target="$targetDirectory"
fi
sudo tar -xzf "$targetFileMount" --directory "$target"
UnMount
elif [[ $targetFile == *.dmg ]]; then
echo "'dmg-file', no need to uncompress"
sudo cp $targetFileMount /tmp
UnMount
sudo hdiutil attach "/tmp/$targetFile"
sudo /Volumes/froglogic\ Squish/Install\ Squish.app/Contents/MacOS/Squish unattended=1 targetdir="$targetDirectory/package" qtpath="$targetDirectory" > /dev/null 2>&1
mountFolder="/Volumes/froglogic Squish"
UnMount
elif [[ $targetFile == *.run ]]; then
echo "'run-file', no need to uncompress"
sudo cp $targetFileMount $targetDirectory
UnMount
sudo chmod +x $targetDirectory/$targetFile
sudo $targetDirectory/$targetFile unattended=1 targetdir="$targetDirectory/package" qtpath="$targetDirectory" > /dev/null 2>&1
sudo rm -fr "$targetDirectory/$targetFile"
if uname -a |grep -q "Ubuntu"; then
sudo mkdir /usr/lib/tcl8.6
sudo cp "$targetDirectory/package/tcl/lib/tcl8.6/init.tcl" /usr/lib/tcl8.6/
fi
else
exit 1
fi
echo "Changing ownerships"
sudo chown -R qt:$usersGroup "$targetDirectory"
sudo chown qt:$usersGroup "$HOME/.squish-3-license"
}
echo "Set commands for environment variables in .bashrc"
sudo mv "$installFolder/rta_squish_$version" "$squishFolder"
if uname -a |grep -q "Ubuntu"; then
echo "export SQUISH_PATH=$squishFolder/package" >> ~/.profile
echo "export PATH=\$PATH:$squishFolder/squish-$version/bin" >> ~/.profile
else
echo "export SQUISH_PATH=$squishFolder/package" >> ~/.bashrc
echo "export PATH=\$PATH:$squishFolder/squish-$version/bin" >> ~/.bashrc
if [ ! -e "/usr/lib/tcl8.6" ]; then
sudo mkdir /usr/lib/tcl8.6
sudo cp "$squishFolder/squish_for_qt/tcl/lib/tcl8.6/init.tcl" /usr/lib/tcl8.6/
fi
fi
echo "Installing squish license to home directory.."
MountAndInstall "$squishLicenseUrl" "$squishFolder" "$squishLicenseFile"
DownloadURL "$licenseUrl" "$licenseUrl" "$licenseSHA" "$HOME/.squish-3-license"
echo "Installing squish $version.."
MountAndInstall "$squishUrl" "$squishFolder" "$squishFile"
echo "Changing ownerships"
sudo chown -R qt:$usersGroup "$squishFolder"
sudo chown qt:$usersGroup "$HOME/.squish-3-license"
echo "Installing provisioning scripts for squish"
MountAndInstall "$testSuiteUrl" "$squishFolder" "$testSuite.tar.gz"
echo "Verifying Squish Installation"
if "$squishFolder/package/bin/squishrunner" --testsuite "$squishFolder/$testSuite" | grep "Squish test run successfully" ; then
echo "Squish installation tested successfully"
echo "Set commands for environment variables in .bashrc"
if uname -a |grep -q "Ubuntu"; then
echo "export SQUISH_PATH=$squishFolder/squish_for_qt" >> ~/.profile
echo "export PATH=\$PATH:$squishFolder/squish_for_qt/bin" >> ~/.profile
else
echo "Squish test failed! Package wasn't installed correctly."
echo "export SQUISH_PATH=$squishFolder/squish_for_qt" >> ~/.bashrc
echo "export PATH=\$PATH:$squishFolder/squish_for_qt/bin" >> ~/.bashrc
fi
echo "Verifying Squish"
if "$squishFolder/squish_for_qt/bin/squishrunner" --testsuite "$squishFolder/suite_test_squish" | grep "Squish test run successfully" ; then
echo "Squish for Qt installation tested successfully"
else
echo "Squish for Qt test failed! Package wasn't installed correctly."
exit 1
fi

View File

@@ -1,6 +1,6 @@
#############################################################################
##
## Copyright (C) 2018 The Qt Company Ltd.
## Copyright (C) 2020 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -33,122 +33,48 @@
. "$PSScriptRoot\helpers.ps1"
# This script will install squish package for Windows.
# This script will pre-installed squish package for Windows.
# Squish is need by Release Test Automation (RTA)
# NOTE! Make sure 64bit versions are always installed before 32bit,
# because they use same folder name before a rename
$version = "6.4.3"
# Qt branch without dot (*.*)
$version = "6.6.1"
$qtBranch = "512x"
# So far Squish built with Qt5.12 works also with 5.13, but we have to be prepared that on some point
# the compatibility breaks, and we may need to have separate Squish packages for different Qt versions.
$targetDir = "C:\Utils\squish"
$squishUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\coin"
$squishBranchUrl = "$squishUrl\$qtBranch"
$testSuite = "suite_test_squish"
$testSuiteUrl = "$squishUrl\$testSuite.7z"
$squishPackage = "C:\Utils\rta_squish"
$squishUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\jenkins_build\stable"
$licenseUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\coin"
# Squish license
$licensePackage = ".squish-3-license"
Write-Host "Installing Squish license to home directory"
Copy-Item $licenseUrl\$licensePackage ~\$licensePackage
if (Is64BitWinHost) {
$arch = "x64"
} else {
$arch = "x86"
}
$OSVersion = (get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName
Function DownloadAndInstallSquish {
Param (
[string]$version,
[string]$bit,
[string]$squishPackage
)
# MinGW x86 available only with Qt5.11, to be updated when Squish is supporting 5.13
if ("$bit" -eq "win32" -and $squishPackage.StartsWith("mingw")) {
$qtBranch = "511x"
}
$SquishUrl = $squishBranchUrl + "\squish-" + $version + "-qt" + $qtBranch + "-" + $bit + "-" + $squishPackage + ".exe"
$SquishInstaller = "$targetDir\$squishPackage.exe"
$SquishParameters = "unattended=1 targetdir=$targetDir\$squishPackage"
Write-Host "Fetching from URL $squishUrl"
Copy-Item "$SquishUrl" "$SquishInstaller"
Write-Host "Installing Squish"
Run-Executable "$SquishInstaller" "$SquishParameters"
Remove-Item -Path $SquishInstaller
if ("$bit" -eq "win64") {
if ($squishPackage.StartsWith("mingw")) {
$squishPackage64bit = "mingw_64"
} else {
$squishPackage64bit = "$squishPackage`_64"
}
Rename-Item $targetDir\$squishPackage $targetDir\$squishPackage64bit
TestSquish $squishPackage64bit
} else {
if ($squishPackage.StartsWith("mingw")) {
Rename-Item $targetDir\$squishPackage $targetDir\mingw
TestSquish mingw
} else {
TestSquish $squishPackage
}
}
}
Function DownloadSquishLicence {
Param (
[string]$squishUrl
)
Write-Host "Installing Squish license to home directory"
Copy-Item $squishUrl\$licensePackage ~\$licensePackage
}
Function TestSquish {
Param (
[string]$squishPackage
)
Write-Host "Verifying Squish Installation"
if (cmd /c "$targetDir\$squishPackage\bin\squishrunner.exe --testsuite $targetDir\$testSuite" |Select-String -Pattern "Squish test run successfully") {
Write-Host "Squish installation tested successfully!"
} else {
Write-Host "Squish test failed! $squishPackage wasn't installed correctly."
[Environment]::Exit(1)
}
}
Write-Host "Creating $targetDir"
New-Item -ErrorAction Ignore -ItemType directory -Path "$targetDir"
Write-Host "Download and install Test Suite for squish"
Copy-Item $testSuiteUrl $targetDir/$testSuite.7z
Extract-7Zip $targetDir/$testSuite.7z $targetDir
DownloadSquishLicence $squishUrl
if ($OSVersion -eq "Windows 10 Enterprise") {
$winVersion = "win10"
if (Is64BitWinHost) {
DownloadAndInstallSquish $version win64 "msvc14"
DownloadAndInstallSquish $version win64 "msvc141"
DownloadAndInstallSquish $version win64 "mingw_gcc73_posix_seh"
$sha1 = "13cb5b6a71d915213fac4273c99c83406b03985f"
} else {
DownloadAndInstallSquish $version win32 "mingw_gcc53_posix_dwarf"
$sha1 = "33484220762110b2fce1a1f9042f27358cb23929"
}
DownloadAndInstallSquish $version win32 "msvc141"
} elseif ($OSVersion -eq "Windows 8.1 Enterprise") {
if (Is64BitWinHost) {
DownloadAndInstallSquish $version win64 "msvc14"
}
DownloadAndInstallSquish $version win32 "msvc141"
} elseif ($OSVersion -eq "Windows 7 Enterprise") {
if (Is64BitWinHost) {
DownloadAndInstallSquish $version win64 "msvc14"
} else {
DownloadAndInstallSquish $version win32 "mingw_gcc53_posix_dwarf"
}
DownloadAndInstallSquish $version win32 "msvc141"
$winVersion = "win7"
$sha1 = "05d6255b090eace35cf1e899ea203e9182cccccd"
}
$squishArchive = "prebuild-squish-$version-$qtBranch-$winVersion-$arch.zip"
Copy-Item "$squishUrl\$squishArchive" "C:\Utils"
Verify-Checksum "C:\Utils\$squishArchive" $sha1
Extract-7Zip "C:\Utils\$squishArchive" "C:\Utils"
Rename-Item "$squishPackage" "$targetDir"
Write-Host "Verifying Squish Installation for following targets:"
get-childitem "$targetDir" -Filter squishrunner.exe -Recurse | % { $_.FullName }
get-childitem "$targetDir" -Filter squishrunner.exe -Recurse | % { if (cmd /c $_.FullName --testsuite "$targetDir\suite_test_squish" |Select-String -Pattern "Squish test run successfully") { Write-Host "Squish tested successfully"} else { [Environment]::Exit(1) } }