From d9500548f87a48aa9c11ea929496157f0edaa167 Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 26 Jul 2024 15:17:07 +0100 Subject: [PATCH] Update mingw in windows-2019 image --- .../windows/scripts/build/Install-Mingw64.ps1 | 85 +++++++------------ images/windows/toolsets/toolset-2019.json | 3 + 2 files changed, 32 insertions(+), 56 deletions(-) diff --git a/images/windows/scripts/build/Install-Mingw64.ps1 b/images/windows/scripts/build/Install-Mingw64.ps1 index 2d5279b098cc..17508964d68f 100644 --- a/images/windows/scripts/build/Install-Mingw64.ps1 +++ b/images/windows/scripts/build/Install-Mingw64.ps1 @@ -3,68 +3,41 @@ ## Desc: Install GNU tools for Windows ################################################################################ -if (Test-IsWin19) { - # If Windows 2019, install version 8.1.0 form sourceforge - $baseUrl = "https://sourceforge.net/projects/mingw-w64/files" - - $("mingw32", "mingw64") | ForEach-Object { - if ($_ -eq "mingw32") { - $url = "$baseUrl/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/dwarf/i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z/download" - $sha256sum = 'adb84b70094c0225dd30187ff995e311d19424b1eb8f60934c60e4903297f946' - } elseif ($_ -eq "mingw64") { - $url = "$baseUrl/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z/download" - $sha256sum = '853970527b5de4a55ec8ca4d3fd732c00ae1c69974cc930c82604396d43e79f8' - } else { - throw "Unknown architecture $_" - } - - $packagePath = Invoke-DownloadWithRetry $url - Test-FileChecksum -Path $packagePath -ExpectedSHA256Sum $sha256sum - Expand-7ZipArchive -Path $packagePath -DestinationPath "C:\" - - # Make a copy of mingw-make.exe to make.exe, which is a more discoverable name - # and so the same command line can be used on Windows as on macOS and Linux - $path = "C:\$_\bin\mingw32-make.exe" | Get-Item - Copy-Item -Path $path -Destination (Join-Path $path.Directory 'make.exe') +$version = (Get-ToolsetContent).mingw.version +$runtime = (Get-ToolsetContent).mingw.runtime + +$("mingw32", "mingw64") | ForEach-Object { + if ($_ -eq "mingw32") { + $arch = "i686" + $threads = "posix" + $exceptions = "dwarf" + } elseif ($_ -eq "mingw64") { + $arch = "x86_64" + $threads = "posix" + $exceptions = "seh" + } else { + throw "Unknown architecture $_" } - - Add-MachinePathItem "C:\mingw64\bin" - -} -if (Test-IsWin22) { - # If Windows 2022, install version specified in the toolset - $version = (Get-ToolsetContent).mingw.version - $runtime = (Get-ToolsetContent).mingw.runtime + if ($runtime) { + $runtimeSuffix = "$runtime-" + } - $("mingw32", "mingw64") | ForEach-Object { - if ($_ -eq "mingw32") { - $arch = "i686" - $threads = "posix" - $exceptions = "dwarf" - } elseif ($_ -eq "mingw64") { - $arch = "x86_64" - $threads = "posix" - $exceptions = "seh" - } else { - throw "Unknown architecture $_" - } + $url = Resolve-GithubReleaseAssetUrl ` + -Repo "niXman/mingw-builds-binaries" ` + -Version "$version" ` + -Asset "$arch-*-release-$threads-$exceptions-$runtimeSuffix*.7z" - $url = Resolve-GithubReleaseAssetUrl ` - -Repo "niXman/mingw-builds-binaries" ` - -Version "$version" ` - -Asset "$arch-*-release-$threads-$exceptions-$runtime-*.7z" + $packagePath = Invoke-DownloadWithRetry $url + Expand-7ZipArchive -Path $packagePath -DestinationPath "C:\" - $packagePath = Invoke-DownloadWithRetry $url - Expand-7ZipArchive -Path $packagePath -DestinationPath "C:\" + # Make a copy of mingw-make.exe to make.exe, which is a more discoverable name + # and so the same command line can be used on Windows as on macOS and Linux + $path = "C:\$_\bin\mingw32-make.exe" | Get-Item + Copy-Item -Path $path -Destination (Join-Path $path.Directory 'make.exe') +} - # Make a copy of mingw-make.exe to make.exe, which is a more discoverable name - # and so the same command line can be used on Windows as on macOS and Linux - $path = "C:\$_\bin\mingw32-make.exe" | Get-Item - Copy-Item -Path $path -Destination (Join-Path $path.Directory 'make.exe') - } +Add-MachinePathItem "C:\mingw64\bin" - Add-MachinePathItem "C:\mingw64\bin" -} Invoke-PesterTests -TestFile "Tools" -TestName "Mingw64" diff --git a/images/windows/toolsets/toolset-2019.json b/images/windows/toolsets/toolset-2019.json index 497f576c60f8..5d2fd99dee59 100644 --- a/images/windows/toolsets/toolset-2019.json +++ b/images/windows/toolsets/toolset-2019.json @@ -162,6 +162,9 @@ ] } }, + "mingw": { + "version": "8.5.0" + }, "MsysPackages": { "msys2": [ "base-devel",