mirror of
				https://github.com/go-delve/delve.git
				synced 2025-11-04 06:32:16 +08:00 
			
		
		
		
	Update test matrix to remove 1.18 and add 1.21, fix build scripts to deal with the new format returned by: https://golang.org/VERSION?m=text which now has an extra second line with the time.
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
param (
 | 
						|
    [Parameter(Mandatory = $true)][string]$version,
 | 
						|
    [Parameter(Mandatory = $true)][string]$arch,
 | 
						|
    [Parameter(Mandatory = $false)][string]$binDir
 | 
						|
)
 | 
						|
 | 
						|
if ($binDir -eq "") {
 | 
						|
    $binDir = Resolve-Path "../../system" # working directory
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Set-MpPreference -DisableRealtimeMonitoring $true -ErrorAction SilentlyContinue
 | 
						|
 | 
						|
# Install MinGW.
 | 
						|
if ($arch -eq "amd64")
 | 
						|
{
 | 
						|
    # 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'))
 | 
						|
    choco install -y mingw
 | 
						|
} elseif ($arch -eq "arm64") {
 | 
						|
    $llvmVersion = "20220906"
 | 
						|
    $name = "llvm-mingw-$llvmVersion-ucrt-aarch64"
 | 
						|
    if (-Not(Test-Path "$binDir\llvm-mingw\$name"))
 | 
						|
    {
 | 
						|
        New-Item "$binDir\llvm-mingw" -ItemType Directory -ErrorAction SilentlyContinue
 | 
						|
        $url = "https://github.com/mstorsjo/llvm-mingw/releases/download/$llvmVersion/$name.zip"
 | 
						|
        Invoke-WebRequest -UserAgent wget -Uri $url -OutFile "$env:TEMP\$name.zip" -ErrorAction Stop
 | 
						|
        Expand-Archive -Force -LiteralPath "$env:TEMP\$name.zip" -DestinationPath "$binDir\llvm-mingw\"
 | 
						|
    }
 | 
						|
    $env:PATH = "$binDir\llvm-mingw\$name\bin;$env:PATH"
 | 
						|
} else {
 | 
						|
    Throw "Unsupported architecture: $arch"
 | 
						|
}
 | 
						|
 | 
						|
# Install Procdump
 | 
						|
if (-Not(Test-Path "$binDir\procdump"))
 | 
						|
{
 | 
						|
    New-Item "$binDir\procdump" -ItemType Directory
 | 
						|
    Invoke-WebRequest -UserAgent wget -Uri "https://download.sysinternals.com/files/Procdump.zip" -OutFile "$env:TEMP\procdump.zip"
 | 
						|
    Expand-Archive -Force -LiteralPath "$env:TEMP\procdump.zip" -DestinationPath "$binDir\procdump"
 | 
						|
}
 | 
						|
 | 
						|
$env:PATH = "$binDir\procdump;$env:PATH"
 | 
						|
 | 
						|
function GetGo($version) {
 | 
						|
    $env:GOROOT = "$binDir\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 "$env:TEMP\$file" -ErrorAction Stop
 | 
						|
        Expand-Archive -Force -LiteralPath "$env:TEMP\$file" -DestinationPath "$env:TEMP\$version"
 | 
						|
        New-Item $env:GOROOT -ItemType Directory
 | 
						|
        Move-Item -Path "$env:TEMP\$version\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 -ErrorAction Stop).Split([Environment]::NewLine) | select -first 1
 | 
						|
    GetGo $latest
 | 
						|
    $env:GOROOT_BOOTSTRAP = $env:GOROOT
 | 
						|
    $env:GOROOT = "$binDir\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" "$binDir\go\go-tip"
 | 
						|
        Push-Location -Path "$binDir\go\go-tip\src"
 | 
						|
    } else {
 | 
						|
        Push-Location -Path "$binDir\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 -ErrorAction Stop
 | 
						|
    $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 = "$binDir\gopath"
 | 
						|
$env:PATH = "$env:GOROOT\bin;$env:GOPATH\bin;$env:PATH"
 | 
						|
Write-Host $env:PATH
 | 
						|
Write-Host $env:GOROOT
 | 
						|
Write-Host $env:GOPATH
 | 
						|
 | 
						|
Get-Command go
 | 
						|
go version
 | 
						|
go env
 | 
						|
go run _scripts/make.go test -v
 | 
						|
$x = $LastExitCode
 | 
						|
if ($version -ne "gotip") {
 | 
						|
    Exit $x
 | 
						|
}
 |