Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions images/win/Windows2016-Azure.json
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,14 @@
"{{ template_dir }}/scripts/Installers/Install-AzureModules.ps1"
]
},
{
"type": "powershell",
"elevated_user": "SYSTEM",
"elevated_password": "",
"scripts":[
"{{ template_dir }}/scripts/Installers/Install-Msys2.ps1"
]
},
{
"type": "powershell",
"scripts":[
Expand Down Expand Up @@ -611,6 +619,12 @@
"{{ template_dir }}/scripts/Installers/Validate-AzureDevOpsCli.ps1"
]
},
{
"type": "powershell",
"scripts":[
"{{ template_dir }}/scripts/Installers/Validate-Msys2.ps1"
]
},
{
"type": "powershell",
"environment_vars":[
Expand Down
14 changes: 14 additions & 0 deletions images/win/Windows2019-Azure.json
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,14 @@
"{{ template_dir }}/scripts/Installers/Install-AzureModules.ps1"
]
},
{
"type": "powershell",
"elevated_user": "SYSTEM",
"elevated_password": "",
"scripts":[
"{{ template_dir }}/scripts/Installers/Install-Msys2.ps1"
]
},
{
"type": "powershell",
"scripts":[
Expand Down Expand Up @@ -598,6 +606,12 @@
"{{ template_dir }}/scripts/Installers/Validate-AzureDevOpsCli.ps1"
]
},
{
"type": "powershell",
"scripts":[
"{{ template_dir }}/scripts/Installers/Validate-Msys2.ps1"
]
},
{
"type": "powershell",
"environment_vars":[
Expand Down
76 changes: 76 additions & 0 deletions images/win/scripts/Installers/Install-Msys2.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
################################################################################
## File: Install-Msys2.ps1
## Desc: Install Msys2 and 64-bit gcc, cmake, & llvm (32-bit commented out)
################################################################################

# References
# https://github.com/msys2/MINGW-packages/blob/master/azure-pipelines.yml
# https://packages.msys2.org/group/

$origPath = $env:PATH
$gitPath = "C:\Program Files\Git"

Comment thread
vsafonkin marked this conversation as resolved.
# get info from https://sourceforge.net/projects/msys2/files/Base/x86_64/
$msys2Uri = "http://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20190524.tar.xz"
$msys2File = "$env:TEMP\msys2.tar.xz"

# Download the latest msys2 x86_64
Write-Host "Starting msys2 download"
(New-Object System.Net.WebClient).DownloadFile($msys2Uri, $msys2File)
Write-Host "Finished download"

$msys2FileU = "/$msys2File".replace(':', '')
Comment thread
vsafonkin marked this conversation as resolved.

$tar = "$gitPath\usr\bin\tar.exe"

# extract tar.xz to C:\
Write-Host "Starting msys2 extraction"
&$tar -Jxf $msys2FileU -C /c/
Remove-Item $msys2File
Write-Host "Finished extraction"

# Add msys2 bin tools folders to PATH
$env:PATH = "C:\msys64\mingw64\bin;C:\msys64\usr\bin;$origPath"

Write-Host "bash pacman-key --init"
bash.exe "pacman-key --init 2>&1"

Write-Host "bash pacman-key --populate msys2"
bash.exe "pacman-key --populate msys2 2>&1"

Write-Host "pacman --noconfirm -Syyuu"
pacman.exe -Syyuu --noconfirm
pacman.exe -Syuu --noconfirm

Write-Host "Install msys2 packages"
pacman.exe -S --noconfirm --needed --noprogressbar base-devel compression

# mingw package list
$tools = "___clang ___cmake ___llvm ___toolchain ___ragel"

# install mingw64 packages
Write-Host "Install mingw64 packages"
$pre = "mingw-w64-x86_64-"
pacman.exe -S --noconfirm --needed --noprogressbar $tools.replace('___', $pre).split(' ')

# install mingw32 packages
Write-Host "Install mingw32 packages"
$pre = "mingw-w64-i686-"
pacman.exe -S --noconfirm --needed --noprogressbar $tools.replace('___', $pre).split(' ')

# clean all packages to decrease image size
Write-Host "Clean packages"
pacman.exe -Scc --noconfirm

Write-Host "Installed mingw64 packages"
pacman.exe -Qs --noconfirm mingw-w64-x86_64-

Write-Host "Installed mingw32 packages"
pacman.exe -Qs --noconfirm mingw-w64-i686-

Write-Host "Installed msys2 packages"
pacman.exe -Qs --noconfirm

Write-Host "MSYS2 installation completed"

exit 0
57 changes: 57 additions & 0 deletions images/win/scripts/Installers/Validate-Msys2.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
################################################################################
## File: Validate-Msys2.ps1
## Desc: Validate Msys2
################################################################################

if (Get-Command -Name 'gcc')
{
Write-Host "gcc is successfully installed:"
gcc --version | Write-Host
}
else
{
Write-Host "gcc is not on PATH"
exit 1
}

if (Get-Command -Name 'g++')
{
Write-Host "g++ is successfully installed:"
g++ --version | Write-Host
}
else
{
Write-Host "g++ is not on PATH"
exit 1
}

if (Get-Command -Name 'make')
Comment thread
vsafonkin marked this conversation as resolved.
Outdated
{
Write-Host "make is successfully installed:"
make --version | Write-Host
}
else
{
Write-Host "make is not on PATH"
exit 1
}

# Adding description of the software to Markdown

# `gcc --version` gives output like:
# gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 5.3.0
# Copyright (C) 2015 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$SoftwareName = "MinGW"
$(gcc --version).Split([System.Environment]::NewLine)[0] -match "\d+\.\d+\.\d+$"
$minGwVersion = $matches[0]

$Description = @"
_Version:_ $minGwVersion<br/>
_Environment:_
* PATH: contains location of the MinGW 'bin' directory
"@

Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description