mirror of
				https://github.com/go-delve/delve.git
				synced 2025-10-31 02:36:18 +08:00 
			
		
		
		
	 6aa54c5c9f
			
		
	
	6aa54c5c9f
	
	
	
		
			
			The version of mingw was pinned to 10.2.0 because mingw 11 started using DWARFv5, which wasn't supported by Go 1.17. We are now testing only 1.18 and 1.19 and both support DWARFv5 correctly.
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
| param (
 | |
|     [Parameter(Mandatory = $true)][string]$version,
 | |
|     [Parameter(Mandatory = $true)][string]$arch
 | |
| )
 | |
| 
 | |
| Set-MpPreference -DisableRealtimeMonitoring $true
 | |
| 
 | |
| # Install Chocolatey
 | |
| #Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
 | |
| 
 | |
| # Install MinGW.
 | |
| choco install -y mingw
 | |
| 
 | |
| # Install Procdump
 | |
| if (-Not(Test-Path "C:\procdump"))
 | |
| {
 | |
|     mkdir C:\procdump
 | |
|     Invoke-WebRequest -UserAgent wget -Uri https://download.sysinternals.com/files/Procdump.zip -OutFile C:\procdump\procdump.zip
 | |
|     &7z x -oC:\procdump\ C:\procdump\procdump.zip > $null
 | |
| }
 | |
| 
 | |
| $env:PATH += ";C:\procdump;C:\mingw64\bin"
 | |
| 
 | |
| function GetGo($version) {
 | |
|     $env:GOROOT = "C:\go\$version"
 | |
|     if (-Not(Test-Path $env:GOROOT))
 | |
|     {
 | |
|         $file = "$version.windows-$arch.zip"
 | |
|         $url = "https://dl.google.com/go/$file"
 | |
|         Invoke-WebRequest -UserAgent wget -Uri $url -OutFile $file
 | |
|         &7z x -oC:\go $file > $null
 | |
|         Move-Item -Path C:\go\go -Destination $env:GOROOT -force
 | |
|     }
 | |
| }
 | |
| 
 | |
| if ($version -eq "gotip") {
 | |
|     #Exit 0
 | |
|     $latest = Invoke-WebRequest -Uri https://golang.org/VERSION?m=text -UseBasicParsing | Select-Object -ExpandProperty Content
 | |
|     GetGo $latest
 | |
|     $env:GOROOT_BOOTSTRAP = $env:GOROOT
 | |
|     $env:GOROOT = "C:\go\go-tip"
 | |
|     Write-Host "Building Go with GOROOT_BOOTSTRAP $env:GOROOT_BOOTSTRAP"
 | |
|     if (-Not(Test-Path $env:GOROOT)) {
 | |
|         git clone https://go.googlesource.com/go C:\go\go-tip
 | |
|         Push-Location -Path C:\go\go-tip\src
 | |
|     } else {
 | |
|         Push-Location -Path C:\go\go-tip\src
 | |
|         git pull
 | |
|     }
 | |
|     .\make.bat
 | |
|     Pop-Location
 | |
| } else {
 | |
|     # Install Go
 | |
|     Write-Host "Finding latest patch version for $version"
 | |
|     $versions = Invoke-WebRequest -Uri 'https://golang.org/dl/?mode=json&include=all' -UseBasicParsing | foreach {$_.Content} | ConvertFrom-Json
 | |
|     $v = $versions | foreach {$_.version} | Select-String -Pattern "^$version($|\.)" | Sort-Object -Descending | Select-Object -First 1
 | |
|     if ($v -eq $null) {
 | |
|       $v = $versions | foreach {$_.version} | Select-String -Pattern "^$version(rc)" | Sort-Object -Descending | Select-Object -First 1
 | |
|     }
 | |
|     if ($v -eq $null) {
 | |
|       $v = $versions | foreach {$_.version} | Select-String -Pattern "^$version(beta)" | Sort-Object -Descending | Select-Object -First 1
 | |
|     }
 | |
|     Write-Host "Go $v on $arch"
 | |
|     GetGo $v
 | |
| }
 | |
| 
 | |
| $env:GOPATH = "C:\gopath"
 | |
| $env:PATH += ";$env:GOROOT\bin;$env:GOPATH\bin"
 | |
| Write-Host $env:PATH
 | |
| Write-Host $env:GOROOT
 | |
| Write-Host $env:GOPATH
 | |
| 
 | |
| go version
 | |
| go env
 | |
| go run _scripts/make.go test
 | |
| $x = $LastExitCode
 | |
| if ($version -ne "gotip") {
 | |
| 	Exit $x
 | |
| }
 |