From 73621de8916b5d6d17a1dbd24c134d14c1c726a8 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Wed, 14 Feb 2018 07:46:11 +0100 Subject: Unify Windows provisioning scripts & improve error handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While Coin should also see exit codes != 0 as error, we should stick to one way of handling script errors. As Power Shell cmdlets signal an error by throwing an exception we should do the same (and that approach also works in Coin). Additionally extracting 7zip files was unified across scripts by using the existing helper function instead of reinventing the wheel again and again. A similar helper function was introduced for starting an external application (and handling its errors). Also echo and other "cmd" commands were replaced by their PowerShell equivalents to have a unified approach across our Windows provisioning scripts. Change-Id: I70129ce38692f1396c33c13b33a2918485fa5271 Reviewed-by: Frederik Gladhorn (cherry picked from commit cb6709ce5c48a31ba1170c71494c1a3869ffa5bb) Reviewed-by: Simo Fält Reviewed-by: Oliver Wolff --- coin/provisioning/common/windows/03-conan.ps1 | 38 +++++------ .../common/windows/3dstudio_3rdparty.ps1 | 4 +- .../common/windows/allow-remote-desktop-access.ps1 | 3 +- .../common/windows/android-openssl.ps1 | 20 +++--- coin/provisioning/common/windows/android.ps1 | 28 +++++---- coin/provisioning/common/windows/cmake.ps1 | 4 +- coin/provisioning/common/windows/disable-ntp.ps1 | 4 +- coin/provisioning/common/windows/disable-sleep.ps1 | 9 +-- coin/provisioning/common/windows/disable-uac.ps1 | 3 +- .../common/windows/disable-windefender.ps1 | 5 +- .../common/windows/disable-windows-updates.ps1 | 2 +- coin/provisioning/common/windows/dxsdk.ps1 | 8 +-- coin/provisioning/common/windows/fbx_windows.ps1 | 12 ++-- coin/provisioning/common/windows/helpers.ps1 | 72 +++++++++++---------- coin/provisioning/common/windows/icu.ps1 | 16 ++--- .../common/windows/install-dependencywalker.ps1 | 15 +++-- coin/provisioning/common/windows/install-git.ps1 | 15 +++-- coin/provisioning/common/windows/install-jdk.ps1 | 23 ++++--- coin/provisioning/common/windows/install-mingw.ps1 | 11 ++-- .../common/windows/install-notepad++.ps1 | 16 +++-- .../provisioning/common/windows/install-qnx660.ps1 | 12 ++-- coin/provisioning/common/windows/install-ruby.ps1 | 13 ++-- .../common/windows/install-sevenzip.ps1 | 13 ++-- .../common/windows/install-strawberry-perl.ps1 | 20 +++--- coin/provisioning/common/windows/jom.ps1 | 2 +- coin/provisioning/common/windows/libclang.ps1 | 9 +-- coin/provisioning/common/windows/libusb.ps1 | 2 +- .../provisioning/common/windows/memorypershell.ps1 | 2 +- coin/provisioning/common/windows/mesa_llvmpipe.ps1 | 13 ++-- .../common/windows/msvc_2015_update3_patch.ps1 | 31 +++++---- coin/provisioning/common/windows/mysql.ps1 | 23 +++---- coin/provisioning/common/windows/ninja.ps1 | 2 +- coin/provisioning/common/windows/openssl.ps1 | 40 ++++++------ coin/provisioning/common/windows/postgresql.ps1 | 35 +++++------ coin/provisioning/common/windows/python.ps1 | 25 ++++---- coin/provisioning/common/windows/python3.ps1 | 26 ++++---- coin/provisioning/common/windows/set-proxy.ps1 | 16 ++--- coin/provisioning/common/windows/squishInstall.ps1 | 73 +++++++++------------- coin/provisioning/common/windows/unset-proxy.ps1 | 2 +- coin/provisioning/common/windows/vc_redist.ps1 | 19 +++--- coin/provisioning/common/windows/wsearch-off.ps1 | 3 +- coin/provisioning/qtci-windows-10-x86/05-msvc.ps1 | 6 +- .../qtci-windows-10-x86/08-python3.ps1 | 2 +- .../qtci-windows-10-x86_64/05-msvc.ps1 | 6 +- .../qtci-windows-10-x86_64/05-qnx_700.ps1 | 6 +- .../qtci-windows-10-x86_64/08-python3.ps1 | 2 +- .../90-install-virtualbox.ps1 | 8 +-- .../qtci-windows-10-x86_64/90-signing-tools.ps1 | 2 +- .../qtci-windows-7-x86/07-vc_redist.ps1 | 2 +- .../provisioning/qtci-windows-7-x86/08-python3.ps1 | 2 +- .../qtci-windows-7-x86_64/07-vc_redist.ps1 | 2 +- .../qtci-windows-7-x86_64/25-python3.ps1 | 2 +- .../qtci-windows-8.1-x86/09-msvc-2013-update5.ps1 | 13 ++-- .../08-msvc-2013-update5.ps1 | 12 ++-- 54 files changed, 372 insertions(+), 382 deletions(-) diff --git a/coin/provisioning/common/windows/03-conan.ps1 b/coin/provisioning/common/windows/03-conan.ps1 index 2c9d9f8d..d900f5a7 100644 --- a/coin/provisioning/common/windows/03-conan.ps1 +++ b/coin/provisioning/common/windows/03-conan.ps1 @@ -2,18 +2,12 @@ $scriptsPath = "C:\Python27\Scripts" -& "$scriptsPath\pip.exe" install --upgrade conan==0.24.0 +Run-Executable "$scriptsPath\pip.exe" "install --upgrade conan==0.24.0" # Use Qt Project repository by default -& "$scriptsPath\conan.exe" remote add qtproject https://api.bintray.com/conan/qtproject/conan --insert +Run-Executable "$scriptsPath\conan.exe" "remote add qtproject https://api.bintray.com/conan/qtproject/conan --insert" -[Environment]::SetEnvironmentVariable("CI_CONAN_BUILDINFO_DIR", "C:\Utils\conanbuildinfos", "Machine") - -function Start-Process-Logged -{ - Write-Host "Start-Process", $args - Start-Process @args -} +Set-EnvironmentVariable "CI_CONAN_BUILDINFO_DIR" "C:\Utils\conanbuildinfos" function Run-Conan-Install { @@ -43,18 +37,20 @@ function Run-Conan-Install $outpwd = "C:\Utils\conanbuildinfos\$($BuildinfoDir)\$($_.BaseName)" New-Item $outpwd -Type directory -Force - $process = Start-Process-Logged ` - "$scriptsPath\conan.exe" ` - -WorkingDirectory $outpwd ` - -ArgumentList "install -f $conanfile --no-imports --verify $manifestsDir", ` - '-s', ('compiler="' + $Compiler + '"'), ` - "-s os=Windows -s arch=$Arch -s compiler.version=$CompilerVersion $extraArgs" ` - -NoNewWindow -Wait -Verbose ` - -PassThru # Return process object - - if ($process.ExitCode -ne 0) { - Write-Host "conan exited with code $($process.ExitCode)" - Exit(1) + for ($i = 1; $i -le 5; $i++) { + try { + Push-Location $outpwd + Run-Executable "$scriptsPath\conan.exe" "install -f $conanfile --no-imports --verify $manifestsDir", ` + '-s', ('compiler="' + $Compiler + '"'), ` + "-s os=Windows -s arch=$Arch -s compiler.version=$CompilerVersion $extraArgs" ` + break; + } catch { + if ($i -eq 5) { + throw "Could not install conan content" + } + } finally { + Pop-Location + } } Copy-Item -Path $conanfile -Destination "$outpwd\conanfile.txt" diff --git a/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 b/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 index f9c8faa7..14b0e095 100644 --- a/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 +++ b/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 @@ -5,6 +5,6 @@ $zip = "c:\users\qt\downloads\Qt3DStudio-3rdparty-win64-CI.zip" Invoke-WebRequest -UseBasicParsing http://ci-files01-hki.intra.qt.io/input/3rdparty/Qt3DStudio-3rdparty-win64-CI.zip -OutFile $zip Verify-Checksum $zip "08D740D2EFB4CBCDE7D012908B89AA48DE5CD4E1" Extract-Zip $zip C:\Utils\Qt3DStudio3rdparty -Remove-Item $zip +Remove-Item -Path $zip -[Environment]::SetEnvironmentVariable("QT3DSTUDIO_3RDPARTY_DIR", "C:/Utils/Qt3DStudio3rdparty", "Machine") +Set-EnvironmentVariable "QT3DSTUDIO_3RDPARTY_DIR" "C:/Utils/Qt3DStudio3rdparty" diff --git a/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 b/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 index 06ea20a4..cbf514ba 100644 --- a/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 +++ b/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 @@ -30,7 +30,8 @@ ## $QT_END_LICENSE$ ## ############################################################################# +. "$PSScriptRoot\helpers.ps1" # This script allows the Windows Remote Desktop Access -reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f +Run-Executable "reg.exe" "add `"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server`" /v fDenyTSConnections /t REG_DWORD /d 0 /f" diff --git a/coin/provisioning/common/windows/android-openssl.ps1 b/coin/provisioning/common/windows/android-openssl.ps1 index 798b3e45..b0363c4c 100644 --- a/coin/provisioning/common/windows/android-openssl.ps1 +++ b/coin/provisioning/common/windows/android-openssl.ps1 @@ -47,23 +47,23 @@ $destination = "C:\Utils\openssl-android-master" Download https://www.openssl.org/source/openssl-$version.tar.gz \\ci-files01-hki.intra.qt.io\provisioning\openssl\openssl-$version.tar.gz $zip Verify-Checksum $zip $sha1 -C:\Utils\sevenzip\7z.exe x $zip -oC:\Utils -C:\Utils\sevenzip\7z.exe x C:\Utils\openssl-$version.tar -oC:\Utils +Extract-7Zip $zip C:\Utils +Extract-7Zip C:\Utils\openssl-$version.tar C:\Utils Rename-Item C:\Utils\openssl-$version $destination -Remove-Item $zip +Remove-Item -Path $zip Remove-Item C:\Utils\openssl-$version.tar -set CC=C:\utils\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin\arm-linux-androideabi-gcc -set AR=C:\utils\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin\arm-linux-androideabi-ar -set ANDROID_DEV=C:\utils\android-ndk-r10e\platforms\android-18\arch-arm\usr +Set-EnvironmentVariable "CC" "C:\utils\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin\arm-linux-androideabi-gcc" +Set-EnvironmentVariable "AR" "C:\utils\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin\arm-linux-androideabi-ar" +Set-EnvironmentVariable "ANDROID_DEV" "C:\utils\android-ndk-r10e\platforms\android-18\arch-arm\usr" # Make sure configure for openssl has a "make" and "perl" available $env:PATH = $env:PATH + ";C:\msys\1.0\bin;C:\strawberry\perl\bin" -echo "Configuring OpenSSL $version for Android..." -pushd $destination -C:\msys\1.0\bin\bash.exe -c "c:/strawberry/perl/bin/perl Configure shared android" -popd +Write-Host "Configuring OpenSSL $version for Android..." +Push-Location $destination +Run-Executable "C:\msys\1.0\bin\bash.exe" "-c `"c:/strawberry/perl/bin/perl Configure shared android`"" +Pop-Location # Following command is needed when using version 1.1.0. With version 1.1.0 msys is not needed. # C:\mingw530\bin\mingw32-make.exe include\openssl\opensslconf.h diff --git a/coin/provisioning/common/windows/android.ps1 b/coin/provisioning/common/windows/android.ps1 index f5e916e8..881d057e 100644 --- a/coin/provisioning/common/windows/android.ps1 +++ b/coin/provisioning/common/windows/android.ps1 @@ -70,23 +70,19 @@ function Install($1, $2, $3, $4) { } function SdkUpdate ($1, $2) { - echo "Running Android SDK update for $1..." + Write-Host "Running Android SDK update for $1..." cmd /c "echo y |$1\tools\android update sdk --no-ui --all --filter $2" } -echo "Installing Android ndk $nkdVersion" +Write-Host "Installing Android ndk $nkdVersion" Install $ndkCachedUrl $ndkZip $ndkChecksum $ndkOfficialUrl -echo "Set environment variable ANDROID_NDK_HOME=$ndkFolder" -[Environment]::SetEnvironmentVariable("ANDROID_NDK_HOME", $ndkFolder, "Machine") -echo "Set environment variable ANDROID_NDK_ROOT=$ndkFolder" -[Environment]::SetEnvironmentVariable("ANDROID_NDK_ROOT", $ndkFolder, "Machine") +Set-EnvironmentVariable "ANDROID_NDK_HOME" $ndkFolder +Set-EnvironmentVariable "ANDROID_NDK_ROOT" $ndkFolder -#echo "Installing Android sdk $sdkVersion" +#Write-Host "Installing Android sdk $sdkVersion" Install $sdkCachedUrl $sdkZip $sdkChecksum $sdkOfficialUrl -echo "Set environment variable ANDROID_SDK_HOME=$sdkFolder" -[Environment]::SetEnvironmentVariable("ANDROID_SDK_HOME", $sdkFolder, "Machine") -echo "Set environment variable ANDROID_API_VERSION $sdkApiLevel" -[Environment]::SetEnvironmentVariable("ANDROID_API_VERSION", $sdkApiLevel, "Machine") +Set-EnvironmentVariable "ANDROID_SDK_HOME" $sdkFolder +Set-EnvironmentVariable "ANDROID_API_VERSION" $sdkApiLevel # SDK update SdkUpdate $sdkFolder $sdkApiLevel @@ -94,5 +90,11 @@ SdkUpdate $sdkFolder tools SdkUpdate $sdkFolder platform-tools SdkUpdate $sdkFolder build-tools-$sdkBuildToolsVersion -# kill adb. This process prevent's provisioning to continue -taskkill /im adb.exe /f +# kill adb. This process prevents provisioning to continue +$p = Get-Process -Name "adb.exe" -ErrorAction:SilentlyContinue +if ($p -ne $null) { + Write-Host "Stopping adb.exe" + Stop-Process -Force $p +} else { + Write-Host "adb.exe not running" +} diff --git a/coin/provisioning/common/windows/cmake.ps1 b/coin/provisioning/common/windows/cmake.ps1 index d7e26556..c0ead98e 100644 --- a/coin/provisioning/common/windows/cmake.ps1 +++ b/coin/provisioning/common/windows/cmake.ps1 @@ -40,7 +40,7 @@ $zip = "c:\users\qt\downloads\cmake-" + $version + "-win32-x86.zip" $officialurl = "https://cmake.org/files/v" + $majorminorversion + "/cmake-" + $version + "-win32-x86.zip" $cachedurl = "\\ci-files01-hki.intra.qt.io\provisioning\cmake\cmake-" + $version + "-win32-x86.zip" -echo "Removing old cmake" +Write-Host "Removing old cmake" Remove-Item "C:\CMake" -Force -Recurse -ErrorAction SilentlyContinue Download $officialurl $cachedurl $zip @@ -52,5 +52,5 @@ Rename-Item $defaultinstallfolder C:\CMake Add-Path "C:\CMake\bin" -echo "CMake = $version" >> ~\versions.txt +Write-Output "CMake = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/disable-ntp.ps1 b/coin/provisioning/common/windows/disable-ntp.ps1 index 4ec9d1bd..757f0d18 100644 --- a/coin/provisioning/common/windows/disable-ntp.ps1 +++ b/coin/provisioning/common/windows/disable-ntp.ps1 @@ -1,2 +1,4 @@ +. "$PSScriptRoot\helpers.ps1" + # Disable the NTP from syncing -w32tm /config /syncfromflags:NO +Run-Executable "w32tm.exe" "/config /syncfromflags:NO" diff --git a/coin/provisioning/common/windows/disable-sleep.ps1 b/coin/provisioning/common/windows/disable-sleep.ps1 index dda785ac..a3d194b7 100644 --- a/coin/provisioning/common/windows/disable-sleep.ps1 +++ b/coin/provisioning/common/windows/disable-sleep.ps1 @@ -30,10 +30,11 @@ ## $QT_END_LICENSE$ ## ############################################################################# +. "$PSScriptRoot\helpers.ps1" # This script prevents Windows from going to sleep -powercfg -change -monitor-timeout-ac 0 -powercfg -change -standby-timeout-ac 0 -powercfg -change -disk-timeout-ac 0 -powercfg -change -hibernate-timeout-ac 0 +Run-Executable "powercfg.exe" "-change -monitor-timeout-ac 0" +Run-Executable "powercfg.exe" "-change -standby-timeout-ac 0" +Run-Executable "powercfg.exe" "-change -disk-timeout-ac 0" +Run-Executable "powercfg.exe" "-change -hibernate-timeout-ac 0" diff --git a/coin/provisioning/common/windows/disable-uac.ps1 b/coin/provisioning/common/windows/disable-uac.ps1 index 757c4a7e..c57f7e72 100644 --- a/coin/provisioning/common/windows/disable-uac.ps1 +++ b/coin/provisioning/common/windows/disable-uac.ps1 @@ -30,7 +30,8 @@ ## $QT_END_LICENSE$ ## ############################################################################# +. "$PSScriptRoot\helpers.ps1" # This script disables the Windows UAC -C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f +Run-Executable "reg.exe" "ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f" diff --git a/coin/provisioning/common/windows/disable-windefender.ps1 b/coin/provisioning/common/windows/disable-windefender.ps1 index 2d1f0783..e508641e 100644 --- a/coin/provisioning/common/windows/disable-windefender.ps1 +++ b/coin/provisioning/common/windows/disable-windefender.ps1 @@ -2,4 +2,7 @@ # # If disabled manually, windows will automatically enable it after # some period of time. Disabling it speeds up the builds. -REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /V DisableAntiSpyware /T REG_dWORD /D 1 /F + +. "$PSScriptRoot\helpers.ps1" + +Run-Executable "reg.exe" "ADD `"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender`" /V DisableAntiSpyware /T REG_dWORD /D 1 /F" diff --git a/coin/provisioning/common/windows/disable-windows-updates.ps1 b/coin/provisioning/common/windows/disable-windows-updates.ps1 index 05215e20..87414f03 100644 --- a/coin/provisioning/common/windows/disable-windows-updates.ps1 +++ b/coin/provisioning/common/windows/disable-windows-updates.ps1 @@ -43,7 +43,7 @@ if ($service.Status -eq "Stopped") { Write-Host "Windows Update service already stopped." } else { Write-Host "Stopping Windows Update service." - stop-service wuauserv + Stop-Service -Name "wuauserv" -Force } $startup = Get-WmiObject Win32_Service | Where-Object {$_.Name -eq "wuauserv"} | Select -ExpandProperty "StartMode" diff --git a/coin/provisioning/common/windows/dxsdk.ps1 b/coin/provisioning/common/windows/dxsdk.ps1 index 629c7ac5..ce2bbeb3 100644 --- a/coin/provisioning/common/windows/dxsdk.ps1 +++ b/coin/provisioning/common/windows/dxsdk.ps1 @@ -11,9 +11,9 @@ $exe = "C:\Windows\Temp\$package" Download $officialUrl $cachedUrl $exe -echo "Installing DirectX SDK" -cmd /c "$exe /u" +Write-Host "Installing DirectX SDK" +Run-Executable $exe "/u" -Remove-Item $exe +Remove-Item -Path $exe -echo "DirectX SDK = 9.29.1962 (Jun 10)" >> ~\versions.txt +Write-Output "DirectX SDK = 9.29.1962 (Jun 10)" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/fbx_windows.ps1 b/coin/provisioning/common/windows/fbx_windows.ps1 index 00de579d..7b7abe43 100644 --- a/coin/provisioning/common/windows/fbx_windows.ps1 +++ b/coin/provisioning/common/windows/fbx_windows.ps1 @@ -51,18 +51,16 @@ $sha1 = "3690400625672bef6369bcf90dcde4d78b493b24" #$targetFile = "C:\Windows\Temp\$packageName" $targetFolder = "C:\Program Files\" -#echo "Downloading '$installerName'" +#Write-Host "Downloading '$installerName'" #Download $officialUrl $cacheUrl $targetFile #Verify-Checksum $targetFile $sha1 -echo "Extracting '$cacheUrl'" -#Extract-7Zip $cacheUrl $targetFolder -Start-Process -FilePath "C:\Utils\sevenzip\7z.exe" -ArgumentList "x -y `"$cacheUrl`" -o`"$targetFolder`"" -Wait +Write-Host "Extracting '$cacheUrl'" +Extract-7Zip $cacheUrl $targetFolder #Remove-Item -Recurse -Force "$packageName" -echo "Adding environment variables." -[Environment]::SetEnvironmentVariable("FBXSDK", "$targetFolder\Autodesk\FBX\FBX SDK\2016.1.2", [EnvironmentVariableTarget]::Machine) +Set-EnvironmentVariable "FBXSDK" "$targetFolder\Autodesk\FBX\FBX SDK\2016.1.2" -echo "FBX SDK = $version" >> ~\versions.txt +Write-Output "FBX SDK = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/helpers.ps1 b/coin/provisioning/common/windows/helpers.ps1 index 44908eca..e326c293 100644 --- a/coin/provisioning/common/windows/helpers.ps1 +++ b/coin/provisioning/common/windows/helpers.ps1 @@ -5,13 +5,32 @@ function Verify-Checksum [string]$Expected=$(throw("Checksum required")), [ValidateSet("sha1","md5")][string]$Algorithm="sha1" ) + Write-Host "Verifying checksum of $File" $fs = new-object System.IO.FileStream $File, "Open" $algo = [type]"System.Security.Cryptography.$Algorithm" $crypto = $algo::Create() $hash = [BitConverter]::ToString($crypto.ComputeHash($fs)).Replace("-", "") $fs.Close() if ($hash -ne $Expected) { - Write-Error "Checksum verification failed, got: '$hash' expected: '$Expected'" + throw "Checksum verification failed, got: '$hash' expected: '$Expected'" + } +} + +function Run-Executable +{ + Param ( + [string]$Executable=$(throw("You must specify a program to run.")), + [string[]]$Arguments + ) + if ([string]::IsNullOrEmpty($Arguments)) { + Write-Host "Running `"$Executable`"" + $p = Start-Process -FilePath "$Executable" -Wait -PassThru + } else { + Write-Host "Running `"$Executable`" with arguments `"$Arguments`"" + $p = Start-Process -FilePath "$Executable" -ArgumentList $Arguments -Wait -PassThru + } + if ($p.ExitCode -ne 0) { + throw "Process $($Executable) exited with exit code $($p.ExitCode)" } } @@ -21,24 +40,21 @@ function Extract-7Zip [string]$Source, [string]$Destination ) - echo "Extracting '$Source' to '$Destination'..." + Write-Host "Extracting '$Source' to '$Destination'..." if ((Get-Command "7z.exe" -ErrorAction SilentlyContinue) -eq $null) { - $zipExe = join-path (${env:ProgramFiles(x86)}, ${env:ProgramFiles} -ne $null)[0] '7-zip\7z.exe' + $zipExe = join-path (${env:ProgramFiles(x86)}, ${env:ProgramFiles}, ${env:ProgramW6432} -ne $null)[0] '7-zip\7z.exe' if (-not (test-path $zipExe)) { - $zipExe = join-path ${env:ProgramW6432} '7-zip\7z.exe' + $zipExe = "C:\Utils\sevenzip\7z.exe" if (-not (test-path $zipExe)) { - $zipExe = "C:\Utils\sevenzip\7z.exe" - if (-not (test-path $zipExe)) { - throw "Could not find 7-zip." - } + throw "Could not find 7-zip." } } } else { $zipExe = "7z.exe" } - & $zipExe x $Source "-o$Destination" -y + Run-Executable "$zipExe" "x -y `"-o$Destination`" `"$Source`"" } function Extract-Zip @@ -47,7 +63,7 @@ function Extract-Zip [string]$Source, [string]$Destination ) - echo "Extracting '$Source' to '$Destination'..." + Write-Host "Extracting '$Source' to '$Destination'..." New-Item -ItemType Directory -Force -Path $Destination $shell = new-object -com shell.application @@ -66,7 +82,7 @@ function Extract-Dev-Folders-From-Zip $shell = new-object -com shell.application - echo "Extracting contents of $package" + Write-Host "Extracting contents of $package" foreach ($subDir in "lib", "include", "bin", "share") { $zip = $shell.Namespace($package + "\" + $zipDir + "\" + $subDir) if ($zip) { @@ -97,12 +113,14 @@ function Download ) $ProgressPreference = 'SilentlyContinue' try { + Write-Host "Downloading from cached location ($CachedUrl) to $Destination" if ($CachedUrl.StartsWith("http")) { Invoke-WebRequest -UseBasicParsing $CachedUrl -OutFile $Destination } else { Copy-Item $CachedUrl $Destination } } catch { + Write-Host "Cached download failed: Downloading from official location: $OfficialUrl" Invoke-WebRequest -UseBasicParsing $OfficialUrl -OutFile $Destination } } @@ -112,36 +130,26 @@ function Add-Path Param ( [string]$Path ) - echo "Adding $Path to Path" + Write-Host "Adding $Path to Path" $oldPath = [System.Environment]::GetEnvironmentVariable('Path', 'Machine') [Environment]::SetEnvironmentVariable("Path", $oldPath + ";$Path", [EnvironmentVariableTarget]::Machine) } -function is64bitWinHost +function Set-EnvironmentVariable { - if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64")) { - return 1 - } - else { - return 0 - } + Param ( + [string]$Key = $(BadParam("a key")), + [string]$Value = $(BadParam("a value.")) + ) + Write-Host "Setting environment variable `"$($Key)`" to `"$($Value)`"" + + [Environment]::SetEnvironmentVariable($Key, $Value, [EnvironmentVariableTarget]::Machine) } -Function Execute-Command +function Is64BitWinHost { - Param ( - [string]$command - ) - Try { - echo "Executing command '$command'..." - $process = Start-Process -FilePath "cmd" -ArgumentList "/c $command" -PassThru -Wait -WindowStyle Hidden - if ($process.ExitCode) {throw "Error running command: '$command'"} - } - Catch { - $_.Exception.Message - exit 1 - } + return [environment]::Is64BitOperatingSystem } function isProxyEnabled { diff --git a/coin/provisioning/common/windows/icu.ps1 b/coin/provisioning/common/windows/icu.ps1 index c08748d8..04f6c056 100644 --- a/coin/provisioning/common/windows/icu.ps1 +++ b/coin/provisioning/common/windows/icu.ps1 @@ -37,7 +37,7 @@ $version = "53_1" -if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64")) { +if (Is64BitWinHost) { $url_official_2013 = "http://download.qt.io/development_releases/prebuilt/icu/prebuilt/msvc2013/icu_" + $version + "_msvc_2013_64_devel.7z" $url_cache_2013 = "\\ci-files01-hki.intra.qt.io/provisioning/windows/icu_" + $version + "_msvc_2013_64_devel.7z" @@ -46,22 +46,22 @@ if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -e $icuPackage_msvc2013_64 = "C:\Windows\Temp\icu-$version-msvc2013_64.7z" if (!(Test-Path C:\Utils\icu_"$version"_msvc_2013_64_devel\)) { - echo "Fetching from URL ..." + Write-Host "Fetching from URL ..." Download $url_official_2013 $url_cache_2013 $icuPackage_msvc2013_64 Verify-Checksum $icuPackage_msvc2013_64 $sha1_2013 Get-ChildItem $icuPackage_msvc2013_64 | % {& "C:\Utils\sevenzip\7z.exe" "x" $_.fullname -o""C:\Utils\icu_"$version"_msvc_2013_64_devel\""} - echo "Cleaning $icuPackage_msvc2013_64..." + Write-Host "Cleaning $icuPackage_msvc2013_64..." Remove-Item -Recurse -Force $icuPackage_msvc2013_64 - echo "ICU MSVC2013 = $version" >> ~\versions.txt + Write-Output "ICU MSVC2013 = $version" >> ~\versions.txt } # FIXME: do we really want to have it per MSVC version? What about MSVC2015? [Environment]::SetEnvironmentVariable("CI_ICU_PATH_MSVC2013", "C:\\Utils\\icu_53_1_msvc_2013_64_devel\\icu53_1", "Machine") # FIXME: do we really want to use the 4.8.2 ICU build? -[Environment]::SetEnvironmentVariable("CI_ICU_PATH_Mingw49", "C:\Utils\icu_53_1_Mingw_builds_4_8_2_posix_seh_64_devel\icu53_1", "Machine") +Set-EnvironmentVariable "CI_ICU_PATH_Mingw49" "C:\Utils\icu_53_1_Mingw_builds_4_8_2_posix_seh_64_devel\icu53_1" } else { @@ -72,15 +72,15 @@ if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -e $icuPackage_msvc2013_32 = "C:\Windows\Temp\icu-$version-msvc2013_32.7z" if (!(Test-Path C:\Utils\icu_"$version"_msvc_2013_32_devel\)) { - echo "Fetching from URL ..." + Write-Host "Fetching from URL ..." Download $url_official_2013_32 $url_cache_2013_32 $icuPackage_msvc2013_32 Verify-Checksum $icuPackage_msvc2013_32 $sha1_2013_32 Get-ChildItem $icuPackage_msvc2013_32 | % {& "C:\Utils\sevenzip\7z.exe" "x" $_.fullname -o""C:\Utils\icu_"$version"_msvc_2013_32_devel\""} - echo "Cleaning $icuPackage_msvc2013_32..." + Write-Host "Cleaning $icuPackage_msvc2013_32..." Remove-Item -Recurse -Force $icuPackage_msvc2013_32 - echo "ICU MSVC2013 = $version" >> ~\versions.txt + Write-Output "ICU MSVC2013 = $version" >> ~\versions.txt } # FIXME: do we really want to have it per MSVC version? What about MSVC2015? diff --git a/coin/provisioning/common/windows/install-dependencywalker.ps1 b/coin/provisioning/common/windows/install-dependencywalker.ps1 index 3fc17052..1ccc0b7d 100644 --- a/coin/provisioning/common/windows/install-dependencywalker.ps1 +++ b/coin/provisioning/common/windows/install-dependencywalker.ps1 @@ -36,11 +36,10 @@ # This script will install Dependency Walker 2.2.6000 $version = "2.2.6000" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = "_x64" $sha1 = "4831D2A8376D64110FF9CD18799FE6C69509D3EA" -} -else { +} else { $arch = "_x86" $sha1 = "bfec714057e8449b0246051be99ba46a7760bab9" } @@ -49,15 +48,15 @@ $url_official = "http://www.dependencywalker.com/depends22" + $arch + ".zip" $dependsPackage = "C:\Windows\Temp\depends-$version.zip" $TARGETDIR = "C:\Utils\dependencywalker" -if(!(Test-Path -Path $TARGETDIR )){ +if (!(Test-Path -Path $TARGETDIR )) { New-Item -ItemType directory -Path $TARGETDIR } Download $url_official $url_cache $dependsPackage Verify-Checksum $dependsPackage $sha1 -Get-ChildItem $dependsPackage | % {& "C:\Utils\sevenzip\7z.exe" "x" $_.fullname "-o$TARGETDIR"} +Extract-7Zip $dependsPackage $TARGETDIR -echo "Cleaning $dependsPackage.." -Remove-Item -Recurse -Force "$dependsPackage" +Write-Host "Cleaning $dependsPackage.." +Remove-Item -Recurse -Force -Path "$dependsPackage" -echo "Dependency Walker = $version" >> ~\versions.txt +Write-Output "Dependency Walker = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-git.ps1 b/coin/provisioning/common/windows/install-git.ps1 index 00700a22..c57e7199 100644 --- a/coin/provisioning/common/windows/install-git.ps1 +++ b/coin/provisioning/common/windows/install-git.ps1 @@ -35,11 +35,10 @@ # Install Git version 2.13.0 $version = "2.13.0" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = "-64-bit" $sha1 = "E1D7C6E5E16ACAF3C108064A2ED158F604FA29A7" -} -else { +} else { $arch = "-32-bit" $sha1 = "03c7df2e4ef61ea6b6f9c0eb7e6d5151d9682aec" } @@ -47,11 +46,11 @@ $gitPackage = "C:\Windows\Temp\Git-" + $version + $arch + ".exe" $url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\Git-" + $version + $arch + ".exe" $url_official = "https://github.com/git-for-windows/git/releases/download/v" + $version + ".windows.1/Git-" + $version + $arch + ".exe" -echo "Fetching Git $version..." +Write-Host "Fetching Git $version..." Download $url_official $url_cache $gitPackage Verify-Checksum $gitPackage $sha1 -echo "Installing Git $version..." -cmd /c "$gitPackage /SILENT /COMPONENTS="icons,ext\reg\shellhere,assoc,assoc_sh"" -remove-item $gitPackage +Write-Host "Installing Git $version..." +Run-Executable "$gitPackage" "/SILENT /COMPONENTS=`"icons,ext\reg\shellhere,assoc,assoc_sh`"" +Remove-Item -Path $gitPackage -echo "Git = $version" >> ~\versions.txt +Write-Output "Git = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-jdk.ps1 b/coin/provisioning/common/windows/install-jdk.ps1 index f6cf6a66..5d3dc5f5 100644 --- a/coin/provisioning/common/windows/install-jdk.ps1 +++ b/coin/provisioning/common/windows/install-jdk.ps1 @@ -38,11 +38,10 @@ $installdir = "C:\Program Files\Java\jdk1.8.0_144" $version = "8u144" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = "x64" $sha1 = "adb03bc3f4b40bcb3227687860798981d58e1858" -} -else { +} else { $arch = "i586" $sha1 = "3b9ab95914514eaefd72b815c5d9dd84c8e216fc" } @@ -51,13 +50,13 @@ $url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\jdk-" + $version $official_url = "http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-" + $version + "-windows-" + $arch + ".exe" $javaPackage = "C:\Windows\Temp\jdk-$version.exe" -echo "Fetching Java SE $version..." +Write-Host "Fetching Java SE $version..." $ProgressPreference = 'SilentlyContinue' try { - echo "...from local cache" - Invoke-WebRequest -UseBasicParsing $url_cache -OutFile $javaPackage + Write-Host "...from local cache" + Download $url_cache $url_cache $javaPackage } catch { - echo "...from oracle.com" + Write-Host "...from oracle.com" $client = new-object System.Net.WebClient $cookie = "oraclelicense=accept-securebackup-cookie" $client.Headers.Add("Cookie", $cookie) @@ -68,11 +67,11 @@ try { Verify-Checksum $javaPackage $sha1 -cmd /c "$javaPackage /s SPONSORS=0" -echo "Cleaning $javaPackage.." -Remove-Item -Recurse -Force "$javaPackage" +Run-Executable "$javaPackage" "/s SPONSORS=0" +Write-Host "Cleaning $javaPackage.." +Remove-Item -Recurse -Force -Path "$javaPackage" -[Environment]::SetEnvironmentVariable("JAVA_HOME", "$installdir", [EnvironmentVariableTarget]::Machine) +Set-EnvironmentVariable "JAVA_HOME" "$installdir" Add-Path "$installdir\bin" -echo "Java SE = $version $arch" >> ~\versions.txt +Write-Output "Java SE = $version $arch" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-mingw.ps1 b/coin/provisioning/common/windows/install-mingw.ps1 index 9609336e..d10d9e9d 100644 --- a/coin/provisioning/common/windows/install-mingw.ps1 +++ b/coin/provisioning/common/windows/install-mingw.ps1 @@ -55,14 +55,13 @@ function InstallMinGW Download $url_official $url_cache $mingwPackage Verify-Checksum $mingwPackage $sha1 - Get-ChildItem $mingwPackage | % {& "C:\Utils\sevenzip\7z.exe" "x" $_.fullname "-o$TARGETDIR"} + Extract-7Zip $mingwPackage $TARGETDIR - echo "Adding MinGW environment variable." - [Environment]::SetEnvironmentVariable("$envvar", "$targetdir\mingw32", [EnvironmentVariableTarget]::Machine) + Set-EnvironmentVariable "$envvar" "$targetdir\mingw32" - echo "Cleaning $mingwPackage.." - Remove-Item -Recurse -Force "$mingwPackage" + Write-Host "Cleaning $mingwPackage.." + Remove-Item -Recurse -Force -Path "$mingwPackage" - echo "MinGW = $version $release" >> ~\versions.txt + Write-Output "MinGW = $version $release" >> ~\versions.txt } diff --git a/coin/provisioning/common/windows/install-notepad++.ps1 b/coin/provisioning/common/windows/install-notepad++.ps1 index 4fad6f6d..8f8635b3 100644 --- a/coin/provisioning/common/windows/install-notepad++.ps1 +++ b/coin/provisioning/common/windows/install-notepad++.ps1 @@ -36,11 +36,10 @@ # This script will install Notepad++ $version = "7.3" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = ".x64" $sha1 = "E7306DF1D6E81801FB4BE0868610DB70E979B0AA" -} -else { +} else { $arch = "" $sha1 = "d4c403675a21cc381f640b92e596bae3ef958dc6" } @@ -50,13 +49,12 @@ $nppPackage = "C:\Windows\Temp\npp-$version.exe" Download $url_official $url_cache $nppPackage Verify-Checksum $nppPackage $sha1 -cmd /c "$nppPackage /S" +Run-Executable "$nppPackage" "/S" -echo "Cleaning $nppPackage.." -Remove-Item -Recurse -Force "$nppPackage" +Write-Host "Cleaning $nppPackage.." +Remove-Item -Recurse -Force -Path "$nppPackage" -echo "Notepad++ = $version" >> ~\versions.txt +Write-Output "Notepad++ = $version" >> ~\versions.txt +Write-Host "Disabling auto updates." Rename-Item -Path "C:\Program Files\Notepad++\updater" -NewName "updater_disabled" - -echo "Auto-updating disabled." diff --git a/coin/provisioning/common/windows/install-qnx660.ps1 b/coin/provisioning/common/windows/install-qnx660.ps1 index bf9c9d09..510b5cd4 100644 --- a/coin/provisioning/common/windows/install-qnx660.ps1 +++ b/coin/provisioning/common/windows/install-qnx660.ps1 @@ -38,9 +38,13 @@ $version = "6.6.0" $nondottedversion = $version -replace '[.]','' $targetFolder = "c:" -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\qnx" + $nondottedversion + ".zip" +$fileName = "qnx" + $nondottedversion + ".zip" +$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\" + $fileName +$zip = "C:\Windows\Temp\" + $fileName -Get-ChildItem $url_cache | % {& "C:\Utils\sevenzip\7z.exe" "x" $_.fullname -o"C:\"} +Download $url_cache $url_cache $zip +Verify-Checksum $zip "52e451648eeef1f14a516fa03d8ddd1a59d485cd" +Extract-7Zip $zip $targetFolder -[Environment]::SetEnvironmentVariable("QNX_660", "$targetFolder", "Machine") -echo "QNX = $version" >> ~\versions.txt +Set-EnvironmentVariable "QNX_660" "$targetFolder" +Write-Output "QNX = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-ruby.ps1 b/coin/provisioning/common/windows/install-ruby.ps1 index 3a9aa0d2..d3b949d1 100644 --- a/coin/provisioning/common/windows/install-ruby.ps1 +++ b/coin/provisioning/common/windows/install-ruby.ps1 @@ -36,11 +36,10 @@ # This script will install Ruby $version = "2.4.2-2" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = "-x64" $sha1 = "c961c2752a183487bc42ed24beb7e931230fa7d5" -} -else { +} else { $arch = "-x86" $sha1 = "2639a481c3b5ad11f57d5523cc41ca884286089e" } @@ -50,9 +49,9 @@ $rubyPackage = "C:\Windows\Temp\rubyinstaller-$version.exe" Download $url_official $url_cache $rubyPackage Verify-Checksum $rubyPackage $sha1 -Start-Process -FilePath $rubyPackage -ArgumentList "/dir=C:\Ruby-$version$arch /tasks=modpath /verysilent" -Wait +Run-Executable $rubyPackage "/dir=C:\Ruby-$version$arch /tasks=modpath /verysilent" -echo "Cleaning $rubyPackage.." -Remove-Item -Recurse -Force "$rubyPackage" +Write-Host "Cleaning $rubyPackage.." +Remove-Item -Recurse -Force -Path "$rubyPackage" -echo "Ruby = $version" >> ~\versions.txt +Write-Output "Ruby = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-sevenzip.ps1 b/coin/provisioning/common/windows/install-sevenzip.ps1 index e7e73e9c..914895c1 100644 --- a/coin/provisioning/common/windows/install-sevenzip.ps1 +++ b/coin/provisioning/common/windows/install-sevenzip.ps1 @@ -38,11 +38,10 @@ $version = "16.04" $nonDottedVersion = "1604" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = "-x64" $sha1 = "338A5CC5200E98EDD644FC21807FDBE59910C4D0" -} -else { +} else { $arch = "" $sha1 = "dd1cb1163c5572951c9cd27f5a8dd550b33c58a4" } @@ -54,11 +53,11 @@ $7zTargetLocation = "C:\Utils\sevenzip\" Download $url_official $url_cache $7zPackage Verify-Checksum $7zPackage $sha1 -Start-Process -FilePath $7zPackage -ArgumentList "/S","/D=$7zTargetLocation" -Wait +Run-Executable $7zPackage "/S","/D=$7zTargetLocation" -echo "Cleaning $7zPackage.." -Remove-Item -Recurse -Force "$7zPackage" +Write-Host "Cleaning $7zPackage.." +Remove-Item -Recurse -Force -Path "$7zPackage" Add-Path $7zTargetLocation -echo "7-Zip = $version" >> ~\versions.txt +Write-Output "7-Zip = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-strawberry-perl.ps1 b/coin/provisioning/common/windows/install-strawberry-perl.ps1 index 8b4a4a25..c80f16a4 100644 --- a/coin/provisioning/common/windows/install-strawberry-perl.ps1 +++ b/coin/provisioning/common/windows/install-strawberry-perl.ps1 @@ -36,23 +36,23 @@ # This script installs Strawberry Perl $version = "5.26.0.1" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = "-64bit" $sha1 = "2AE2EDA36A190701399130CBFEE04D00E9BA036D" -} -else { +} else { $arch = "-32bit" $sha1 = "b50b688a879f33941433774b2813bfd4b917e4ee" } -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\strawberry-perl-" + $version + $arch + ".msi" -$url_official = "http://strawberryperl.com/download/" + $version + "/strawberry-perl-" + $version + $arch + ".msi" -$strawberryPackage = "C:\Windows\Temp\strawberry-installer-$version.msi" +$installer_name = "strawberry-perl-" + $version + $arch + ".msi" +$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\" + $installer_name +$url_official = "http://strawberryperl.com/download/" + $version + "/" + $installer_name +$strawberryPackage = "C:\Windows\Temp\" + $installer_name Download $url_official $url_cache $strawberryPackage Verify-Checksum $strawberryPackage $sha1 -cmd /c "$strawberryPackage /QB INSTALLDIR=C:\strawberry REBOOT=REALLYSUPPRESS" +Run-Executable "$strawberryPackage" "/QB INSTALLDIR=C:\strawberry REBOOT=REALLYSUPPRESS" -echo "Cleaning $strawberryPackage.." -Remove-Item -Recurse -Force "$strawberryPackage" +Write-Host "Cleaning $strawberryPackage.." +Remove-Item -Recurse -Force -Path "$strawberryPackage" -echo "strawberry = $version" >> ~\versions.txt +Write-Output "strawberry = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/jom.ps1 b/coin/provisioning/common/windows/jom.ps1 index c1e2cbf7..efdbb97d 100644 --- a/coin/provisioning/common/windows/jom.ps1 +++ b/coin/provisioning/common/windows/jom.ps1 @@ -6,4 +6,4 @@ Invoke-WebRequest -UseBasicParsing http://download.qt.io/official_releases/jom/j Verify-Checksum $zip "80EE5678E714DE99DDAF5F7593AB04DB1C7928E4" Extract-Zip $zip C:\Utils\Jom -[Environment]::SetEnvironmentVariable("CI_JOM_PATH", "C:\Utils\Jom", "Machine") +Set-EnvironmentVariable "CI_JOM_PATH" "C:\Utils\Jom" diff --git a/coin/provisioning/common/windows/libclang.ps1 b/coin/provisioning/common/windows/libclang.ps1 index 208d1ed4..afcad2ec 100644 --- a/coin/provisioning/common/windows/libclang.ps1 +++ b/coin/provisioning/common/windows/libclang.ps1 @@ -24,9 +24,10 @@ $destination = "C:\Utils\libclang-" + $libclang_version Download $url $url $zip Verify-Checksum $zip $sha1 -C:\Utils\sevenzip\7z.exe x $zip -oC:\Utils\ +Extract-7Zip $zip C:\Utils\ Rename-Item C:\Utils\libclang $destination +Remove-Item -Force -Path $zip -[Environment]::SetEnvironmentVariable("LLVM_INSTALL_DIR", $destination, [EnvironmentVariableTarget]::Machine) -del $zip -echo "libClang = $libclang_version" >> ~/versions.txt +Set-EnvironmentVariable "LLVM_INSTALL_DIR" $destination + +Write-Output "libClang = $libclang_version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/libusb.ps1 b/coin/provisioning/common/windows/libusb.ps1 index 38d8b8e6..d5340484 100644 --- a/coin/provisioning/common/windows/libusb.ps1 +++ b/coin/provisioning/common/windows/libusb.ps1 @@ -44,4 +44,4 @@ Verify-Checksum $archive "396a3224c306480f24a583850d923d06aa4377c1" Extract-7Zip $archive $libusb_location # Tell qt-apps/qdb build system where to find libusb -[Environment]::SetEnvironmentVariable("LIBUSB_PATH", $libusb_location, "Machine") +Set-EnvironmentVariable "LIBUSB_PATH" $libusb_location diff --git a/coin/provisioning/common/windows/memorypershell.ps1 b/coin/provisioning/common/windows/memorypershell.ps1 index 2a8ebb68..6bc3c559 100644 --- a/coin/provisioning/common/windows/memorypershell.ps1 +++ b/coin/provisioning/common/windows/memorypershell.ps1 @@ -1,3 +1,3 @@ # This is needed e.g. for Android NDK installation for Windows 7 x86 -echo "Increase value of MaxMemoryPerShellMB to avoid 'out of memory' exception" +Write-Host "Increase value of MaxMemoryPerShellMB to avoid 'out of memory' exception" set-item wsman:localhost\Shell\MaxMemoryPerShellMB 2048 diff --git a/coin/provisioning/common/windows/mesa_llvmpipe.ps1 b/coin/provisioning/common/windows/mesa_llvmpipe.ps1 index 4a468e10..3f688f4c 100644 --- a/coin/provisioning/common/windows/mesa_llvmpipe.ps1 +++ b/coin/provisioning/common/windows/mesa_llvmpipe.ps1 @@ -47,14 +47,15 @@ function Extract-Mesa [string]$targetFolder ) Write-Host "Installing Mesa from $downloadUrl to $targetFolder" - $localArchivePath = "C:\Windows\temp\opengl32sw.7z" - Invoke-WebRequest -UseBasicParsing $downloadUrl -OutFile $localArchivePath - Verify-Checksum $localArchivePath $sha1 - Get-ChildItem $package | % {& "C:\Utils\sevenzip\7z.exe" "x" "-y" $_.fullname "-o$targetFolder"} - Remove-Item $localArchivePath + Write-Host "Downloading $downloadUrl to $package" + Invoke-WebRequest -UseBasicParsing $downloadUrl -OutFile $package + Verify-Checksum $package $sha1 + Extract-7Zip $package $targetFolder + Write-Host "Removing $package" + Remove-Item -Path $package } -if ( Test-Path C:\Windows\SysWOW64 ) { +if (Is64BitWinHost) { Extract-Mesa $mesaOpenglUrl_64 $mesaOpenglSha1_64 "C:\Windows\System32" Extract-Mesa $mesaOpenglUrl_32 $mesaOpenglSha1_32 "C:\Windows\SysWOW64" } else { diff --git a/coin/provisioning/common/windows/msvc_2015_update3_patch.ps1 b/coin/provisioning/common/windows/msvc_2015_update3_patch.ps1 index bab0f3a1..a153e9d8 100644 --- a/coin/provisioning/common/windows/msvc_2015_update3_patch.ps1 +++ b/coin/provisioning/common/windows/msvc_2015_update3_patch.ps1 @@ -36,25 +36,30 @@ # Original download page: https://msdn.microsoft.com/en-us/library/mt752379.aspx $version = "2015 update3 (KB3165756)" -$package = "C:\Windows\Temp\vs14-kb3165756.exe" +$packagePath = "C:\Windows\Temp" +$package = $packagePath + "\vs14-kb3165756.exe" $url_cache = "http://ci-files01-hki.intra.qt.io/input/windows/vs14-kb3165756.exe" $url_official = "http://go.microsoft.com/fwlink/?LinkID=816878" $sha1 = "6a21d9b291ca75d44baad95e278fdc0d05d84c02" -$preparedPackage="\\ci-files01-hki.intra.qt.io\provisioning\windows\vs14-kb3165756-update" +$preparedPackage = "\\ci-files01-hki.intra.qt.io\provisioning\windows\vs14-kb3165756-update" if (Test-Path $preparedPackage) { - echo "Using prepared package" - pushd $preparedPackage - $commandLine = "$preparedPackage\vs14-kb3165756.exe" + # The prepared package contains updated packages so that not everything has to be downloaded + Write-Host "Using prepared package" + Copy-Item -Recurse $preparedPackage $packagePath + # Remove the whole downloaded folder + $toRemove = $packagePath + "\vs14-kb3165756-update" + $executable = "$toRemove\vs14-kb3165756.exe" } else { - echo "Fetching patch for Visual Studio $version..." + Write-Host "Fetching patch for Visual Studio $version..." Download $url_official $url_cache $package - Verify-Checksum $package $sha1 - $commandLine = $package + $executable = $package + # Remove the downloaded executable + $toRemove = $executable } -echo "Installing patch for Visual Studio $version..." -. $commandLine /norestart /passive -if ($commandLine.StartsWith("C:\Windows")) { - remove-item $package -} +Verify-Checksum $executable $sha1 +Write-Host "Installing patch for Visual Studio $version..." +Run-Executable $executable "/norestart /passive" + +Remove-Item -Force -Recurse -Path $toRemove diff --git a/coin/provisioning/common/windows/mysql.ps1 b/coin/provisioning/common/windows/mysql.ps1 index 63088861..a22e439a 100644 --- a/coin/provisioning/common/windows/mysql.ps1 +++ b/coin/provisioning/common/windows/mysql.ps1 @@ -48,16 +48,16 @@ function DownloadAndInstall [string]$installPath ) - echo "Fetching from URL ..." + Write-Host "Fetching from URL ..." Copy-Item $internalUrl $package $zipDir = [io.path]::GetFileNameWithoutExtension($package) Extract-Dev-Folders-From-Zip $package $zipDir $installPath - Remove-Item $package + Remove-Item -Path $package } -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { # Install x64 bit version $architecture = "x64" $installFolder = "C:\Utils\my_sql\my_sql" @@ -65,26 +65,23 @@ if( (is64bitWinHost) -eq 1 ) { DownloadAndInstall $internalUrl $packagex64 $installFolder - echo "Set environment variables ..." - [Environment]::SetEnvironmentVariable("MYSQL_INCLUDE_x64", "$installFolder\include", "Machine") - [Environment]::SetEnvironmentVariable("MYSQL_LIB_x64", "$installFolder\lib", "Machine") + Set-EnvironmentVariable "MYSQL_INCLUDE_x64" "$installFolder\include" + Set-EnvironmentVariable "MYSQL_LIB_x64" "$installFolder\lib" } # Install x86 bit version $architecture = "x86" $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\mysql-$version-win32.zip" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $installFolder = "C:\Utils\my_sql\my_sql$architecture" -} -else { +} else { $installFolder = "C:\Utils\my_sql\my_sql" } DownloadAndInstall $internalUrl $packagex86 $installFolder -echo "Set environment variables ..." -[Environment]::SetEnvironmentVariable("MYSQL_INCLUDE_x86", "$installFolder\include", "Machine") -[Environment]::SetEnvironmentVariable("MYSQL_LIB_x86", "$installFolder\lib", "Machine") +Set-EnvironmentVariable "MYSQL_INCLUDE_x86" "$installFolder\include" +Set-EnvironmentVariable "MYSQL_LIB_x86" "$installFolder\lib" # Store version information to ~/versions.txt, which is used to print version information to provision log. -echo "MySQL = $version" >> ~/versions.txt +Write-Output "MySQL = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/ninja.ps1 b/coin/provisioning/common/windows/ninja.ps1 index 08bf2579..dd60ad69 100644 --- a/coin/provisioning/common/windows/ninja.ps1 +++ b/coin/provisioning/common/windows/ninja.ps1 @@ -6,6 +6,6 @@ Download https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-win Verify-Checksum $zip "E01093F6533818425F8EFB0843CED7DCAABEA3B2" Extract-Zip $zip C:\Utils\Ninja -Remove-Item $zip +Remove-Item -Path $zip Add-Path "C:\Utils\Ninja" diff --git a/coin/provisioning/common/windows/openssl.ps1 b/coin/provisioning/common/windows/openssl.ps1 index f8268492..c884dd94 100644 --- a/coin/provisioning/common/windows/openssl.ps1 +++ b/coin/provisioning/common/windows/openssl.ps1 @@ -40,7 +40,7 @@ $version = "1_0_2j" $packagex64 = "C:\Windows\Temp\Win64OpenSSL-$version.exe" $packagex86 = "C:\Windows\Temp\Win32OpenSSL-$version.exe" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { # Install x64 bit version $architecture = "x64" @@ -49,25 +49,24 @@ if( (is64bitWinHost) -eq 1 ) { $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\openssl\Win64OpenSSL-$version.exe" $sha1 = "b1660dbdcc77e1b3d81d780c7167be1c75384d44" - echo "Fetching from URL ..." + Write-Host "Fetching from URL ..." Download $externalUrl $internalUrl $packagex64 Verify-Checksum $packagex64 $sha1 - echo "Installing $packagex64 ..." - cmd /c "$packagex64 /SP- /SILENT /LOG /SUPPRESSMSGBOXES /NORESTART /DIR=$installFolder" + Write-Host "Installing $packagex64 ..." + Run-Executable "$packagex64" "/SP- /SILENT /LOG /SUPPRESSMSGBOXES /NORESTART /DIR=$installFolder" - echo "Remove downloaded $packagex64 ..." - Remove-Item $packagex64 + Write-Host "Remove downloaded $packagex64 ..." + Remove-Item -Path $packagex64 - echo "Set $architecture environment variables ..." - [Environment]::SetEnvironmentVariable("OPENSSL_CONF_x64", "$installFolder\bin\openssl.cfg", "Machine") - [Environment]::SetEnvironmentVariable("OPENSSL_INCLUDE_x64", "$installFolder\include", "Machine") - [Environment]::SetEnvironmentVariable("OPENSSL_LIB_x64", "$installFolder\lib", "Machine") + Set-EnvironmentVariable "OPENSSL_CONF_x64" "$installFolder\bin\openssl.cfg" + Set-EnvironmentVariable "OPENSSL_INCLUDE_x64" "$installFolder\include" + Set-EnvironmentVariable "OPENSSL_LIB_x64" "$installFolder\lib" } # Install x86 bit version $architecture = "x86" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $installFolder = "C:\openssl$architecture" } else { $installFolder = "C:\openssl" @@ -77,19 +76,18 @@ $externalUrl = "https://slproweb.com/download/Win32OpenSSL-$version.exe" $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\openssl\Win32OpenSSL-$version.exe" $sha1 = "29b31d20545214ab4e4c57afb20be2338c317cc3" -echo "Fetching from URL ..." +Write-Host "Fetching from URL ..." Download $externalUrl $internalUrl $packagex86 Verify-Checksum $packagex86 $sha1 -echo "Installing $packagex86 ..." -cmd /c "$packagex86 /SP- /SILENT /LOG /SUPPRESSMSGBOXES /NORESTART /DIR=$installFolder" +Write-Host "Installing $packagex86 ..." +Run-Executable "$packagex86" "/SP- /SILENT /LOG /SUPPRESSMSGBOXES /NORESTART /DIR=$installFolder" -echo "Remove downloaded $packagex86 ..." -Remove-Item $packagex86 +Write-Host "Remove downloaded $packagex86 ..." +Remove-Item -Path $packagex86 -echo "Set $architecture environment variables ..." -[Environment]::SetEnvironmentVariable("OPENSSL_CONF_x86", "$installFolder\bin\openssl.cfg", "Machine") -[Environment]::SetEnvironmentVariable("OPENSSL_INCLUDE_x86", "$installFolder\include", "Machine") -[Environment]::SetEnvironmentVariable("OPENSSL_LIB_x86", "$installFolder\lib", "Machine") +Set-EnvironmentVariable "OPENSSL_CONF_x86" "$installFolder\bin\openssl.cfg" +Set-EnvironmentVariable "OPENSSL_INCLUDE_x86" "$installFolder\include" +Set-EnvironmentVariable "OPENSSL_LIB_x86" "$installFolder\lib" # Store version information to ~/versions.txt, which is used to print version information to provision log. -echo "OpenSSL = $version" >> ~/versions.txt +Write-Output "OpenSSL = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/postgresql.ps1 b/coin/provisioning/common/windows/postgresql.ps1 index ca47f078..b9681809 100644 --- a/coin/provisioning/common/windows/postgresql.ps1 +++ b/coin/provisioning/common/windows/postgresql.ps1 @@ -40,7 +40,7 @@ $version = "9.1.9-1" $packagex64 = "C:\Windows\temp\postgresql-$version-windows-x64-binaries.zip" $packagex86 = "C:\Windows\temp\postgresql-$version-windows-binaries.zip" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { # Install x64 bit versions $architecture = "x64" $installFolder = "C:\Utils\postgresql\pgsql" @@ -48,18 +48,17 @@ if( (is64bitWinHost) -eq 1 ) { $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\postgresql-$version-windows-x64-binaries.zip" $sha1 = "4da0453cdfda335e064d4437cf5bb9d356054cfd" - echo "Fetching from URL ..." + Write-Host "Fetching from URL ..." Download $externalUrl $internalUrl $packagex64 Verify-Checksum $packagex64 $sha1 - echo "Installing $packagex64 ..." + Write-Host "Installing $packagex64 ..." Extract-Dev-Folders-From-Zip $packagex64 "pgsql" $installFolder - echo "Remove downloaded $packagex64 ..." - Remove-Item $packagex64 + Write-Host "Remove downloaded $packagex64 ..." + Remove-Item -Path $packagex64 - echo "Set $architecture environment variables ..." - [Environment]::SetEnvironmentVariable("POSTGRESQL_INCLUDE_x64", "$installFolder\include", "Machine") - [Environment]::SetEnvironmentVariable("POSTGRESQL_LIB_x64", "$installFolder\lib", "Machine") + Set-EnvironmentVariable "POSTGRESQL_INCLUDE_x64" "$installFolder\include" + Set-EnvironmentVariable "POSTGRESQL_LIB_x64" "$installFolder\lib" } # Install x86 bit version @@ -67,26 +66,24 @@ $architecture = "x86" $externalUrl = "http://get.enterprisedb.com/postgresql/postgresql-$version-windows-binaries.zip" $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\postgresql-$version-windows-binaries.zip" $sha1 = "eb4f01845e1592800edbb74f60944b6c0aca51a9" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $installFolder = "C:\Utils\postgresql$architecture\pgsql" -} -else { +} else { $installFolder = "C:\Utils\postgresql\pgsql" } -echo "Fetching from URL..." +Write-Host "Fetching from URL..." Download $externalUrl $internalUrl $packagex86 Verify-Checksum $packagex86 $sha1 -echo "Installing $packagex86 ..." +Write-Host "Installing $packagex86 ..." Extract-Dev-Folders-From-Zip $packagex86 "pgsql" $installFolder -echo "Remove downloaded $packagex86 ..." -Remove-Item $packagex86 +Write-Host "Remove downloaded $packagex86 ..." +Remove-Item -Path $packagex86 -echo "Set $architecture environment variables ..." -[Environment]::SetEnvironmentVariable("POSTGRESQL_INCLUDE_x86", "$installFolder\include", "Machine") -[Environment]::SetEnvironmentVariable("POSTGRESQL_LIB_x86", "$installFolder\lib", "Machine") +Set-EnvironmentVariable "POSTGRESQL_INCLUDE_x86" "$installFolder\include" +Set-EnvironmentVariable "POSTGRESQL_LIB_x86" "$installFolder\lib" # Store version information to ~/versions.txt, which is used to print version information to provision log. -echo "PostgreSQL = $version" >> ~/versions.txt +Write-Output "PostgreSQL = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/python.ps1 b/coin/provisioning/common/windows/python.ps1 index fe75aa35..72e9cd97 100644 --- a/coin/provisioning/common/windows/python.ps1 +++ b/coin/provisioning/common/windows/python.ps1 @@ -36,11 +36,10 @@ # Python is required for building Qt 5 from source. $version = "2.7.13" -if( (is64bitWinHost) -eq 1 ) { +if (Is64BitWinHost) { $arch = ".amd64" $sha1 = "d9113142bae8829365c595735e1ad1f9f5e2894c" -} -else { +} else { $arch = "" $sha1 = "7e3b54236dbdbea8fe2458db501176578a4d59c0" } @@ -48,23 +47,25 @@ $package = "C:\Windows\temp\python-$version.msi" $externalUrl = "https://www.python.org/ftp/python/$version/python-$version" + $arch + ".msi" $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\python-$version" + $arch + ".msi" -echo "Fetching from URL..." +Write-Host "Fetching from URL..." Download $externalUrl $internalUrl $package Verify-Checksum $package $sha1 -echo "Installing $package..." -cmd /c "msiexec /passive /i $package ALLUSERS=1" +Write-Host "Installing $package..." +Run-Executable "msiexec" "/passive /i $package ALLUSERS=1" + # We need to change allowZip64 from 'False' to 'True' to be able to create ZIP files that use the ZIP64 extensions when the zipfile is larger than 2 GB -echo "Chancing allowZip64 value to 'True'..." +Write-Host "Changing allowZip64 value to 'True'..." (Get-Content C:\Python27\lib\zipfile.py) | ForEach-Object { $_ -replace "allowZip64=False", "allowZip64=True" } | Set-Content C:\Python27\lib\zipfile.py -echo "Remove $package..." -del $package +Write-Host "Remove $package..." +Remove-Item -Path $package Add-Path "C:\Python27;C:\Python27\Scripts" -C:\Python27\python.exe -m ensurepip +Run-Executable "C:\Python27\python.exe" "-m ensurepip" + # Install python virtual env #if ( isProxyEnabled ) { -# echo "Using proxy with pip" +# Write-Host "Using proxy with pip" # $pip_args = "--proxy=" + (getProxy) #} -C:\Python27\Scripts\pip.exe install virtualenv +Run-Executable "C:\Python27\Scripts\pip.exe" "install virtualenv" diff --git a/coin/provisioning/common/windows/python3.ps1 b/coin/provisioning/common/windows/python3.ps1 index 23ddb553..2421caf3 100644 --- a/coin/provisioning/common/windows/python3.ps1 +++ b/coin/provisioning/common/windows/python3.ps1 @@ -32,7 +32,6 @@ ## ############################################################################# -param([Int32]$archVer=32) . "$PSScriptRoot\helpers.ps1" # This script installs Python $version. @@ -43,32 +42,31 @@ $package = "C:\Windows\temp\python-$version.exe" $install_path = "C:\Python36" # check bit version -if ( $archVer -eq 64 ) { - echo "Running in 64 bit system" +if (Is64BitWinHost) { + Write-Host "Running in 64 bit system" $externalUrl = "https://www.python.org/ftp/python/$version/python-$version-amd64.exe" $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/python-$version-amd64.exe" $sha1 = "bf54252c4065b20f4a111cc39cf5215fb1edccff" -} -else { +} else { $externalUrl = "https://www.python.org/ftp/python/$version/python-$version.exe" $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/python-$version.exe" $sha1 = "76c50b747237a0974126dd8b32ea036dd77b2ad1" } -echo "Fetching from URL..." +Write-Host "Fetching from URL..." Download $externalUrl $internalUrl $package Verify-Checksum $package $sha1 -echo "Installing $package..." -cmd /c "$package /q TargetDir=$install_path" -echo "Remove $package..." -del $package +Write-Host "Installing $package..." +Run-Executable "$package" "/q TargetDir=$install_path" +Write-Host "Remove $package..." +Remove-Item -Path $package -[Environment]::SetEnvironmentVariable("PYTHON3_PATH", "$install_path", [EnvironmentVariableTarget]::Machine) -[Environment]::SetEnvironmentVariable("PIP3_PATH", "$install_path\Scripts", [EnvironmentVariableTarget]::Machine) +Set-EnvironmentVariable "PYTHON3_PATH" "$install_path" +Set-EnvironmentVariable "PIP3_PATH" "$install_path\Scripts" # Install python virtual env #if ( isProxyEnabled ) { -# echo "Using proxy with pip" +# Write-Host "Using proxy with pip" # $pip_args = "--proxy=" + (getProxy) #} -cmd /c "$install_path\Scripts\pip3.exe install virtualenv" +Run-Executable "$install_path\Scripts\pip3.exe" "install virtualenv" diff --git a/coin/provisioning/common/windows/set-proxy.ps1 b/coin/provisioning/common/windows/set-proxy.ps1 index 255af07b..d252a4ff 100644 --- a/coin/provisioning/common/windows/set-proxy.ps1 +++ b/coin/provisioning/common/windows/set-proxy.ps1 @@ -36,27 +36,27 @@ $n = $n.Split('=') New-Variable -Name $n[0] -Value $n[1] if (([string]::IsNullOrEmpty($proxy)) -or ($proxy -eq '""')) { - echo "No proxy is defined." -} -else { - echo "Checking proxy @ $proxy" + Write-Host "No proxy is defined." +} else { + Write-Host "Checking proxy @ $proxy" + $proxy = $proxy -replace '"', "" $webclient = New-Object System.Net.WebClient $proxy_obj = New-Object System.Net.WebProxy($proxy) $webclient.proxy = $proxy_obj try { $webpage = $webclient.DownloadData("http://proxy.intra.qt.io") - } - catch { + } catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName $iserror = $true } if ($iserror -eq $true) { - echo "Testing download with proxy does not work: $ErrorMessage, $FailedItem. Not setting proxy." + Write-Host "Testing download with proxy does not work: $ErrorMessage, $FailedItem. Not setting proxy." } else { - echo "Setting proxy to: $proxy" + Write-Host "Setting proxy to: $proxy" + Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyServer -Value "$proxy" Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyEnable -Value 1 Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyOverride -Value 10.215 diff --git a/coin/provisioning/common/windows/squishInstall.ps1 b/coin/provisioning/common/windows/squishInstall.ps1 index 9128c683..62820676 100644 --- a/coin/provisioning/common/windows/squishInstall.ps1 +++ b/coin/provisioning/common/windows/squishInstall.ps1 @@ -50,10 +50,10 @@ $licensePackage = ".squish-3-license" $OSVersion = (get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName # This can be removed when using vanilla os -if((Test-Path -Path "$targetDir" )){ +if ((Test-Path -Path "$targetDir" )) { try { - echo "Renaming old Squish" - echo "Rename-Item -ErrorAction 'Stop' $targetDir $targetDir_deleted" + Write-Host "Renaming old Squish" + Write-Host "Rename-Item -ErrorAction 'Stop' $targetDir $targetDir_deleted" Rename-Item -ErrorAction 'Stop' "$targetDir" squish_deleted } catch {} } @@ -72,13 +72,12 @@ Function DownloadAndInstallSquish { $SquishUrl = $squishBranchUrl + "\squish-" + $version + "-qt" + $qtBranch + "-" + $bit + "-" + $squishPackage + ".exe" $SquishInstaller = "$targetDir\$squishPackage.exe" $SquishParameters = "unattended=1 targetdir=$targetDir\$squishPackage" - $Command = "$SquishInstaller $SquishParameters" - echo "Fetching from URL ..." + Write-Host "Fetching from URL $squishUrl" Copy-Item "$SquishUrl" "$SquishInstaller" - echo "Installing Squish" - Execute-Command $Command - remove-item $SquishInstaller + Write-Host "Installing Squish" + Run-Executable "$SquishInstaller" "$SquishParameters" + Remove-Item -Path $SquishInstaller } Function DownloadSquishLicence { @@ -90,17 +89,16 @@ Function DownloadSquishLicence { ) # This can be removed when using vanilla os - if ($Env:SQUISH_LICENSEKEY_DIR) - { - echo "Removing SQUISH_LICENSEKEY_DIR env variable" + if ($Env:SQUISH_LICENSEKEY_DIR) { + Write-Host "Removing SQUISH_LICENSEKEY_DIR env variable" Remove-Item Env:\SQUISH_LICENSEKEY_DIR } - echo "Installing Squish license to home directory" + Write-Host "Installing Squish license to home directory" Copy-Item $squishUrl\$licensePackage ~\$licensePackage } -echo "Creating $targetDir" +Write-Host "Creating $targetDir" New-Item -ErrorAction Ignore -ItemType directory -Path "$targetDir" DownloadSquishLicence $licensePackage $squishUrl $targetDir @@ -109,7 +107,7 @@ if(($OSVersion -eq "Windows 10 Enterprise") -or ($OSVersion -eq "Windows 8.1 Ent { # Squish for MinGW $squishPackageMingw = "mingw_gcc53_posix_dwarf" - echo "Installing $squishPackageMingw" + Write-Host "Installing $squishPackageMingw" DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win32 $targetDir $squishPackageMingw mv $targetDir\$squishPackageMingw $targetDir\mingw @@ -117,56 +115,45 @@ if(($OSVersion -eq "Windows 10 Enterprise") -or ($OSVersion -eq "Windows 8.1 Ent $squishPackage = "msvc14" $squishPackage64bit = "msvc14_64" - if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64")) - { - echo "Installing $squishPackage_64" + if (Is64BitWinHost) { + Write-Host "Installing $squishPackage64bit" DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win64 $targetDir $squishPackage - mv $targetDir\$squishPackage $targetDir\$squishPackage64bit + Rename-Item $targetDir\$squishPackage $targetDir\$squishPackage64bit } - echo "Installing $squishPackage" + Write-Host "Installing $squishPackage" DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win32 $targetDir $squishPackage } -if($OSVersion -eq "Windows 8.1 Enterprise") -{ +if ($OSVersion -eq "Windows 8.1 Enterprise") { # Squish for Visual Studio 2013 $squishPackage64bit = "msvc12_64" - if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64")) - { - echo "Installing $squishPackage_64" + if (Is64BitWinHost) { + Write-Host "Installing $squishPackage_64" DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win64 $targetDir $squishPackage - mv $targetDir\$squishPackage $targetDir\$squishPackage64bit - } - else - { - echo "Change secret file to normal one" - attrib -h C:\Users\qt\.squish-3-license + Rename-Item $targetDir\$squishPackage $targetDir\$squishPackage64bit + } else { + Write-Host "Change secret file to normal one" + Run-Executable "attrib.exe" "-h C:\Users\qt\.squish-3-license" } } -else -{ - # Windows 7 - +if ($OSVersion -eq "Windows 7 Enterprise") { # Squish for MinGW $squishPackageMingw = "mingw_gcc53_posix_dwarf" - echo "Installing $squishPackageMingw" + Write-Host "Installing $squishPackageMingw" DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win32 $targetDir $squishPackageMingw - mv $targetDir\$squishPackageMingw $targetDir\mingw + Rename-Item $targetDir\$squishPackageMingw $targetDir\mingw # Squish for Visual Studio 2015 $squishPackage = "msvc14" $squishPackage64bit = "msvc14_64" - echo "Installing $squishPackage" + Write-Host "Installing $squishPackage" DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win32 $targetDir $squishPackage - if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64")) - { - echo "Installing $squishPackage64bit" + if (Is64BitWinHost) { + Write-Host "Installing $squishPackage64bit" DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win64 $targetDir $squishPackage - mv $targetDir\$squishPackage $targetDir\$squishPackage64bit + Rename-Item $targetDir\$squishPackage $targetDir\$squishPackage64bit } - - } diff --git a/coin/provisioning/common/windows/unset-proxy.ps1 b/coin/provisioning/common/windows/unset-proxy.ps1 index 86374ec1..d0a374ef 100644 --- a/coin/provisioning/common/windows/unset-proxy.ps1 +++ b/coin/provisioning/common/windows/unset-proxy.ps1 @@ -31,7 +31,7 @@ ## ############################################################################# -echo "Disabling proxy" +Write-Host "Disabling proxy" $dcs = (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections").DefaultConnectionSettings $dcs[8] = $_ -band 0xF7 Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections" -Name DefaultConnectionSettings -Value $dcs diff --git a/coin/provisioning/common/windows/vc_redist.ps1 b/coin/provisioning/common/windows/vc_redist.ps1 index 4a8376b6..c356ca2c 100644 --- a/coin/provisioning/common/windows/vc_redist.ps1 +++ b/coin/provisioning/common/windows/vc_redist.ps1 @@ -32,21 +32,18 @@ ## ############################################################################# -param([Int32]$archVer=32) . "$PSScriptRoot\helpers.ps1" # This script installs Visual C++ Redistributable for Visual Studio 2015 # This is a dependency of the current python3 version -# check bit version -if ( $archVer -eq 64 ) { - echo "Running in 64 bit system" +if (Is64BitWinHost) { + Write-Host "Running in 64 bit system" $arch = "x64" $externalUrl = "https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe" $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/vc_redist.x64.exe" $sha1 = "3155cb0f146b927fcc30647c1a904cd162548c8c" -} -else { +} else { $arch = "x86" $externalUrl = "https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe" $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/vc_redist.x86.exe" @@ -55,10 +52,10 @@ else { $package = "C:\Windows\temp\vc_redist.$arch.exe" -echo "Fetching from URL..." +Write-Host "Fetching from URL..." Download $externalUrl $internalUrl $package Verify-Checksum $package $sha1 -echo "Installing $package..." -Start-Process -FilePath $package -ArgumentList "/q" -Wait -echo "Remove $package..." -del $package +Write-Host "Installing $package..." +Run-Executable $package "/q" +Write-Host "Remove $package..." +Remove-Item -Force -Path $package diff --git a/coin/provisioning/common/windows/wsearch-off.ps1 b/coin/provisioning/common/windows/wsearch-off.ps1 index 09c45bbd..12e959bd 100644 --- a/coin/provisioning/common/windows/wsearch-off.ps1 +++ b/coin/provisioning/common/windows/wsearch-off.ps1 @@ -1,3 +1,4 @@ +. "$PSScriptRoot\helpers.ps1" # Disable the windows search indexing service -sc.exe config WSearch start= disabled +Run-Executable "sc.exe" "config WSearch start= disabled" diff --git a/coin/provisioning/qtci-windows-10-x86/05-msvc.ps1 b/coin/provisioning/qtci-windows-10-x86/05-msvc.ps1 index 1de57a66..d019fc92 100644 --- a/coin/provisioning/qtci-windows-10-x86/05-msvc.ps1 +++ b/coin/provisioning/qtci-windows-10-x86/05-msvc.ps1 @@ -34,10 +34,10 @@ # Visual Studios are pre-provisioned to tier1 images # MSVC 2015 Update 3 -echo "Visual Studio 2015 = Version 14.0.25421.3 Update 3" >> ~\versions.txt +Write-Output "Visual Studio 2015 = Version 14.0.25421.3 Update 3" >> ~\versions.txt # MSVC 2017 -echo "Visual Studio 2017 = Version 15.1 (26403.7)" >> ~\versions.txt +Write-Output "Visual Studio 2017 = Version 15.1 (26403.7)" >> ~\versions.txt # MSVC 2017 Build Tools -echo "Visual Studio 2017 Build Tools = Version 15.1 (26403.7)" >> ~\versions.txt +Write-Output "Visual Studio 2017 Build Tools = Version 15.1 (26403.7)" >> ~\versions.txt diff --git a/coin/provisioning/qtci-windows-10-x86/08-python3.ps1 b/coin/provisioning/qtci-windows-10-x86/08-python3.ps1 index 28299307..998e6bae 100644 --- a/coin/provisioning/qtci-windows-10-x86/08-python3.ps1 +++ b/coin/provisioning/qtci-windows-10-x86/08-python3.ps1 @@ -1 +1 @@ -. "$PSScriptRoot\..\common\windows\python3.ps1" 32 +. "$PSScriptRoot\..\common\windows\python3.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86_64/05-msvc.ps1 b/coin/provisioning/qtci-windows-10-x86_64/05-msvc.ps1 index 1de57a66..d019fc92 100644 --- a/coin/provisioning/qtci-windows-10-x86_64/05-msvc.ps1 +++ b/coin/provisioning/qtci-windows-10-x86_64/05-msvc.ps1 @@ -34,10 +34,10 @@ # Visual Studios are pre-provisioned to tier1 images # MSVC 2015 Update 3 -echo "Visual Studio 2015 = Version 14.0.25421.3 Update 3" >> ~\versions.txt +Write-Output "Visual Studio 2015 = Version 14.0.25421.3 Update 3" >> ~\versions.txt # MSVC 2017 -echo "Visual Studio 2017 = Version 15.1 (26403.7)" >> ~\versions.txt +Write-Output "Visual Studio 2017 = Version 15.1 (26403.7)" >> ~\versions.txt # MSVC 2017 Build Tools -echo "Visual Studio 2017 Build Tools = Version 15.1 (26403.7)" >> ~\versions.txt +Write-Output "Visual Studio 2017 Build Tools = Version 15.1 (26403.7)" >> ~\versions.txt diff --git a/coin/provisioning/qtci-windows-10-x86_64/05-qnx_700.ps1 b/coin/provisioning/qtci-windows-10-x86_64/05-qnx_700.ps1 index a7a8c035..7786d363 100644 --- a/coin/provisioning/qtci-windows-10-x86_64/05-qnx_700.ps1 +++ b/coin/provisioning/qtci-windows-10-x86_64/05-qnx_700.ps1 @@ -41,6 +41,6 @@ Invoke-WebRequest -UseBasicParsing http://ci-files01-hki.intra.qt.io/input/qnx/ Verify-Checksum $zip "DD3346A3429C06B59BF4D45CE0782F737D2424C7" Extract-7Zip $zip C:\ -[Environment]::SetEnvironmentVariable("QNX_700", "C:\QNX700", "Machine") -echo "QNX SDP = 7.0.0" >> ~/versions.txt -del $zip +Set-EnvironmentVariable "QNX_700" "C:\QNX700" +Write-Output "QNX SDP = 7.0.0" >> ~/versions.txt +Remove-Item -Path $zip diff --git a/coin/provisioning/qtci-windows-10-x86_64/08-python3.ps1 b/coin/provisioning/qtci-windows-10-x86_64/08-python3.ps1 index 3201032d..998e6bae 100644 --- a/coin/provisioning/qtci-windows-10-x86_64/08-python3.ps1 +++ b/coin/provisioning/qtci-windows-10-x86_64/08-python3.ps1 @@ -1 +1 @@ -. "$PSScriptRoot\..\common\windows\python3.ps1" 64 +. "$PSScriptRoot\..\common\windows\python3.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86_64/90-install-virtualbox.ps1 b/coin/provisioning/qtci-windows-10-x86_64/90-install-virtualbox.ps1 index 298375a3..d1b6ac9e 100644 --- a/coin/provisioning/qtci-windows-10-x86_64/90-install-virtualbox.ps1 +++ b/coin/provisioning/qtci-windows-10-x86_64/90-install-virtualbox.ps1 @@ -43,9 +43,9 @@ $virtualboxPackage = "C:\Windows\Temp\virtualbox-$version.exe" Download $url_official $url_cache $virtualboxPackage Verify-Checksum $virtualboxPackage $sha1 -Start-Process $virtualboxPackage -ArgumentList "--silent" -Wait +Run-Executable $virtualboxPackage "--silent" -echo "Cleaning $virtualboxPackage.." -Remove-Item -Recurse -Force "$virtualboxPackage" +Write-Output "Cleaning $virtualboxPackage.." +Remove-Item -Recurse -Force -Path "$virtualboxPackage" -echo "VirtualBox = $version" >> ~\versions.txt +Write-Output "VirtualBox = $version" >> ~\versions.txt diff --git a/coin/provisioning/qtci-windows-10-x86_64/90-signing-tools.ps1 b/coin/provisioning/qtci-windows-10-x86_64/90-signing-tools.ps1 index 7d01edac..854bee01 100644 --- a/coin/provisioning/qtci-windows-10-x86_64/90-signing-tools.ps1 +++ b/coin/provisioning/qtci-windows-10-x86_64/90-signing-tools.ps1 @@ -41,4 +41,4 @@ $destination = "C:\Windows\temp\sign.zip" Download $url $url $destination Extract-Zip "$destination" "C:\Utils" -Remove-Item "$destination" +Remove-Item -Path "$destination" diff --git a/coin/provisioning/qtci-windows-7-x86/07-vc_redist.ps1 b/coin/provisioning/qtci-windows-7-x86/07-vc_redist.ps1 index b9d8153e..1e465fe1 100644 --- a/coin/provisioning/qtci-windows-7-x86/07-vc_redist.ps1 +++ b/coin/provisioning/qtci-windows-7-x86/07-vc_redist.ps1 @@ -1 +1 @@ -. "$PSScriptRoot\..\common\windows\vc_redist.ps1" 32 +. "$PSScriptRoot\..\common\windows\vc_redist.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86/08-python3.ps1 b/coin/provisioning/qtci-windows-7-x86/08-python3.ps1 index 28299307..998e6bae 100644 --- a/coin/provisioning/qtci-windows-7-x86/08-python3.ps1 +++ b/coin/provisioning/qtci-windows-7-x86/08-python3.ps1 @@ -1 +1 @@ -. "$PSScriptRoot\..\common\windows\python3.ps1" 32 +. "$PSScriptRoot\..\common\windows\python3.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86_64/07-vc_redist.ps1 b/coin/provisioning/qtci-windows-7-x86_64/07-vc_redist.ps1 index b8c1ce9f..1e465fe1 100644 --- a/coin/provisioning/qtci-windows-7-x86_64/07-vc_redist.ps1 +++ b/coin/provisioning/qtci-windows-7-x86_64/07-vc_redist.ps1 @@ -1 +1 @@ -. "$PSScriptRoot\..\common\windows\vc_redist.ps1" 64 +. "$PSScriptRoot\..\common\windows\vc_redist.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86_64/25-python3.ps1 b/coin/provisioning/qtci-windows-7-x86_64/25-python3.ps1 index 3201032d..998e6bae 100644 --- a/coin/provisioning/qtci-windows-7-x86_64/25-python3.ps1 +++ b/coin/provisioning/qtci-windows-7-x86_64/25-python3.ps1 @@ -1 +1 @@ -. "$PSScriptRoot\..\common\windows\python3.ps1" 64 +. "$PSScriptRoot\..\common\windows\python3.ps1" diff --git a/coin/provisioning/qtci-windows-8.1-x86/09-msvc-2013-update5.ps1 b/coin/provisioning/qtci-windows-8.1-x86/09-msvc-2013-update5.ps1 index 202d072d..c4337e52 100644 --- a/coin/provisioning/qtci-windows-8.1-x86/09-msvc-2013-update5.ps1 +++ b/coin/provisioning/qtci-windows-8.1-x86/09-msvc-2013-update5.ps1 @@ -38,14 +38,13 @@ $version = "2013 Update 5 (KB2829760)" $package = "C:\Windows\Temp\vs12-kb2829760.exe" $url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\VS2013.5.exe" -echo "Fetching patch for Visual Studio $version..." +Write-Host "Fetching patch for Visual Studio $version..." Copy-Item $url_cache $package -$commandLine = $package -echo "Installing Update 5 for Visual Studio $version..." -. $commandLine /norestart /passive +Write-Host "Installing Update 5 for Visual Studio $version..." +Run-Executable "$package" "/norestart /passive" -echo "Removing $package ..." -remove-item $package +Write-Host "Removing $package ..." +Remove-Item $package -echo "Visual Studio = $version" >> ~\versions.txt +Write-Output "Visual Studio = $version" >> ~\versions.txt diff --git a/coin/provisioning/qtci-windows-8.1-x86_64/08-msvc-2013-update5.ps1 b/coin/provisioning/qtci-windows-8.1-x86_64/08-msvc-2013-update5.ps1 index 447e7b1f..c4337e52 100644 --- a/coin/provisioning/qtci-windows-8.1-x86_64/08-msvc-2013-update5.ps1 +++ b/coin/provisioning/qtci-windows-8.1-x86_64/08-msvc-2013-update5.ps1 @@ -38,13 +38,13 @@ $version = "2013 Update 5 (KB2829760)" $package = "C:\Windows\Temp\vs12-kb2829760.exe" $url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\VS2013.5.exe" -echo "Fetching patch for Visual Studio $version..." +Write-Host "Fetching patch for Visual Studio $version..." Copy-Item $url_cache $package -echo "Installing Update 5 for Visual Studio $version..." -Start-Process -FilePath $package -ArgumentList "/norestart /passive" -Wait +Write-Host "Installing Update 5 for Visual Studio $version..." +Run-Executable "$package" "/norestart /passive" -echo "Removing $package ..." -remove-item $package +Write-Host "Removing $package ..." +Remove-Item $package -echo "Visual Studio = $version" >> ~\versions.txt +Write-Output "Visual Studio = $version" >> ~\versions.txt -- cgit v1.2.3