mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-27 02:11:58 +08:00
67 lines
2.5 KiB
PowerShell
67 lines
2.5 KiB
PowerShell
# Copyright (c) Microsoft Corporation.
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
param([string]$SasToken)
|
|
|
|
if (Test-Path "$PSScriptRoot/utility-prefix.ps1") {
|
|
. "$PSScriptRoot/utility-prefix.ps1"
|
|
}
|
|
|
|
|
|
[string]$oneAPIBaseUrl
|
|
if ([string]::IsNullOrEmpty($SasToken)) {
|
|
Write-Host 'Downloading from the Internet'
|
|
$oneAPIBaseUrl = 'https://registrationcenter-download.intel.com/akdlm/IRC_NAS/c95a3b26-fc45-496c-833b-df08b10297b9/w_HPCKit_p_2024.1.0.561_offline.exe'
|
|
} else {
|
|
Write-Host 'Downloading from vcpkgimageminting using SAS token'
|
|
$SasToken = $SasToken.Replace('"', '')
|
|
$oneAPIBaseUrl = "https://vcpkgimageminting.blob.core.windows.net/assets/w_HPCKit_p_2024.1.0.561_offline.exe?$SasToken"
|
|
}
|
|
|
|
$oneAPIHPCComponents = 'intel.oneapi.win.ifort-compiler'
|
|
|
|
$LocalName = 'w_HPCKit_p_2024.1.0.561_offline.exe'
|
|
|
|
try {
|
|
[bool]$doRemove = $false
|
|
[string]$LocalPath = Join-Path $PSScriptRoot $LocalName
|
|
if (Test-Path $LocalPath) {
|
|
Write-Host "Using local Intel oneAPI..."
|
|
} else {
|
|
Write-Host "Downloading Intel oneAPI..."
|
|
$tempPath = Get-TempFilePath
|
|
New-Item -ItemType Directory -Path $tempPath -Force
|
|
$LocalPath = Join-Path $tempPath $LocalName
|
|
curl.exe -L -o $LocalPath $oneAPIBaseUrl
|
|
$doRemove = $true
|
|
}
|
|
|
|
[string]$extractionPath = Get-TempFilePath
|
|
Write-Host 'Extracting Intel oneAPI...to folder: ' $extractionPath
|
|
$proc = Start-Process -FilePath $LocalPath -ArgumentList @('-s ', '-x', '-f', $extractionPath) -Wait -PassThru
|
|
$exitCode = $proc.ExitCode
|
|
if ($exitCode -eq 0) {
|
|
Write-Host 'Extraction successful!'
|
|
} else {
|
|
Write-Error "Extraction failed! Exited with $exitCode."
|
|
throw
|
|
}
|
|
|
|
Write-Host 'Install Intel oneAPI...from folder: ' $extractionPath
|
|
$proc = Start-Process -FilePath "$extractionPath/bootstrapper.exe" -ArgumentList @('-s ', '--action install', "--components=$oneAPIHPCComponents" , '--eula=accept', '-p=NEED_VS2017_INTEGRATION=0', '-p=NEED_VS2019_INTEGRATION=0', '-p=NEED_VS2022_INTEGRATION=0', '--log-dir=.') -Wait -PassThru
|
|
$exitCode = $proc.ExitCode
|
|
if ($exitCode -eq 0) {
|
|
Write-Host 'Installation successful!'
|
|
} elseif ($exitCode -eq 3010) {
|
|
Write-Host 'Installation successful! Exited with 3010 (ERROR_SUCCESS_REBOOT_REQUIRED).'
|
|
} else {
|
|
Write-Error "Installation failed! Exited with $exitCode."
|
|
}
|
|
|
|
if ($doRemove) {
|
|
Remove-Item -Path $LocalPath -Force
|
|
}
|
|
} catch {
|
|
Write-Error "Installation failed! Exception: $($_.Exception.Message)"
|
|
}
|