Provisioning: Install emsdk using emsdk.git

This will reduce the manual work when updating emsdk version
This requires also python certificates to be installed

Change-Id: Id33d73f67f3312a27e9660522e7ca7ce17a89dbc
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
(cherry picked from commit 7184b6b7b0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Heikki Halmet
2021-09-21 11:56:16 +03:00
committed by Qt Cherry-pick Bot
parent eca2eb1956
commit 034eb3d080
4 changed files with 31 additions and 121 deletions

View File

@@ -61,5 +61,7 @@ SetEnvVar "PIP3_PATH" "/Library/Frameworks/Python.framework/Versions/3.9/bin"
/Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 wheel --wheel-dir $HOME/python3-wheels -r ${BASH_SOURCE%/*}/../shared/requirements.txt
SetEnvVar "PYTHON3_WHEEL_CACHE" "$HOME/python3-wheels"
echo "python3 = 3.9.6" >> ~/versions.txt
# Install Python certificates. Required at least for emsdk installation
open /Applications/Python\ 3.9/Install\ Certificates.command
echo "python3 = 3.9.6" >> ~/versions.txt

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
#############################################################################
##
## Copyright (C) 2019 The Qt Company Ltd.
## Copyright (C) 2021 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -32,66 +32,29 @@
##
#############################################################################
# shellcheck source=./InstallFromCompressedFileFromURL.sh
source "${BASH_SOURCE%/*}/InstallFromCompressedFileFromURL.sh"
# shellcheck source=./SetEnvVar.sh
source "${BASH_SOURCE%/*}/SetEnvVar.sh"
# shellcheck source=./DownloadURL.sh
source "${BASH_SOURCE%/*}/DownloadURL.sh"
version="2.0.14"
versionTag="fc5562126762ab26c4757147a3b4c24e85a7289e"
versionNode="v14.15.5"
urlCache="http://ci-files01-hki.intra.qt.io/input/emsdk"
targetFolder="/opt/emsdk"
# cross-platform emscripten SDK
urlEmscriptenExternal="https://github.com/emscripten-core/emscripten/archive/$version.tar.gz"
urlEmscriptenCache="$urlCache/emscripten.$version.tar.gz"
sha1Emscripten="5fbdca8ed238b90ab8c3656831fcc5eb1ce08c58"
mkdir -p /opt
cd /opt
sudo git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
sudo ./emsdk install $version
sudo ./emsdk activate $version
# platform-specific toolchain and node binaries. urls obtained from "emsdk install"
if uname -a |grep -q Darwin; then
urlWasmBinariesExternal="https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/$versionTag/wasm-binaries.tbz2"
urlWasmBinariesCache="$urlCache/macos/wasm-binaries.$version.tbz2"
sha1WasmBinaries="86dc16b299543cf593abc6f0137f8d0d723baddb"
urlNodeBinariesExternal="https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/node-$versionNode-darwin-x64.tar.gz"
urlNodeBinariesCache="$urlCache/mac/node-$versionNode-darwin-x64.tar.gz"
sha1NodeBinaries="6db16d024ea9e5f2ebdd0c1ef07ea67c2004ce93"
pathNodeExecutable="node-$versionNode-darwin-x64/bin/node"
else
urlWasmBinariesExternal="https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/$versionTag/wasm-binaries.tbz2"
urlWasmBinariesCache="$urlCache/linux/wasm-binaries.$version.tbz2"
sha1WasmBinaries="9724185c06c461edec3495e37e034066479b9ccf"
urlNodeBinariesExternal="https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/node-$versionNode-linux-x64.tar.xz"
urlNodeBinariesCache="$urlCache/linux/node-$versionNode-linux-x64.tar.xz"
sha1NodeBinaries="ca7ce363ceaf71b65e85243a71252c20cfd97982"
pathNodeExecutable="node-$versionNode-linux-x64/bin/node"
fi
sudo mkdir "$targetFolder"
InstallFromCompressedFileFromURL "$urlEmscriptenCache" "$urlEmscriptenExternal" "$sha1Emscripten" "$targetFolder" ""
InstallFromCompressedFileFromURL "$urlWasmBinariesCache" "$urlWasmBinariesExternal" "$sha1WasmBinaries" "$targetFolder" ""
InstallFromCompressedFileFromURL "$urlNodeBinariesCache" "$urlNodeBinariesExternal" "$sha1NodeBinaries" "$targetFolder" ""
sudo chmod -R a+rwx "$targetFolder"
echo "Writing $targetFolder/.emscripten"
cat <<EOM >"$targetFolder/.emscripten"
emsdk_path = '$targetFolder'
EMSCRIPTEN_ROOT = emsdk_path + '/emscripten-$version'
LLVM_ROOT = emsdk_path + '/install/bin'
BINARYEN_ROOT = emsdk_path + '/install'
NODE_JS = emsdk_path + '/$pathNodeExecutable'
TEMP_DIR = '/tmp'
EOM
SetEnvVar "PATH" "\"\$PATH:$targetFolder/emscripten-$version/\""
SetEnvVar "EMSCRIPTEN" "$targetFolder/emscripten-$version"
SetEnvVar "EMSDK" "$targetFolder"
SetEnvVar "EMSDK_NODE" "$targetFolder/$pathNodeExecutable"
SetEnvVar "PATH" "\"\$PATH:/opt/emsdk/emscripten-$version/\""
SetEnvVar "EMSCRIPTEN" "/opt/emsdk/emscripten-$version"
SetEnvVar "EMSDK" "/opt/emsdk"
SetEnvVar "EMSDK_NODE" "/opt/emsdk/$pathNodeExecutable"
echo "Emsdk = $version" >> ~/versions.txt

View File

@@ -1,6 +1,6 @@
############################################################################
##
## Copyright (C) 2019 The Qt Company Ltd.
## Copyright (C) 2021 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -38,83 +38,28 @@
$version = "2.0.14"
$versionTag="fc5562126762ab26c4757147a3b4c24e85a7289e"
$versionNode = "14.15.5"
$versionWinPython = "3.7.4"
$versionJre = "8_update_152"
$versionWinPython = "3.9.2-1"
$versionJre = "8.152"
$urlEmscripten = "https://storage.googleapis.com/webassembly/emscripten-releases-builds"
# cross-platform emscripten SDK
$urlEmscriptenExternal="https://github.com/emscripten-core/emscripten/archive/$version.zip"
$urlCache = "http://ci-files01-hki.intra.qt.io/input/emsdk"
$urlEmscriptenCache="$urlCache/emscripten.$version.zip"
$urlWasmBinariesExternal="$urlEmscripten/win/$versionTag/wasm-binaries.zip"
$urlWasmBinariesCache="$urlCache/windows/wasm-binaries.$version.zip"
$sha1WasmBinaries="a6f3f49df50fe7c8a0e61065b80fd885b8266bf3"
$urlOfficialNode = "$urlEmscripten/deps/node-v$versionNode-win-x64.zip"
$urlCacheNode = "$urlCache/windows/node-v$versionNode-win-x64.zip"
$sha1Node = "7df0af8aa3c128cff43d77dd6f3a163d405d0469"
$urlOfficialWinPython = "$urlEmscripten/deps/python-$versionWinPython-embed-amd64-patched.zip"
$urlCacheWinPython = "$urlCache/windows/python-$versionWinPython-embed-amd64-patched.zip"
$sha1WinPython = "27C5A465390167FC03F3DD9075E3FDAAD9FBE104"
$urlOfficialProtableJre = "$urlEmscripten/deps/portable_jre_${versionJre}_64bit.zip"
$urlCacheProtableJre = "$urlCache/windows/portable_jre_${versionJre}_64bit.zip"
$sha1ProtableJre = "6830524ec8b16742f956897abb6b6f5ef890a1c2"
# Make sure python is in the path
Prepend-Path "C:\Python27"
cd "C:\\Utils"
C:\PROGRA~1\Git\bin\git clone https://github.com/emscripten-core/emsdk.git
$installLocationEmsdk = "C:\\Utils\\emsdk"
$temp = "C:\\Windows\\Temp"
function Install {
Param (
[string] $urlOfficial = $(BadParam("Official url path")),
[string] $urlCache = $(BadParam("Cached url path")),
[string] $sha1 = $(BadParam("SHA1 checksum of the file")),
[string] $location = $(BadParam("Download location")),
[string] $installLocation = $(BadParam("Install location"))
)
Download $urlOfficial $urlCache $location
Verify-Checksum $location $sha1
Extract-7Zip $location $installLocation
}
New-Item -ItemType directory -Force -Path "$installLocationEmsdk"
Install $urlWasmBinariesExternal $urlWasmBinariesCache $sha1WasmBinaries "$temp\wasm-binaries.$version.zip" "$installLocationEmsdk\emscripten-llvm-e$version"
Install $urlOfficialNode $urlCacheNode $sha1Node "$temp\node-v$versionNode-win-x64.zip" "$installLocationEmsdk"
Install $urlOfficialWinPython $urlCacheWinPython $sha1WinPython "$temp\python-$versionWinPython-embed-amd64-patched.zip" "$installLocationEmsdk\python-$versionWinPython-embed-amd64-patched"
Install $urlOfficialProtableJre $urlCacheProtableJre $sha1ProtableJre "$temp\portable_jre_$versionJre_64bit.zip" "$installLocationEmsdk"
cd $installLocationEmsdk\emscripten-llvm-e$version\install\emscripten
"emsdk_path = '$installLocationEmsdk'"| Out-File '.emscripten' -Append -Encoding ascii
"LLVM_ROOT = emsdk_path + '/emscripten-llvm-e$version/install/bin'" | Out-File '.emscripten' -Append -Encoding ascii
"BINARYEN_ROOT = emsdk_path + '/emscripten-llvm-e$version/install'" | Out-File '.emscripten' -Append -Encoding ascii
"PYTHON = emsdk_path + '/python-$versionWinPython-embed-amd64-patched/python.exe'" | Out-File '.emscripten' -Append -Encoding ascii
"NODE_JS = emsdk_path + '/node-v$versionNode-win-x64/bin/node.exe'" | Out-File '.emscripten' -Append -Encoding ascii
"EMSCRIPTEN_ROOT = emsdk_path +'' " | Out-File '.emscripten' -Append -Encoding ascii
"JAVA = emsdk_path + '/Java64'" | Out-File '.emscripten' -Append -Encoding ascii
"TEMP_DIR = '/tmp'" | Out-File '.emscripten' -Append -Encoding ascii
"COMPILER_ENGINE = NODE_JS" | Out-File '.emscripten' -Append -Encoding ascii
"JS_ENGINES = [NODE_JS]" | Out-File '.emscripten' -Append -Encoding ascii
Set-EnvironmentVariable "EMSDK" "$installLocationEmsdk\emscripten-llvm-e$version\install\emscripten"
Set-EnvironmentVariable "EM_CONFIG" "$installLocationEmsdk\emscripten-llvm-e$version\install\emscripten\.emscripten"
Set-EnvironmentVariable "EMSDK_CACHE" "$installLocationEmsdk\emscripten-llvm-e$version\install\emscripten\cache"
Set-EnvironmentVariable "EMSDK_NODE" "$installLocationEmsdk\node$versionNode-win-x64\bin\node.exe"
Set-EnvironmentVariable "EMSDK_PYTHON" "$installLocationEmsdk\python-$versionWinPython-embed-amd64-patched\python.exe"
Set-EnvironmentVariable "EMSDK_JAVA_HOME" "$installLocationEmsdk\java64"
Set-EnvironmentVariable "EMSDK_PATH" "$installLocationEmsdk\emscripten-llvm-e$version\install\emscripten;$installLocationEmsdk\node$versionNode-win-x64\bin;$installLocationEmsdk\emscripten-llvm-e$version\install\bin;$installLocationEmsdk\python-$versionWinPython-embed-amd64-patched;$installLocationEmsdk\java64\bin;$PATH"
cd $installLocationEmsdk
.\emsdk install $version
.\emsdk activate $version
Set-EnvironmentVariable "EMSDK" "$installLocationEmsdk"
Set-EnvironmentVariable "EM_CONFIG" "$installLocationEmsdk\.emscripten"
Set-EnvironmentVariable "EMSDK_NODE" "$installLocationEmsdk\node\${versionNode}_64bit\bin\node.exe"
Set-EnvironmentVariable "EMSDK_PYTHON" "$installLocationEmsdk\python\${versionWinPython}_64bit\python.exe"
Set-EnvironmentVariable "EMSDK_JAVA_HOME" "$installLocationEmsdk\java\${versionJre}_64bit"
Set-EnvironmentVariable "EMSDK_PATH" "$installLocationEmsdk;$installLocationEmsdk\node\${versionNode}_64bit\bin;$installLocationEmsdk\upstream\emscripten;$PATH"
Add-Path "$env:EMSDK_PATH"
Write-Output "emsdk = $version" >> ~/versions.txt
Write-Output "emsdk llvm = $version" >> ~/versions.txt
Write-Output "emsdk NodeJs = $versionNode" >> ~/versions.txt
Write-Output "emsdk WinPython 64bit = $versionWinPython" >> ~/versions.txt
Write-Output "emsdk portable jre = $versionJre" >> ~/versions.txt

View File

@@ -1,6 +1,6 @@
#############################################################################
##
## Copyright (C) 2018 The Qt Company Ltd.
## Copyright (C) 2021 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.