Mercurial > hg
annotate contrib/install-windows-dependencies.ps1 @ 49680:40e24d82b513
delta-find: make sure we only use newer full snapshot as candidate
The current code does not needs to protect against this, as there are no older
snapshot in the current cache. However as we are getting ready to reuse this
cache from one revision to another, we need the code to protect itself about
what's coming.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 06 Nov 2022 17:55:55 -0500 |
parents | c809a77dfa1c |
children |
rev | line source |
---|---|
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 # install-dependencies.ps1 - Install Windows dependencies for building Mercurial |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 # |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 # Copyright 2019 Gregory Szorc <gregory.szorc@gmail.com> |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 # |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
7 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
8 # This script can be used to bootstrap a Mercurial build environment on |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
9 # Windows. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
10 # |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
11 # The script makes a lot of assumptions about how things should work. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
12 # For example, the install location of Python is hardcoded to c:\hgdev\*. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
13 # |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
14 # The script should be executed from a PowerShell with elevated privileges |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
15 # if you don't want to see a UAC prompt for various installers. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
16 # |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
17 # The script is tested on Windows 10 and Windows Server 2019 (in EC2). |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
18 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
19 $VS_BUILD_TOOLS_URL = "https://download.visualstudio.microsoft.com/download/pr/a1603c02-8a66-4b83-b821-811e3610a7c4/aa2db8bb39e0cbd23e9940d8951e0bc3/vs_buildtools.exe" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
20 $VS_BUILD_TOOLS_SHA256 = "911E292B8E6E5F46CBC17003BDCD2D27A70E616E8D5E6E69D5D489A605CAA139" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
21 |
45642
56281b75264a
contrib: install latest versions of Python
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44760
diff
changeset
|
22 $PYTHON37_x86_URL = "https://www.python.org/ftp/python/3.7.9/python-3.7.9.exe" |
56281b75264a
contrib: install latest versions of Python
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44760
diff
changeset
|
23 $PYTHON37_x86_SHA256 = "769bb7c74ad1df6d7d74071cc16a984ff6182e4016e11b8949b93db487977220" |
56281b75264a
contrib: install latest versions of Python
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44760
diff
changeset
|
24 $PYTHON37_X64_URL = "https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exe" |
56281b75264a
contrib: install latest versions of Python
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44760
diff
changeset
|
25 $PYTHON37_x64_SHA256 = "e69ed52afb5a722e5c56f6c21d594e85c17cb29f12f18bb69751cf1714e0f987" |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
26 |
47198
e768294a7182
contrib: update Python versions in Windows automation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
46353
diff
changeset
|
27 $PYTHON38_x86_URL = "https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe" |
e768294a7182
contrib: update Python versions in Windows automation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
46353
diff
changeset
|
28 $PYTHON38_x86_SHA256 = "ad07633a1f0cd795f3bf9da33729f662281df196b4567fa795829f3bb38a30ac" |
e768294a7182
contrib: update Python versions in Windows automation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
46353
diff
changeset
|
29 $PYTHON38_x64_URL = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe" |
e768294a7182
contrib: update Python versions in Windows automation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
46353
diff
changeset
|
30 $PYTHON38_x64_SHA256 = "7628244cb53408b50639d2c1287c659f4e29d3dfdb9084b11aed5870c0c6a48a" |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
31 |
49083
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
32 $PYTHON39_x86_URL = "https://www.python.org/ftp/python/3.9.12/python-3.9.12.exe" |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
33 $PYTHON39_x86_SHA256 = "3d883326f30ac231c06b33f2a8ea700a185c20bf98d01da118079e9134d5fd20" |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
34 $PYTHON39_X64_URL = "https://www.python.org/ftp/python/3.9.12/python-3.9.12-amd64.exe" |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
35 $PYTHON39_x64_SHA256 = "2ba57ab2281094f78fc0227a27f4d47c90d94094e7cca35ce78419e616b3cb63" |
45690
7a907388a4a5
contrib: install Python 3.9.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45689
diff
changeset
|
36 |
49083
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
37 $PYTHON310_x86_URL = "https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe" |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
38 $PYTHON310_x86_SHA256 = "97c37c53c7a826f5b00e185754ab2a324a919f7afc469b20764b71715c80041d" |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
39 $PYTHON310_X64_URL = "https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe" |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
40 $PYTHON310_x64_SHA256 = "a81fc4180f34e5733c3f15526c668ff55de096366f9006d8a44c0336704e50f1" |
48357
fc1ba19ec4a0
automation: support Python 3.10 on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48356
diff
changeset
|
41 |
49083
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
42 # PIP 22.0.4. |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
43 $PIP_URL = "https://github.com/pypa/get-pip/raw/38e54e5de07c66e875c11a1ebbdb938854625dd8/public/get-pip.py" |
1c00777702da
contrib: update python dependencies on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49082
diff
changeset
|
44 $PIP_SHA256 = "e235c437e5c7d7524fbce3880ca39b917a73dc565e0c813465b7a7a329bb279a" |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
45 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
46 $INNO_SETUP_URL = "http://files.jrsoftware.org/is/5/innosetup-5.6.1-unicode.exe" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
47 $INNO_SETUP_SHA256 = "27D49E9BC769E9D1B214C153011978DB90DC01C2ACD1DDCD9ED7B3FE3B96B538" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
48 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
49 $MINGW_BIN_URL = "https://osdn.net/frs/redir.php?m=constant&f=mingw%2F68260%2Fmingw-get-0.6.3-mingw32-pre-20170905-1-bin.zip" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
50 $MINGW_BIN_SHA256 = "2AB8EFD7C7D1FC8EAF8B2FA4DA4EEF8F3E47768284C021599BC7435839A046DF" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
51 |
49436
c809a77dfa1c
contrib: update Mercurial install in bootstrap environment
Gregory Szorc <gregory.szorc@gmail.com>
parents:
49083
diff
changeset
|
52 $MERCURIAL_WHEEL_FILENAME = "mercurial-6.1.4-cp39-cp39-win_amd64.whl" |
c809a77dfa1c
contrib: update Mercurial install in bootstrap environment
Gregory Szorc <gregory.szorc@gmail.com>
parents:
49083
diff
changeset
|
53 $MERCURIAL_WHEEL_URL = "https://files.pythonhosted.org/packages/82/86/fbcc4b552f6c1bdfdbbc5a68b0896a55ac3c6c0e8baf51394816bdc320bd/$MERCURIAL_WHEEL_FILENAME" |
c809a77dfa1c
contrib: update Mercurial install in bootstrap environment
Gregory Szorc <gregory.szorc@gmail.com>
parents:
49083
diff
changeset
|
54 $MERCURIAL_WHEEL_SHA256 = "ab578daec7c21786c668b0da2e71282a290d18010255719f78d0e55145020d46" |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
55 |
44760
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
56 $RUSTUP_INIT_URL = "https://static.rust-lang.org/rustup/archive/1.21.1/x86_64-pc-windows-gnu/rustup-init.exe" |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
57 $RUSTUP_INIT_SHA256 = "d17df34ba974b9b19cf5c75883a95475aa22ddc364591d75d174090d55711c72" |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
58 |
47883
feb1b2b8eeec
contrib: install PyOxidizer 0.17.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47814
diff
changeset
|
59 $PYOXIDIZER_URL = "https://github.com/indygreg/PyOxidizer/releases/download/pyoxidizer%2F0.17/PyOxidizer-0.17.0-x64.msi" |
feb1b2b8eeec
contrib: install PyOxidizer 0.17.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47814
diff
changeset
|
60 $PYOXIDIZER_SHA256 = "85c3bc21a18eb5e2db4dad87cca29accf725c7d59dd364a853ab5099c272024b" |
47202
0de5eefbe4b2
contrib: install PyOxidizer 0.16.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47199
diff
changeset
|
61 |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
62 # Writing progress slows down downloads substantially. So disable it. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
63 $progressPreference = 'silentlyContinue' |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
64 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
65 function Secure-Download($url, $path, $sha256) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
66 if (Test-Path -Path $path) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
67 Get-FileHash -Path $path -Algorithm SHA256 -OutVariable hash |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
68 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
69 if ($hash.Hash -eq $sha256) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
70 Write-Output "SHA256 of $path verified as $sha256" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
71 return |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
72 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
73 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
74 Write-Output "hash mismatch on $path; downloading again" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
75 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
76 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
77 Write-Output "downloading $url to $path" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
78 Invoke-WebRequest -Uri $url -OutFile $path |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
79 Get-FileHash -Path $path -Algorithm SHA256 -OutVariable hash |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
80 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
81 if ($hash.Hash -ne $sha256) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
82 Remove-Item -Path $path |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
83 throw "hash mismatch when downloading $url; got $($hash.Hash), expected $sha256" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
84 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
85 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
86 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
87 function Invoke-Process($path, $arguments) { |
47811
fb7d17496aca
contrib: log the command and args for every process installing windows deps
Matt Harbison <matt_harbison@yahoo.com>
parents:
47202
diff
changeset
|
88 echo "$path $arguments" |
fb7d17496aca
contrib: log the command and args for every process installing windows deps
Matt Harbison <matt_harbison@yahoo.com>
parents:
47202
diff
changeset
|
89 |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
90 $p = Start-Process -FilePath $path -ArgumentList $arguments -Wait -PassThru -WindowStyle Hidden |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
91 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
92 if ($p.ExitCode -ne 0) { |
49082
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
93 # If the MSI is already installed, ignore the error |
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
94 if ($p.ExitCode -eq 1638) { |
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
95 Write-Output "program already installed; continuing..." |
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
96 } |
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
97 else { |
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
98 throw "process exited non-0: $($p.ExitCode)" |
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
99 } |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
100 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
101 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
102 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
103 function Install-Python3($name, $installer, $dest, $pip) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
104 Write-Output "installing $name" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
105 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
106 # We hit this when running the script as part of Simple Systems Manager in |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
107 # EC2. The Python 3 installer doesn't seem to like per-user installs |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
108 # when running as the SYSTEM user. So enable global installs if executed in |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
109 # this mode. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
110 if ($env:USERPROFILE -eq "C:\Windows\system32\config\systemprofile") { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
111 Write-Output "running with SYSTEM account; installing for all users" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
112 $allusers = "1" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
113 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
114 else { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
115 $allusers = "0" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
116 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
117 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
118 Invoke-Process $installer "/quiet TargetDir=${dest} InstallAllUsers=${allusers} AssociateFiles=0 CompileAll=0 PrependPath=0 Include_doc=0 Include_launcher=0 InstallLauncherAllUsers=0 Include_pip=0 Include_test=0" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
119 Invoke-Process ${dest}\python.exe $pip |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
120 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
121 |
44760
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
122 function Install-Rust($prefix) { |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
123 Write-Output "installing Rust" |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
124 $Env:RUSTUP_HOME = "${prefix}\rustup" |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
125 $Env:CARGO_HOME = "${prefix}\cargo" |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
126 |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
127 Invoke-Process "${prefix}\assets\rustup-init.exe" "-y --default-host x86_64-pc-windows-msvc" |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
128 Invoke-Process "${prefix}\cargo\bin\rustup.exe" "target add i686-pc-windows-msvc" |
47199
b128a3ae98ef
contrib: upgrade Rust in Windows automation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47198
diff
changeset
|
129 Invoke-Process "${prefix}\cargo\bin\rustup.exe" "install 1.52.0" |
44760
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
130 Invoke-Process "${prefix}\cargo\bin\rustup.exe" "component add clippy" |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
131 } |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
132 |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
133 function Install-Dependencies($prefix) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
134 if (!(Test-Path -Path $prefix\assets)) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
135 New-Item -Path $prefix\assets -ItemType Directory |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
136 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
137 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
138 $pip = "${prefix}\assets\get-pip.py" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
139 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
140 Secure-Download $PYTHON37_x86_URL ${prefix}\assets\python37-x86.exe $PYTHON37_x86_SHA256 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
141 Secure-Download $PYTHON37_x64_URL ${prefix}\assets\python37-x64.exe $PYTHON37_x64_SHA256 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
142 Secure-Download $PYTHON38_x86_URL ${prefix}\assets\python38-x86.exe $PYTHON38_x86_SHA256 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
143 Secure-Download $PYTHON38_x64_URL ${prefix}\assets\python38-x64.exe $PYTHON38_x64_SHA256 |
45690
7a907388a4a5
contrib: install Python 3.9.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45689
diff
changeset
|
144 Secure-Download $PYTHON39_x86_URL ${prefix}\assets\python39-x86.exe $PYTHON39_x86_SHA256 |
7a907388a4a5
contrib: install Python 3.9.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45689
diff
changeset
|
145 Secure-Download $PYTHON39_x64_URL ${prefix}\assets\python39-x64.exe $PYTHON39_x64_SHA256 |
48357
fc1ba19ec4a0
automation: support Python 3.10 on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48356
diff
changeset
|
146 Secure-Download $PYTHON310_x86_URL ${prefix}\assets\python310-x86.exe $PYTHON310_x86_SHA256 |
fc1ba19ec4a0
automation: support Python 3.10 on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48356
diff
changeset
|
147 Secure-Download $PYTHON310_x64_URL ${prefix}\assets\python310-x64.exe $PYTHON310_x64_SHA256 |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
148 Secure-Download $PIP_URL ${pip} $PIP_SHA256 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
149 Secure-Download $VS_BUILD_TOOLS_URL ${prefix}\assets\vs_buildtools.exe $VS_BUILD_TOOLS_SHA256 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
150 Secure-Download $INNO_SETUP_URL ${prefix}\assets\InnoSetup.exe $INNO_SETUP_SHA256 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
151 Secure-Download $MINGW_BIN_URL ${prefix}\assets\mingw-get-bin.zip $MINGW_BIN_SHA256 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
152 Secure-Download $MERCURIAL_WHEEL_URL ${prefix}\assets\${MERCURIAL_WHEEL_FILENAME} $MERCURIAL_WHEEL_SHA256 |
44760
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
153 Secure-Download $RUSTUP_INIT_URL ${prefix}\assets\rustup-init.exe $RUSTUP_INIT_SHA256 |
47202
0de5eefbe4b2
contrib: install PyOxidizer 0.16.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47199
diff
changeset
|
154 Secure-Download $PYOXIDIZER_URL ${prefix}\assets\PyOxidizer.msi $PYOXIDIZER_SHA256 |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
155 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
156 Install-Python3 "Python 3.7 32-bit" ${prefix}\assets\python37-x86.exe ${prefix}\python37-x86 ${pip} |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
157 Install-Python3 "Python 3.7 64-bit" ${prefix}\assets\python37-x64.exe ${prefix}\python37-x64 ${pip} |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
158 Install-Python3 "Python 3.8 32-bit" ${prefix}\assets\python38-x86.exe ${prefix}\python38-x86 ${pip} |
49082
dd381b973efc
contrib: add a hint if the Windows dependency MSI is already installed
Matt Harbison <matt_harbison@yahoo.com>
parents:
48357
diff
changeset
|
159 Install-Python3 "Python 3.8 64-bit" ${prefix}\assets\python38-x64.exe ${prefix}\python38-x64 ${pip} |
45690
7a907388a4a5
contrib: install Python 3.9.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45689
diff
changeset
|
160 Install-Python3 "Python 3.9 32-bit" ${prefix}\assets\python39-x86.exe ${prefix}\python39-x86 ${pip} |
7a907388a4a5
contrib: install Python 3.9.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45689
diff
changeset
|
161 Install-Python3 "Python 3.9 64-bit" ${prefix}\assets\python39-x64.exe ${prefix}\python39-x64 ${pip} |
48357
fc1ba19ec4a0
automation: support Python 3.10 on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48356
diff
changeset
|
162 Install-Python3 "Python 3.10 32-bit" ${prefix}\assets\python310-x86.exe ${prefix}\python310-x86 ${pip} |
fc1ba19ec4a0
automation: support Python 3.10 on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48356
diff
changeset
|
163 Install-Python3 "Python 3.10 64-bit" ${prefix}\assets\python310-x64.exe ${prefix}\python310-x64 ${pip} |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
164 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
165 Write-Output "installing Visual Studio 2017 Build Tools and SDKs" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
166 Invoke-Process ${prefix}\assets\vs_buildtools.exe "--quiet --wait --norestart --nocache --channelUri https://aka.ms/vs/15/release/channel --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.Windows10SDK.17763 --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.Windows10SDK --add Microsoft.VisualStudio.Component.VC.140" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
167 |
47202
0de5eefbe4b2
contrib: install PyOxidizer 0.16.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47199
diff
changeset
|
168 Write-Output "installing PyOxidizer" |
0de5eefbe4b2
contrib: install PyOxidizer 0.16.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47199
diff
changeset
|
169 Invoke-Process msiexec.exe "/i ${prefix}\assets\PyOxidizer.msi /l* ${prefix}\assets\PyOxidizer.log /quiet" |
0de5eefbe4b2
contrib: install PyOxidizer 0.16.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47199
diff
changeset
|
170 |
44760
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
171 Install-Rust ${prefix} |
6a6c15cea1fa
contrib: install PyOxidizer in Linux and Windows environments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44740
diff
changeset
|
172 |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
173 Write-Output "installing Inno Setup" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
174 Invoke-Process ${prefix}\assets\InnoSetup.exe "/SP- /VERYSILENT /SUPPRESSMSGBOXES" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
175 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
176 Write-Output "extracting MinGW base archive" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
177 Expand-Archive -Path ${prefix}\assets\mingw-get-bin.zip -DestinationPath "${prefix}\MinGW" -Force |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
178 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
179 Write-Output "updating MinGW package catalogs" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
180 Invoke-Process ${prefix}\MinGW\bin\mingw-get.exe "update" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
181 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
182 Write-Output "installing MinGW packages" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
183 Invoke-Process ${prefix}\MinGW\bin\mingw-get.exe "install msys-base msys-coreutils msys-diffutils msys-unzip" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
184 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
185 # Construct a virtualenv useful for bootstrapping. It conveniently contains a |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
186 # Mercurial install. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
187 Write-Output "creating bootstrap virtualenv with Mercurial" |
47814
3b04e4746020
contrib: switch the Windows bootstrap environment to py3.9
Matt Harbison <matt_harbison@yahoo.com>
parents:
47813
diff
changeset
|
188 Invoke-Process "$prefix\python39-x64\python.exe" "-m venv ${prefix}\venv-bootstrap" |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
189 Invoke-Process "${prefix}\venv-bootstrap\Scripts\pip.exe" "install ${prefix}\assets\${MERCURIAL_WHEEL_FILENAME}" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
190 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
191 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
192 function Clone-Mercurial-Repo($prefix, $repo_url, $dest) { |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
193 Write-Output "cloning $repo_url to $dest" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
194 # TODO Figure out why CA verification isn't working in EC2 and remove |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
195 # --insecure. |
47814
3b04e4746020
contrib: switch the Windows bootstrap environment to py3.9
Matt Harbison <matt_harbison@yahoo.com>
parents:
47813
diff
changeset
|
196 Invoke-Process "${prefix}\venv-bootstrap\Scripts\python.exe" "${prefix}\venv-bootstrap\Scripts\hg clone --insecure $repo_url $dest" |
42023
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
197 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
198 # Mark repo as non-publishing by default for convenience. |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
199 Add-Content -Path "$dest\.hg\hgrc" -Value "`n[phases]`npublish = false" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
200 } |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
201 |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
202 $prefix = "c:\hgdev" |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
203 Install-Dependencies $prefix |
bf87d34a675c
contrib: PowerShell script to install development dependencies
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
204 Clone-Mercurial-Repo $prefix "https://www.mercurial-scm.org/repo/hg" $prefix\src |