Install python3 on all platforms
authorSimo Fält <simo.falt@qt.io>
Wed, 26 Jul 2017 07:19:45 +0000 (10:19 +0300)
committerSimon Hausmann <simon.hausmann@qt.io>
Wed, 30 Aug 2017 19:57:54 +0000 (19:57 +0000)
Python3 is required in 5.6 by pyside-setup.

Task-number: QTAUTO-345
Change-Id: If11ca425fa08cce8a518710ded0a6ec58159343d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
(cherry picked from commit a5f3f8ed482d314d092e1a6ddc5568839bb59c74)
(cherry picked from commit a7658388892bc70c3c5f3a6f6e31639ef5b766d1)
(cherry picked from commit 1859f9b26ce0177cb83e917148b10ff08bb25db7)

18 files changed:
coin/provisioning/common/InstallPKGFromURL.sh [new file with mode: 0644]
coin/provisioning/common/python3.ps1 [new file with mode: 0644]
coin/provisioning/common/python3.sh [new file with mode: 0755]
coin/provisioning/common/vc_redist.ps1 [new file with mode: 0644]
coin/provisioning/qtci-linux-RHEL-6.6-x86_64/08-pythondev.sh
coin/provisioning/qtci-linux-Ubuntu-14.04-x86_64/08-pythondev.sh
coin/provisioning/qtci-osx-10.10-x86_64/025-python3.sh [new file with mode: 0644]
coin/provisioning/qtci-osx-10.11-x86_64/025-python3.sh [new file with mode: 0644]
coin/provisioning/qtci-osx-10.8-x86_64/025-python3.sh [new file with mode: 0644]
coin/provisioning/qtci-osx-10.9-x86_64/025-python3.sh [new file with mode: 0644]
coin/provisioning/qtci-windows-10-x86/python3.ps1 [new file with mode: 0644]
coin/provisioning/qtci-windows-10-x86_64/python3.ps1 [new file with mode: 0644]
coin/provisioning/qtci-windows-7-x86/07-vc_redist.ps1 [new file with mode: 0644]
coin/provisioning/qtci-windows-7-x86/python3.ps1 [new file with mode: 0644]
coin/provisioning/qtci-windows-8-x86/07-vc_redist.ps1 [new file with mode: 0644]
coin/provisioning/qtci-windows-8-x86/python3.ps1 [new file with mode: 0644]
coin/provisioning/qtci-windows-8-x86_64/07-vc_redist.ps1 [new file with mode: 0644]
coin/provisioning/qtci-windows-8-x86_64/python3.ps1 [new file with mode: 0644]

diff --git a/coin/provisioning/common/InstallPKGFromURL.sh b/coin/provisioning/common/InstallPKGFromURL.sh
new file mode 100644 (file)
index 0000000..c00b646
--- /dev/null
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+#############################################################################
+##
+## Copyright (C) 2017 The Qt Company Ltd.
+## Contact: http://www.qt.io/licensing/
+##
+## This file is part of the provisioning scripts 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$
+##
+#############################################################################
+
+# shellcheck source=try_catch.sh
+source "${BASH_SOURCE%/*}/try_catch.sh"
+
+ExceptionCreateTmpFile=100
+ExceptionDownloadPrimaryUrl=101
+ExceptionDownloadAltUrl=102
+ExceptionSHA1=103
+ExceptionInstallerPKG=104
+ExceptionDeleteTmpFile=105
+
+
+function InstallPKGFromURL {
+    url=$1
+    url_alt=$2
+    expectedSha1=$3
+    targetDirectory=$4
+
+    try
+    (
+        echo "Creating temporary file"
+        targetFile=$(mktemp "$TMPDIR$(uuidgen).pkg") || trow $ExceptionCreateTmpFile
+        try
+        (
+            echo "Downloading PKG from primary URL '$url'"
+            curl --fail -L --retry 5 --retry-delay 5 -o "$targetFile" "$url" || throw $ExceptionDownloadPrimaryUrl
+        )
+        catch || {
+            case $ex_code in
+                $ExceptionDownloadPrimaryUrl)
+                    echo "Failed to download '$url' multiple times"
+                    echo "Downloading PKG from alternative URL '$url_alt'"
+                    curl --fail -L --retry 5 --retry-delay 5 -o "$targetFile" "$url_alt" || throw $ExceptionDownloadAltUrl
+                ;;
+            esac
+        }
+        echo "Checking SHA1 on PKG '$targetFile'"
+        echo "$expectedSha1 *$targetFile" > $targetFile.sha1
+        /usr/bin/shasum --check $targetFile.sha1 || throw $ExceptionSHA1
+        echo "Run installer on PKG"
+        sudo installer -package "$targetFile" -target "$targetDirectory" || throw $ExceptionInstallerPKG
+        echo "Removing file '$targetFile'"
+        rm "$targetFile" || throw $ExceptionDeleteTmpFile
+    )
+
+    catch || {
+        case $ex_code in
+            $ExceptionCreateTmpFile)
+                echo "Failed to create temporary file"
+                exit 1;
+            ;;
+            $ExceptionDownloadAltUrl)
+                echo "Failed downloading PKG from primary and alternative URLs"
+                exit 1;
+            ;;
+            $ExceptionSHA1)
+                echo "Failed to check sha1sum."
+                exit 1;
+            ;;
+            $ExceptionInstallerPKG)
+                echo "Failed running installer on PKG."
+                exit 1;
+            ;;
+            $ExceptionDeleteTmpFile)
+                echo "Failed deleting temporary file."
+                exit 1;
+            ;;
+        esac
+    }
+}
diff --git a/coin/provisioning/common/python3.ps1 b/coin/provisioning/common/python3.ps1
new file mode 100644 (file)
index 0000000..3c56587
--- /dev/null
@@ -0,0 +1,70 @@
+#############################################################################
+##
+## Copyright (C) 2017 The Qt Company Ltd.
+## Copyright (C) 2017 Pelagicore AG
+## 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$
+##
+#############################################################################
+
+param([Int32]$archVer=32)
+. "$PSScriptRoot\helpers.ps1"
+
+# This script installs Python $version.
+# Python3 is required for building some qt modules.
+
+$version = "3.6.1"
+$package = "C:\Windows\temp\python-$version.exe"
+$install_path = "C:\Python36"
+
+# check bit version
+if ( $archVer -eq 64 ) {
+    echo "Running in 64 bit system"
+    $externalUrl = "https://www.python.org/ftp/python/$version/python-$version-amd64.exe"
+    $internalUrl = "http://ci-files01-hki.ci.local/input/windows/python-$version-amd64.exe"
+    $sha1 = "bf54252c4065b20f4a111cc39cf5215fb1edccff"
+}
+else {
+    $externalUrl = "https://www.python.org/ftp/python/$version/python-$version.exe"
+    $internalUrl = "http://ci-files01-hki.ci.local/input/windows/python-$version.exe"
+    $sha1 = "76c50b747237a0974126dd8b32ea036dd77b2ad1"
+}
+
+echo "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
+
+[Environment]::SetEnvironmentVariable("PYTHON3_PATH", "$install_path", [EnvironmentVariableTarget]::Machine)
+[Environment]::SetEnvironmentVariable("PIP3_PATH", "$install_path\Scripts", [EnvironmentVariableTarget]::Machine)
+
+# Install python virtual env
+cmd /c "$install_path\Scripts\pip3.exe install virtualenv"
diff --git a/coin/provisioning/common/python3.sh b/coin/provisioning/common/python3.sh
new file mode 100755 (executable)
index 0000000..56e8238
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+#############################################################################
+##
+## Copyright (C) 2017 The Qt Company Ltd.
+## Copyright (C) 2017 Pelagicore AG
+## Contact: http://www.qt.io/licensing/
+##
+## This file is part of the provisioning scripts 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$
+##
+#############################################################################
+
+# This script installs python3
+
+source "${BASH_SOURCE%/*}/InstallPKGFromURL.sh"
+
+PrimaryUrl="http://ci-files01-hki.ci.local/input/mac/python-3.6.1-macosx10.6.pkg"
+AltUrl="https://www.python.org/ftp/python/3.6.1/python-3.6.1-macosx10.6.pkg"
+SHA1="ae0c749544c2d573c3cc29c4c2d7d9a595db28f9"
+DestDir="/"
+
+InstallPKGFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$DestDir"
+
+/Library/Frameworks/Python.framework/Versions/3.6/bin/pip3 install virtualenv
+
+echo "export PYTHON3_PATH=/Library/Frameworks/Python.framework/Versions/3.6/bin" >> ~/.bashrc
+echo "export PIP3_PATH=/Library/Frameworks/Python.framework/Versions/3.6/bin" >> ~/.bashrc
+echo "python3 = 3.6.1" >> ~/versions.txt
diff --git a/coin/provisioning/common/vc_redist.ps1 b/coin/provisioning/common/vc_redist.ps1
new file mode 100644 (file)
index 0000000..9556766
--- /dev/null
@@ -0,0 +1,64 @@
+#############################################################################
+##
+## Copyright (C) 2017 The Qt Company Ltd.
+## Copyright (C) 2017 Pelagicore AG
+## 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$
+##
+#############################################################################
+
+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"
+    $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.ci.local/input/windows/vc_redist.x64.exe"
+    $sha1 = "3155cb0f146b927fcc30647c1a904cd162548c8c"
+}
+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.ci.local/input/windows/vc_redist.x86.exe"
+    $sha1 = "bfb74e498c44d3a103ca3aa2831763fb417134d1"
+}
+
+$package = "C:\Windows\temp\vc_redist.$arch.exe"
+
+echo "Fetching from URL..."
+Download $externalUrl $internalUrl $package
+Verify-Checksum $package $sha1
+echo "Installing $package..."
+cmd /c "$package /q"
+echo "Remove $package..."
+del $package
index b419f21..0003127 100644 (file)
@@ -2,3 +2,17 @@
 # version: provided by default Linux distribution repository
 # needed to build pyside
 sudo yum install -y python-devel python-virtualenv
+
+# install the EPEL repository which provides python3
+wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
+sudo rpm -Uvh epel-release-latest-6.noarch.rpm
+sudo rm -f epel-release-latest-6.noarch.rpm
+
+# install python3
+sudo yum install -y python34-devel
+
+# install pip3
+wget https://bootstrap.pypa.io/get-pip.py
+sudo python3 get-pip.py
+sudo rm -f get-pip.py
+sudo pip3 install virtualenv
index 205f598..d4cd60e 100644 (file)
@@ -3,4 +3,6 @@
 # needed to build pyside
 
 sudo apt-get update
-sudo apt-get install -y python-dev
+sudo apt-get install -y python-dev python3-dev python3-pip
+
+sudo pip3 install virtualenv
diff --git a/coin/provisioning/qtci-osx-10.10-x86_64/025-python3.sh b/coin/provisioning/qtci-osx-10.10-x86_64/025-python3.sh
new file mode 100644 (file)
index 0000000..cd4e3fd
--- /dev/null
@@ -0,0 +1 @@
+source "${BASH_SOURCE%/*}/../common/python3.sh"
diff --git a/coin/provisioning/qtci-osx-10.11-x86_64/025-python3.sh b/coin/provisioning/qtci-osx-10.11-x86_64/025-python3.sh
new file mode 100644 (file)
index 0000000..cd4e3fd
--- /dev/null
@@ -0,0 +1 @@
+source "${BASH_SOURCE%/*}/../common/python3.sh"
diff --git a/coin/provisioning/qtci-osx-10.8-x86_64/025-python3.sh b/coin/provisioning/qtci-osx-10.8-x86_64/025-python3.sh
new file mode 100644 (file)
index 0000000..cd4e3fd
--- /dev/null
@@ -0,0 +1 @@
+source "${BASH_SOURCE%/*}/../common/python3.sh"
diff --git a/coin/provisioning/qtci-osx-10.9-x86_64/025-python3.sh b/coin/provisioning/qtci-osx-10.9-x86_64/025-python3.sh
new file mode 100644 (file)
index 0000000..cd4e3fd
--- /dev/null
@@ -0,0 +1 @@
+source "${BASH_SOURCE%/*}/../common/python3.sh"
diff --git a/coin/provisioning/qtci-windows-10-x86/python3.ps1 b/coin/provisioning/qtci-windows-10-x86/python3.ps1
new file mode 100644 (file)
index 0000000..164fbe4
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\python3.ps1" 32
diff --git a/coin/provisioning/qtci-windows-10-x86_64/python3.ps1 b/coin/provisioning/qtci-windows-10-x86_64/python3.ps1
new file mode 100644 (file)
index 0000000..b0c2199
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\python3.ps1" 64
diff --git a/coin/provisioning/qtci-windows-7-x86/07-vc_redist.ps1 b/coin/provisioning/qtci-windows-7-x86/07-vc_redist.ps1
new file mode 100644 (file)
index 0000000..ad3d595
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\vc_redist.ps1" 32
diff --git a/coin/provisioning/qtci-windows-7-x86/python3.ps1 b/coin/provisioning/qtci-windows-7-x86/python3.ps1
new file mode 100644 (file)
index 0000000..164fbe4
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\python3.ps1" 32
diff --git a/coin/provisioning/qtci-windows-8-x86/07-vc_redist.ps1 b/coin/provisioning/qtci-windows-8-x86/07-vc_redist.ps1
new file mode 100644 (file)
index 0000000..ad3d595
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\vc_redist.ps1" 32
diff --git a/coin/provisioning/qtci-windows-8-x86/python3.ps1 b/coin/provisioning/qtci-windows-8-x86/python3.ps1
new file mode 100644 (file)
index 0000000..164fbe4
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\python3.ps1" 32
diff --git a/coin/provisioning/qtci-windows-8-x86_64/07-vc_redist.ps1 b/coin/provisioning/qtci-windows-8-x86_64/07-vc_redist.ps1
new file mode 100644 (file)
index 0000000..6070c80
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\vc_redist.ps1" 64
diff --git a/coin/provisioning/qtci-windows-8-x86_64/python3.ps1 b/coin/provisioning/qtci-windows-8-x86_64/python3.ps1
new file mode 100644 (file)
index 0000000..b0c2199
--- /dev/null
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\python3.ps1" 64