From c9d71e9eeb925ee4236acefeb88b14d80d04ba5e Mon Sep 17 00:00:00 2001 From: Heikki Halmet Date: Fri, 9 Sep 2016 13:12:51 +0300 Subject: Python to provisioning for Windows Installs Python version 2.7.10. Python is required for building Qt 5 from source. More specifically qtdeclarative and qtwebkit require it. Change-Id: I63c8f3294a8a4799df5e52fbd41a36db8686950e Reviewed-by: Jani Heikkinen --- .../common/01-windows_removethemall.ps1 | 61 +++++++++++++++++++++ coin/provisioning/common/helpers.ps1 | 29 ++++++++++ coin/provisioning/common/python.ps1 | 64 ++++++++++++++++++++++ .../01-windows_removethemall.ps1 | 1 + coin/provisioning/qtci-windows-10-x86/python.ps1 | 1 + .../01-windows_removethemall.ps1 | 1 + .../provisioning/qtci-windows-10-x86_64/python.ps1 | 1 + .../01-windows_removethemall.ps1 | 1 + coin/provisioning/qtci-windows-7-x86/python.ps1 | 1 + .../01-windows_removethemall.ps1 | 1 + coin/provisioning/qtci-windows-8-x86/python.ps1 | 1 + .../01-windows_removethemall.ps1 | 1 + coin/provisioning/qtci-windows-8-x86_64/python.ps1 | 1 + 13 files changed, 164 insertions(+) create mode 100644 coin/provisioning/common/01-windows_removethemall.ps1 create mode 100644 coin/provisioning/common/python.ps1 create mode 100644 coin/provisioning/qtci-windows-10-x86/01-windows_removethemall.ps1 create mode 100644 coin/provisioning/qtci-windows-10-x86/python.ps1 create mode 100644 coin/provisioning/qtci-windows-10-x86_64/01-windows_removethemall.ps1 create mode 100644 coin/provisioning/qtci-windows-10-x86_64/python.ps1 create mode 100644 coin/provisioning/qtci-windows-7-x86/01-windows_removethemall.ps1 create mode 100644 coin/provisioning/qtci-windows-7-x86/python.ps1 create mode 100644 coin/provisioning/qtci-windows-8-x86/01-windows_removethemall.ps1 create mode 100644 coin/provisioning/qtci-windows-8-x86/python.ps1 create mode 100644 coin/provisioning/qtci-windows-8-x86_64/01-windows_removethemall.ps1 create mode 100644 coin/provisioning/qtci-windows-8-x86_64/python.ps1 diff --git a/coin/provisioning/common/01-windows_removethemall.ps1 b/coin/provisioning/common/01-windows_removethemall.ps1 new file mode 100644 index 00000000..8285ddae --- /dev/null +++ b/coin/provisioning/common/01-windows_removethemall.ps1 @@ -0,0 +1,61 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the test suite of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL21$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see http://www.qt.io/terms-conditions. For further +## information use the contact form at http://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 or version 3 as published by the Free +## Software Foundation and appearing in the file LICENSE.LGPLv21 and +## LICENSE.LGPLv3 included in the packaging of this file. Please review the +## following information to ensure the GNU Lesser General Public License +## requirements will be met: https://www.gnu.org/licenses/lgpl.html and +## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## As a special exception, The Qt Company gives you certain additional +## rights. These rights are described in The Qt Company LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## $QT_END_LICENSE$ +## +############################################################################# + +Function Remove { +Param ( + [string]$1 + ) + If (Test-Path $1){ + echo "Remove $1" + Remove-Item -Recurse -Force $1 + }Else{ + echo "'$1' does not exists or already removed !!" + } + +} + +Function Remove-Path { + Param ( + [string]$Path + ) + echo "Remove $path from Path" + $name = "Path" + $value = ([System.Environment]::GetEnvironmentVariable("Path").Split(";") | ? {$_ -ne "$path"}) -join ";" + $type = "Machine" + [System.Environment]::SetEnvironmentVariable($name,$value,$type) +} + +# Remove Python +Remove C:\Python27 +Remove-Path C:\python27\scripts +Remove-Path C:\python27 diff --git a/coin/provisioning/common/helpers.ps1 b/coin/provisioning/common/helpers.ps1 index d7b957f3..0e684452 100644 --- a/coin/provisioning/common/helpers.ps1 +++ b/coin/provisioning/common/helpers.ps1 @@ -29,3 +29,32 @@ function Extract-Zip $destinationFolder = $shell.Namespace($Destination) $destinationFolder.CopyHere($zipfile.Items(), 16) } + +function BadParam +{ + Param ([string]$Description) + throw("You must specify $Description") +} + +function Download +{ + Param ( + [string] $OfficialUrl = $(BadParam("the official download URL")), + [string] $CachedUrl = $(BadParam("the locally cached URL")), + [string] $Destination = $(BadParam("a download target location")) + ) + try { + Invoke-WebRequest -UseBasicParsing $CachedUrl -OutFile $Destination + } catch { + Invoke-WebRequest -UseBasicParsing $OfficialUrl -OutFile $Destination + } +} + +function Add-Path +{ + Param ( + [string]$Path + ) + echo "Adding $Path to Path" + [Environment]::SetEnvironmentVariable("Path", $env:Path + ";$Path", [EnvironmentVariableTarget]::Machine) +} diff --git a/coin/provisioning/common/python.ps1 b/coin/provisioning/common/python.ps1 new file mode 100644 index 00000000..39d8146d --- /dev/null +++ b/coin/provisioning/common/python.ps1 @@ -0,0 +1,64 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the test suite of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL21$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see http://www.qt.io/terms-conditions. For further +## information use the contact form at http://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 or version 3 as published by the Free +## Software Foundation and appearing in the file LICENSE.LGPLv21 and +## LICENSE.LGPLv3 included in the packaging of this file. Please review the +## following information to ensure the GNU Lesser General Public License +## requirements will be met: https://www.gnu.org/licenses/lgpl.html and +## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## As a special exception, The Qt Company gives you certain additional +## rights. These rights are described in The Qt Company LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## $QT_END_LICENSE$ +## +############################################################################# + +. "$PSScriptRoot\helpers.ps1" + +# This script installs Python $version. +# Python is required for building Qt 5 from source. + +$version = "2.7.10" +$package = "C:\Windows\temp\python-$version.msi" + +# check bit version +if ([System.Environment]::Is64BitProcess -eq $TRUE) { + $externalUrl = "https://www.python.org/ftp/python/$version/python-$version.amd64.msi" + $internalUrl = "http://ci-files01-hki.ci.local/input/windows/python-$version.amd64.msi" + $sha1 = "f3a474f6ab191f9b43034c0fb5c98301553775d4" +} +else { + $externalUrl = "https://www.python.org/ftp/python/$version/python-$version.msi" + $internalUrl = "http://ci-files01-hki.ci.local/input/windows/python-$version.msi" + $sha1 = "9e62f37407e6964ee0374b32869b7b4ab050d12a" +} + +echo "Fetching from URL..." +Download $externalUrl $internalUrl $package +Verify-Checksum $package $sha1 +echo "Installing $package..." +cmd /c "$package /q" +# 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'..." +(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 +Add-Path $path diff --git a/coin/provisioning/qtci-windows-10-x86/01-windows_removethemall.ps1 b/coin/provisioning/qtci-windows-10-x86/01-windows_removethemall.ps1 new file mode 100644 index 00000000..3bb0af0e --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86/01-windows_removethemall.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\01-windows_removethemall.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86/python.ps1 b/coin/provisioning/qtci-windows-10-x86/python.ps1 new file mode 100644 index 00000000..5f8aa2f8 --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86/python.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\python.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86_64/01-windows_removethemall.ps1 b/coin/provisioning/qtci-windows-10-x86_64/01-windows_removethemall.ps1 new file mode 100644 index 00000000..3bb0af0e --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86_64/01-windows_removethemall.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\01-windows_removethemall.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86_64/python.ps1 b/coin/provisioning/qtci-windows-10-x86_64/python.ps1 new file mode 100644 index 00000000..5f8aa2f8 --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86_64/python.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\python.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86/01-windows_removethemall.ps1 b/coin/provisioning/qtci-windows-7-x86/01-windows_removethemall.ps1 new file mode 100644 index 00000000..3bb0af0e --- /dev/null +++ b/coin/provisioning/qtci-windows-7-x86/01-windows_removethemall.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\01-windows_removethemall.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86/python.ps1 b/coin/provisioning/qtci-windows-7-x86/python.ps1 new file mode 100644 index 00000000..5f8aa2f8 --- /dev/null +++ b/coin/provisioning/qtci-windows-7-x86/python.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\python.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86/01-windows_removethemall.ps1 b/coin/provisioning/qtci-windows-8-x86/01-windows_removethemall.ps1 new file mode 100644 index 00000000..3bb0af0e --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86/01-windows_removethemall.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\01-windows_removethemall.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86/python.ps1 b/coin/provisioning/qtci-windows-8-x86/python.ps1 new file mode 100644 index 00000000..5f8aa2f8 --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86/python.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\python.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86_64/01-windows_removethemall.ps1 b/coin/provisioning/qtci-windows-8-x86_64/01-windows_removethemall.ps1 new file mode 100644 index 00000000..3bb0af0e --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86_64/01-windows_removethemall.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\01-windows_removethemall.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86_64/python.ps1 b/coin/provisioning/qtci-windows-8-x86_64/python.ps1 new file mode 100644 index 00000000..5f8aa2f8 --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86_64/python.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\python.ps1" -- cgit v1.2.3