You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.2 KiB
111 lines
3.2 KiB
# Set error handling
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
# Get the root directory and third_party directory
|
|
$ROOT_DIR = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent | Split-Path -Parent | Split-Path -Parent -Resolve
|
|
|
|
# Include the common functions
|
|
. "$ROOT_DIR/hack/lib/windows/init.ps1"
|
|
|
|
function Install-Dependency {
|
|
pip install poetry==1.8.3
|
|
if ($LASTEXITCODE -ne 0) {
|
|
GPUStack.Log.Fatal "failed to install poetry."
|
|
}
|
|
|
|
poetry install
|
|
if ($LASTEXITCODE -ne 0) {
|
|
GPUStack.Log.Fatal "failed run poetry install."
|
|
}
|
|
|
|
poetry run pre-commit install
|
|
if ($LASTEXITCODE -ne 0) {
|
|
GPUStack.Log.Fatal "failed run pre-commint install."
|
|
}
|
|
}
|
|
|
|
function Get-UI {
|
|
$defaultTag = "latest"
|
|
$uiPath = Join-Path -Path $ROOT_DIR -ChildPath "gpustack/ui"
|
|
$tmpPath = Join-Path -Path $uiPath -ChildPath "tmp"
|
|
$tmpUIPath = Join-Path -Path $tmpPath -ChildPath "ui"
|
|
$tag = "latest"
|
|
|
|
if ($GIT_VERSION -ne "v0.0.0") {
|
|
$tag = $GIT_VERSION
|
|
}
|
|
|
|
$null = Remove-Item -Recurse -Force $uiPath -ErrorAction Ignore
|
|
$null = New-Item -ItemType Directory -Path $tmpUIPath
|
|
|
|
GPUStack.Log.Info "downloading '$tag' UI assets"
|
|
|
|
try {
|
|
$tmpFile = "$tmpPath/ui.tar.gz"
|
|
$url = "https://gpustack-ui-1303613262.cos.accelerate.myqcloud.com/releases/$tag.tar.gz"
|
|
DownloadWithRetries -url $url -outFile $tmpFile -maxRetries 3
|
|
|
|
# For git action's bug, can't use tar directly.
|
|
# https://github.com/julia-actions/setup-julia/issues/205
|
|
& "$env:WINDIR/System32/tar" -xzf "$tmpPath/ui.tar.gz" -C "$tmpUIPath"
|
|
}
|
|
catch {
|
|
GPUStack.Log.Fatal "failed to download '$tag' UI archive: $($_.Exception.Message)"
|
|
|
|
if (-eq $tag $defaultTag) {
|
|
return
|
|
}
|
|
|
|
GPUStack.Log.Warn "failed to download '$tag' UI archive, fallback to '$defaultTag' UI archive"
|
|
|
|
try {
|
|
$tmpFile = "$tmpPath/ui.tar.gz"
|
|
$url = "https://gpustack-ui-1303613262.cos.accelerate.myqcloud.com/releases/$defaultTag.tar.gz"
|
|
DownloadWithRetries -url $url -outFile $tmpFile -maxRetries 3
|
|
tar -xzf $tmpFile -C "$tmpUIPath"
|
|
}
|
|
catch {
|
|
GPUStack.Log.Fatal "failed to download '$defaultTag' UI archive: : $($_.Exception.Message)"
|
|
}
|
|
}
|
|
|
|
Copy-Item -Path "$tmpUIPath/dist/*" -Destination $uiPath -Recurse
|
|
Remove-Item -Recurse -Force $tmpUIPath -ErrorAction Ignore
|
|
}
|
|
|
|
function DownloadWithRetries {
|
|
param (
|
|
[string]$url,
|
|
[string]$outFile,
|
|
[int]$maxRetries = 3
|
|
)
|
|
|
|
for ($i = 1; $i -le $maxRetries; $i++) {
|
|
try {
|
|
GPUStack.Log.Info "Attempting to download from $url (Attempt $i of $maxRetries)"
|
|
Invoke-WebRequest -Uri $url -OutFile $outFile -ErrorAction Stop
|
|
return
|
|
}
|
|
catch {
|
|
GPUStack.Log.Warn "Download attempt $i failed: $($_.Exception.Message)"
|
|
if ($i -eq $maxRetries) {
|
|
throw $_
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#
|
|
# main
|
|
#
|
|
|
|
GPUStack.Log.Info "+++ DEPENDENCIES +++"
|
|
try {
|
|
Install-Dependency
|
|
Get-UI
|
|
}
|
|
catch {
|
|
GPUStack.Log.Fatal "failed to download dependencies: $($_.Exception.Message)"
|
|
}
|
|
GPUStack.Log.Info "-- DEPENDENCIES ---"
|