Merge branch 'dev/enaselli/update-packman-8.7.0' into 'main'
Update Packman to 8.7.0 See merge request lightspeedrtx/lss-ai-tools/comfyui-rtx_remix!62
This commit is contained in:
@@ -1,169 +0,0 @@
|
||||
:: Copyright 2019-2023 NVIDIA CORPORATION
|
||||
::
|
||||
:: Licensed under the Apache License, Version 2.0 (the "License");
|
||||
:: you may not use this file except in compliance with the License.
|
||||
:: You may obtain a copy of the License at
|
||||
::
|
||||
:: http://www.apache.org/licenses/LICENSE-2.0
|
||||
::
|
||||
:: Unless required by applicable law or agreed to in writing, software
|
||||
:: distributed under the License is distributed on an "AS IS" BASIS,
|
||||
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
:: See the License for the specific language governing permissions and
|
||||
:: limitations under the License.
|
||||
|
||||
set PM_PACKMAN_VERSION=7.23.1
|
||||
|
||||
:: Specify where packman command is rooted
|
||||
set PM_INSTALL_PATH=%~dp0..
|
||||
|
||||
:: The external root may already be configured and we should do minimal work in that case
|
||||
if defined PM_PACKAGES_ROOT goto ENSURE_DIR
|
||||
|
||||
:: If the folder isn't set we assume that the best place for it is on the drive that we are currently
|
||||
:: running from
|
||||
set PM_DRIVE=%CD:~0,2%
|
||||
|
||||
set PM_PACKAGES_ROOT=%PM_DRIVE%\packman-repo
|
||||
|
||||
:: We use *setx* here so that the variable is persisted in the user environment
|
||||
echo Setting user environment variable PM_PACKAGES_ROOT to %PM_PACKAGES_ROOT%
|
||||
setx PM_PACKAGES_ROOT %PM_PACKAGES_ROOT%
|
||||
if %errorlevel% neq 0 ( goto ERROR )
|
||||
|
||||
:: The above doesn't work properly from a build step in VisualStudio because a separate process is
|
||||
:: spawned for it so it will be lost for subsequent compilation steps - VisualStudio must
|
||||
:: be launched from a new process. We catch this odd-ball case here:
|
||||
if defined PM_DISABLE_VS_WARNING goto ENSURE_DIR
|
||||
if not defined VSLANG goto ENSURE_DIR
|
||||
echo The above is a once-per-computer operation. Unfortunately VisualStudio cannot pick up environment change
|
||||
echo unless *VisualStudio is RELAUNCHED*.
|
||||
echo If you are launching VisualStudio from command line or command line utility make sure
|
||||
echo you have a fresh launch environment (relaunch the command line or utility).
|
||||
echo If you are using 'linkPath' and referring to packages via local folder links you can safely ignore this warning.
|
||||
echo You can disable this warning by setting the environment variable PM_DISABLE_VS_WARNING.
|
||||
echo.
|
||||
|
||||
:: Check for the directory that we need. Note that mkdir will create any directories
|
||||
:: that may be needed in the path
|
||||
:ENSURE_DIR
|
||||
if not exist "%PM_PACKAGES_ROOT%" (
|
||||
echo Creating packman packages cache at %PM_PACKAGES_ROOT%
|
||||
mkdir "%PM_PACKAGES_ROOT%"
|
||||
)
|
||||
if %errorlevel% neq 0 ( goto ERROR_MKDIR_PACKAGES_ROOT )
|
||||
|
||||
:: The Python interpreter may already be externally configured
|
||||
if defined PM_PYTHON_EXT (
|
||||
set PM_PYTHON=%PM_PYTHON_EXT%
|
||||
goto PACKMAN
|
||||
)
|
||||
|
||||
set PM_PYTHON_VERSION=3.10.5-1-windows-x86_64
|
||||
set PM_PYTHON_BASE_DIR=%PM_PACKAGES_ROOT%\python
|
||||
set PM_PYTHON_DIR=%PM_PYTHON_BASE_DIR%\%PM_PYTHON_VERSION%
|
||||
set PM_PYTHON=%PM_PYTHON_DIR%\python.exe
|
||||
|
||||
if exist "%PM_PYTHON%" goto PACKMAN
|
||||
if not exist "%PM_PYTHON_BASE_DIR%" call :CREATE_PYTHON_BASE_DIR
|
||||
|
||||
set PM_PYTHON_PACKAGE=python@%PM_PYTHON_VERSION%.cab
|
||||
for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do set TEMP_FILE_NAME=%%a
|
||||
set TARGET=%TEMP_FILE_NAME%.zip
|
||||
call "%~dp0fetch_file_from_packman_bootstrap.cmd" %PM_PYTHON_PACKAGE% "%TARGET%"
|
||||
if %errorlevel% neq 0 (
|
||||
echo !!! Error fetching python from CDN !!!
|
||||
goto ERROR
|
||||
)
|
||||
|
||||
for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_folder.ps1" -parentPath "%PM_PYTHON_BASE_DIR%"') do set TEMP_FOLDER_NAME=%%a
|
||||
echo Unpacking Python interpreter ...
|
||||
"%SystemRoot%\system32\expand.exe" -F:* "%TARGET%" "%TEMP_FOLDER_NAME%" 1> nul
|
||||
del "%TARGET%"
|
||||
:: Failure during extraction to temp folder name, need to clean up and abort
|
||||
if %errorlevel% neq 0 (
|
||||
echo !!! Error unpacking python !!!
|
||||
call :CLEAN_UP_TEMP_FOLDER
|
||||
goto ERROR
|
||||
)
|
||||
|
||||
:: If python has now been installed by a concurrent process we need to clean up and then continue
|
||||
if exist "%PM_PYTHON%" (
|
||||
call :CLEAN_UP_TEMP_FOLDER
|
||||
goto PACKMAN
|
||||
) else (
|
||||
if exist "%PM_PYTHON_DIR%" ( rd /s /q "%PM_PYTHON_DIR%" > nul )
|
||||
)
|
||||
|
||||
:: Perform atomic move (allowing overwrite, /y)
|
||||
move /y "%TEMP_FOLDER_NAME%" "%PM_PYTHON_DIR%" 1> nul
|
||||
:: Verify that python.exe is now where we expect
|
||||
if exist "%PM_PYTHON%" goto PACKMAN
|
||||
|
||||
:: Wait a second and try again (can help with access denied weirdness)
|
||||
timeout /t 1 /nobreak 1> nul
|
||||
move /y "%TEMP_FOLDER_NAME%" "%PM_PYTHON_DIR%" 1> nul
|
||||
if %errorlevel% neq 0 (
|
||||
echo !!! Error moving python %TEMP_FOLDER_NAME% -> %PM_PYTHON_DIR% !!!
|
||||
call :CLEAN_UP_TEMP_FOLDER
|
||||
goto ERROR
|
||||
)
|
||||
|
||||
:PACKMAN
|
||||
:: The packman module may already be externally configured
|
||||
if defined PM_MODULE_DIR_EXT (
|
||||
set PM_MODULE_DIR=%PM_MODULE_DIR_EXT%
|
||||
) else (
|
||||
set PM_MODULE_DIR=%PM_PACKAGES_ROOT%\packman-common\%PM_PACKMAN_VERSION%
|
||||
)
|
||||
|
||||
set PM_MODULE=%PM_MODULE_DIR%\run.py
|
||||
|
||||
if exist "%PM_MODULE%" goto END
|
||||
|
||||
:: Clean out broken PM_MODULE_DIR if it exists
|
||||
if exist "%PM_MODULE_DIR%" ( rd /s /q "%PM_MODULE_DIR%" > nul )
|
||||
|
||||
set PM_MODULE_PACKAGE=packman-common@%PM_PACKMAN_VERSION%.zip
|
||||
for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do set TEMP_FILE_NAME=%%a
|
||||
set TARGET=%TEMP_FILE_NAME%
|
||||
call "%~dp0fetch_file_from_packman_bootstrap.cmd" %PM_MODULE_PACKAGE% "%TARGET%"
|
||||
if %errorlevel% neq 0 (
|
||||
echo !!! Error fetching packman from CDN !!!
|
||||
goto ERROR
|
||||
)
|
||||
|
||||
echo Unpacking ...
|
||||
"%PM_PYTHON%" -S -s -u -E "%~dp0\install_package.py" "%TARGET%" "%PM_MODULE_DIR%"
|
||||
if %errorlevel% neq 0 (
|
||||
echo !!! Error unpacking packman !!!
|
||||
goto ERROR
|
||||
)
|
||||
|
||||
del "%TARGET%"
|
||||
|
||||
goto END
|
||||
|
||||
:ERROR_MKDIR_PACKAGES_ROOT
|
||||
echo Failed to automatically create packman packages repo at %PM_PACKAGES_ROOT%.
|
||||
echo Please set a location explicitly that packman has permission to write to, by issuing:
|
||||
echo.
|
||||
echo setx PM_PACKAGES_ROOT {path-you-choose-for-storing-packman-packages-locally}
|
||||
echo.
|
||||
echo Then launch a new command console for the changes to take effect and run packman command again.
|
||||
exit /B %errorlevel%
|
||||
|
||||
:ERROR
|
||||
echo !!! Failure while configuring local machine :( !!!
|
||||
exit /B %errorlevel%
|
||||
|
||||
:CLEAN_UP_TEMP_FOLDER
|
||||
rd /S /Q "%TEMP_FOLDER_NAME%"
|
||||
exit /B
|
||||
|
||||
:CREATE_PYTHON_BASE_DIR
|
||||
:: We ignore errors and clean error state - if two processes create the directory one will fail which is fine
|
||||
md "%PM_PYTHON_BASE_DIR%" > nul 2>&1
|
||||
exit /B 0
|
||||
|
||||
:END
|
||||
@@ -0,0 +1,661 @@
|
||||
<#
|
||||
Copyright 2019-2026 NVIDIA CORPORATION
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$PackmanVersion,
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$PythonVersion,
|
||||
[string]$PackmanCommonSha256 = ""
|
||||
)
|
||||
|
||||
Set-StrictMode -Version 2.0
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$PM_PACKMAN_VERSION = $PackmanVersion
|
||||
$PM_PYTHON_VERSION = $PythonVersion
|
||||
$PM_PACKMAN_COMMON_SHA256 = $PackmanCommonSha256
|
||||
$BOOTSTRAP_ROOT = $PSScriptRoot
|
||||
$PM_INSTALL_PATH = [System.IO.Path]::GetFullPath((Join-Path $BOOTSTRAP_ROOT ".."))
|
||||
$SENTINEL_FILE_NAME = ".packman.rdy"
|
||||
$LOCK_WAIT_LOG_INTERVAL_MS = 5000
|
||||
|
||||
Add-Type -AssemblyName System.IO.Compression
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
|
||||
[System.Net.ServicePointManager]::SecurityProtocol = `
|
||||
[System.Net.ServicePointManager]::SecurityProtocol -bor `
|
||||
[System.Net.SecurityProtocolType]::Tls12
|
||||
|
||||
function Write-Log {
|
||||
param([string]$Message)
|
||||
[Console]::Error.WriteLine($Message)
|
||||
}
|
||||
|
||||
function Write-Failure {
|
||||
param([string]$Message)
|
||||
[Console]::Error.WriteLine($Message)
|
||||
}
|
||||
|
||||
function Get-DefaultPackagesRoot {
|
||||
$drive = [System.IO.Path]::GetPathRoot($PM_INSTALL_PATH)
|
||||
if ([string]::IsNullOrEmpty($drive)) {
|
||||
throw "Unable to resolve install drive from '$PM_INSTALL_PATH'."
|
||||
}
|
||||
|
||||
return [System.IO.Path]::Combine($drive, "packman-repo")
|
||||
}
|
||||
|
||||
function Set-UserEnvironmentVariable {
|
||||
param(
|
||||
[string]$Name,
|
||||
[string]$Value
|
||||
)
|
||||
|
||||
Write-Log "Setting user environment variable $Name to $Value"
|
||||
$null = & setx $Name $Value
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to persist user environment variable $Name."
|
||||
}
|
||||
}
|
||||
|
||||
function Write-VisualStudioWarning {
|
||||
if ($env:PM_DISABLE_VS_WARNING) {
|
||||
return
|
||||
}
|
||||
|
||||
if (-not $env:VSLANG) {
|
||||
return
|
||||
}
|
||||
|
||||
Write-Log "The above is a once-per-computer operation. Unfortunately VisualStudio cannot pick up environment change"
|
||||
Write-Log "unless *VisualStudio is RELAUNCHED*."
|
||||
Write-Log "If you are launching VisualStudio from command line or command line utility make sure"
|
||||
Write-Log "you have a fresh launch environment (relaunch the command line or utility)."
|
||||
Write-Log "If you are using 'linkPath' and referring to packages via local folder links you can safely ignore this warning."
|
||||
Write-Log "You can disable this warning by setting the environment variable PM_DISABLE_VS_WARNING."
|
||||
Write-Log ""
|
||||
}
|
||||
|
||||
function Ensure-DirectoryExists {
|
||||
param([string]$Path)
|
||||
|
||||
if (-not (Test-Path -LiteralPath $Path)) {
|
||||
New-Item -ItemType Directory -Path $Path -Force | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function Resolve-NormalizedPath {
|
||||
param([string]$Path)
|
||||
|
||||
return [System.IO.Path]::GetFullPath($Path)
|
||||
}
|
||||
|
||||
function Remove-DirectoryIfPresent {
|
||||
param([string]$Path)
|
||||
|
||||
if (Test-Path -LiteralPath $Path) {
|
||||
Remove-Item -LiteralPath $Path -Recurse -Force
|
||||
}
|
||||
}
|
||||
|
||||
function Get-SentinelPath {
|
||||
param([string]$DestinationDir)
|
||||
|
||||
return [System.IO.Path]::Combine($DestinationDir, $SENTINEL_FILE_NAME)
|
||||
}
|
||||
|
||||
function Test-Ready {
|
||||
param([string]$DestinationDir)
|
||||
|
||||
return Test-Path -LiteralPath (Get-SentinelPath -DestinationDir $DestinationDir)
|
||||
}
|
||||
|
||||
function Get-PathHash {
|
||||
param([string]$Path)
|
||||
|
||||
$normalizedPath = [System.IO.Path]::GetFullPath($Path).ToLowerInvariant()
|
||||
$sha256 = [System.Security.Cryptography.SHA256]::Create()
|
||||
try {
|
||||
$bytes = [System.Text.Encoding]::UTF8.GetBytes($normalizedPath)
|
||||
$hash = $sha256.ComputeHash($bytes)
|
||||
}
|
||||
finally {
|
||||
$sha256.Dispose()
|
||||
}
|
||||
|
||||
return ([System.BitConverter]::ToString($hash).Replace("-", "")).ToLowerInvariant()
|
||||
}
|
||||
|
||||
function Get-BytesSha256Hex {
|
||||
param([byte[]]$Bytes)
|
||||
|
||||
$sha256 = [System.Security.Cryptography.SHA256]::Create()
|
||||
try {
|
||||
$hash = $sha256.ComputeHash($Bytes)
|
||||
}
|
||||
finally {
|
||||
$sha256.Dispose()
|
||||
}
|
||||
|
||||
return ([System.BitConverter]::ToString($hash).Replace("-", "")).ToLowerInvariant()
|
||||
}
|
||||
|
||||
function Get-LockFilePath {
|
||||
param(
|
||||
[string]$PackagesRoot,
|
||||
[string]$DestinationDir
|
||||
)
|
||||
|
||||
$lockRoot = Join-Path $PackagesRoot ".locks"
|
||||
Ensure-DirectoryExists -Path $lockRoot
|
||||
return Join-Path $lockRoot ((Get-PathHash -Path $DestinationDir) + ".txt")
|
||||
}
|
||||
|
||||
function Write-LockMetadata {
|
||||
param(
|
||||
[System.IO.FileStream]$LockStream,
|
||||
[string]$DestinationDir
|
||||
)
|
||||
|
||||
$metadata = @(
|
||||
"target=" + [System.IO.Path]::GetFullPath($DestinationDir)
|
||||
"pid=" + $PID
|
||||
"machine=" + $env:COMPUTERNAME
|
||||
"acquired_utc=" + [DateTime]::UtcNow.ToString("o")
|
||||
) -join [Environment]::NewLine
|
||||
|
||||
$LockStream.SetLength(0)
|
||||
$LockStream.Position = 0
|
||||
$writer = New-Object System.IO.StreamWriter($LockStream, [System.Text.Encoding]::UTF8, 1024, $true)
|
||||
try {
|
||||
$writer.WriteLine($metadata)
|
||||
$writer.Flush()
|
||||
$LockStream.Flush()
|
||||
}
|
||||
finally {
|
||||
$writer.Dispose()
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-WithDestinationFileLock {
|
||||
param(
|
||||
[string]$PackagesRoot,
|
||||
[string]$DestinationDir,
|
||||
[string]$Label,
|
||||
[scriptblock]$Body
|
||||
)
|
||||
|
||||
$lockPath = Get-LockFilePath -PackagesRoot $PackagesRoot -DestinationDir $DestinationDir
|
||||
$lockStream = $null
|
||||
|
||||
try {
|
||||
while ($null -eq $lockStream) {
|
||||
try {
|
||||
$lockStream = [System.IO.File]::Open(
|
||||
$lockPath,
|
||||
[System.IO.FileMode]::OpenOrCreate,
|
||||
[System.IO.FileAccess]::ReadWrite,
|
||||
[System.IO.FileShare]::None
|
||||
)
|
||||
Write-LockMetadata -LockStream $lockStream -DestinationDir $DestinationDir
|
||||
}
|
||||
catch [System.IO.IOException] {
|
||||
if ($null -ne $lockStream) {
|
||||
$lockStream.Dispose()
|
||||
$lockStream = $null
|
||||
}
|
||||
|
||||
Write-Log "Waiting for $Label install lock at $DestinationDir ..."
|
||||
Start-Sleep -Milliseconds $LOCK_WAIT_LOG_INTERVAL_MS
|
||||
}
|
||||
}
|
||||
|
||||
& $Body
|
||||
}
|
||||
finally {
|
||||
if ($null -ne $lockStream) {
|
||||
$lockStream.Dispose()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-DownloadBytes {
|
||||
param(
|
||||
[string]$PackageName,
|
||||
[string]$DestinationLabel
|
||||
)
|
||||
|
||||
$triesLeft = 4
|
||||
$delaySeconds = 2
|
||||
$sourceUrl = "https://bootstrap.packman.nvidia.com/$PackageName"
|
||||
|
||||
while ($triesLeft -gt 0) {
|
||||
$triesLeft -= 1
|
||||
try {
|
||||
Write-Log "Fetching $PackageName for $DestinationLabel ..."
|
||||
$webClient = New-Object System.Net.WebClient
|
||||
try {
|
||||
return $webClient.DownloadData($sourceUrl)
|
||||
}
|
||||
finally {
|
||||
$webClient.Dispose()
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Log "Error downloading $sourceUrl"
|
||||
Write-Log $_.Exception.ToString()
|
||||
if ($triesLeft -le 0) {
|
||||
break
|
||||
}
|
||||
|
||||
Write-Log "Retrying in $delaySeconds seconds ..."
|
||||
Start-Sleep -Seconds $delaySeconds
|
||||
$delaySeconds *= $delaySeconds
|
||||
}
|
||||
}
|
||||
|
||||
throw "Failed to download $PackageName."
|
||||
}
|
||||
|
||||
function Expand-ZipBytes {
|
||||
param(
|
||||
[byte[]]$ZipBytes,
|
||||
[string]$DestinationDir
|
||||
)
|
||||
|
||||
$destinationRoot = [System.IO.Path]::GetFullPath($DestinationDir)
|
||||
$destinationRootWithSeparator = $destinationRoot.TrimEnd([System.IO.Path]::DirectorySeparatorChar) + [System.IO.Path]::DirectorySeparatorChar
|
||||
$stream = New-Object System.IO.MemoryStream(,$ZipBytes)
|
||||
try {
|
||||
$archive = New-Object System.IO.Compression.ZipArchive(
|
||||
$stream,
|
||||
[System.IO.Compression.ZipArchiveMode]::Read,
|
||||
$false
|
||||
)
|
||||
try {
|
||||
foreach ($entry in $archive.Entries) {
|
||||
if ([string]::IsNullOrEmpty($entry.FullName)) {
|
||||
continue
|
||||
}
|
||||
|
||||
$entryPath = $entry.FullName.Replace("/", [System.IO.Path]::DirectorySeparatorChar)
|
||||
$targetPath = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($destinationRoot, $entryPath))
|
||||
if (($targetPath -ne $destinationRoot) -and (-not $targetPath.StartsWith($destinationRootWithSeparator, [System.StringComparison]::OrdinalIgnoreCase))) {
|
||||
throw "Archive entry '$($entry.FullName)' escapes destination '$destinationRoot'."
|
||||
}
|
||||
|
||||
if ($entry.FullName.EndsWith("/")) {
|
||||
Ensure-DirectoryExists -Path $targetPath
|
||||
continue
|
||||
}
|
||||
|
||||
$targetDir = Split-Path -Parent $targetPath
|
||||
if (-not [string]::IsNullOrEmpty($targetDir)) {
|
||||
Ensure-DirectoryExists -Path $targetDir
|
||||
}
|
||||
|
||||
$entryStream = $entry.Open()
|
||||
try {
|
||||
$fileStream = [System.IO.File]::Open($targetPath, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write, [System.IO.FileShare]::None)
|
||||
try {
|
||||
$entryStream.CopyTo($fileStream)
|
||||
}
|
||||
finally {
|
||||
$fileStream.Dispose()
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$entryStream.Dispose()
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$archive.Dispose()
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$stream.Dispose()
|
||||
}
|
||||
}
|
||||
|
||||
function Write-Sentinel {
|
||||
param(
|
||||
[string]$DestinationDir,
|
||||
[string]$PackageName
|
||||
)
|
||||
|
||||
$sentinelPath = Get-SentinelPath -DestinationDir $DestinationDir
|
||||
$content = @(
|
||||
"package=$PackageName"
|
||||
"ready_utc=$([DateTime]::UtcNow.ToString("o"))"
|
||||
)
|
||||
[System.IO.File]::WriteAllLines($sentinelPath, $content)
|
||||
}
|
||||
|
||||
function Ensure-ZipPackageInstall {
|
||||
param(
|
||||
[string]$PackagesRoot,
|
||||
[string]$DestinationDir,
|
||||
[string]$PackageName,
|
||||
[string]$Label,
|
||||
[string]$ExpectedSha256 = ""
|
||||
)
|
||||
|
||||
if (Test-Ready -DestinationDir $DestinationDir) {
|
||||
return
|
||||
}
|
||||
|
||||
Invoke-WithDestinationFileLock -PackagesRoot $PackagesRoot -DestinationDir $DestinationDir -Label $Label -Body {
|
||||
if (Test-Ready -DestinationDir $DestinationDir) {
|
||||
return
|
||||
}
|
||||
|
||||
Remove-DirectoryIfPresent -Path $DestinationDir
|
||||
Ensure-DirectoryExists -Path $DestinationDir
|
||||
|
||||
$zipBytes = Invoke-DownloadBytes -PackageName $PackageName -DestinationLabel $Label
|
||||
if (-not [string]::IsNullOrEmpty($ExpectedSha256)) {
|
||||
$actualSha256 = Get-BytesSha256Hex -Bytes $zipBytes
|
||||
if ($actualSha256 -ne $ExpectedSha256.ToLowerInvariant()) {
|
||||
throw "Package '$PackageName' must have a sha256 of '$ExpectedSha256' but was found to have '$actualSha256'."
|
||||
}
|
||||
}
|
||||
Write-Log "Unpacking $Label ..."
|
||||
Expand-ZipBytes -ZipBytes $zipBytes -DestinationDir $DestinationDir
|
||||
Write-Sentinel -DestinationDir $DestinationDir -PackageName $PackageName
|
||||
}
|
||||
}
|
||||
|
||||
function Write-Export {
|
||||
param(
|
||||
[string]$Name,
|
||||
[string]$Value
|
||||
)
|
||||
|
||||
[Console]::Out.WriteLine($Name + "=" + $Value)
|
||||
}
|
||||
|
||||
try {
|
||||
$pmPackagesRootWasProvided = -not [string]::IsNullOrEmpty($env:PM_PACKAGES_ROOT)
|
||||
if ($pmPackagesRootWasProvided) {
|
||||
$pmPackagesRoot = Resolve-NormalizedPath -Path $env:PM_PACKAGES_ROOT
|
||||
}
|
||||
else {
|
||||
$pmPackagesRoot = Resolve-NormalizedPath -Path (Get-DefaultPackagesRoot)
|
||||
Set-UserEnvironmentVariable -Name "PM_PACKAGES_ROOT" -Value $pmPackagesRoot
|
||||
Write-VisualStudioWarning
|
||||
}
|
||||
|
||||
if (-not (Test-Path -LiteralPath $pmPackagesRoot)) {
|
||||
Write-Log "Creating packman packages cache at $pmPackagesRoot"
|
||||
Ensure-DirectoryExists -Path $pmPackagesRoot
|
||||
}
|
||||
|
||||
if ($env:PM_PYTHON_EXT) {
|
||||
$pmPython = Resolve-NormalizedPath -Path $env:PM_PYTHON_EXT
|
||||
}
|
||||
else {
|
||||
$pmPythonBaseDir = Join-Path $pmPackagesRoot "python"
|
||||
$pmPythonDir = Join-Path $pmPythonBaseDir $PM_PYTHON_VERSION
|
||||
$pmPython = Resolve-NormalizedPath -Path (Join-Path $pmPythonDir "python.exe")
|
||||
Ensure-DirectoryExists -Path $pmPythonBaseDir
|
||||
Ensure-ZipPackageInstall -PackagesRoot $pmPackagesRoot -DestinationDir $pmPythonDir -PackageName ("python@" + $PM_PYTHON_VERSION + ".zip") -Label "Python interpreter"
|
||||
}
|
||||
|
||||
if ($env:PM_MODULE_DIR_EXT) {
|
||||
$pmModuleDir = Resolve-NormalizedPath -Path $env:PM_MODULE_DIR_EXT
|
||||
}
|
||||
else {
|
||||
$pmModuleDir = Resolve-NormalizedPath -Path (Join-Path (Join-Path $pmPackagesRoot "packman-common") $PM_PACKMAN_VERSION)
|
||||
Ensure-ZipPackageInstall -PackagesRoot $pmPackagesRoot -DestinationDir $pmModuleDir -PackageName ("packman-common@" + $PM_PACKMAN_VERSION + ".zip") -Label "packman" -ExpectedSha256 $PM_PACKMAN_COMMON_SHA256
|
||||
}
|
||||
|
||||
$pmModule = Resolve-NormalizedPath -Path (Join-Path $pmModuleDir "run.py")
|
||||
|
||||
Write-Export -Name "PM_INSTALL_PATH" -Value $PM_INSTALL_PATH
|
||||
Write-Export -Name "PM_PACKAGES_ROOT" -Value $pmPackagesRoot
|
||||
Write-Export -Name "PM_PYTHON" -Value $pmPython
|
||||
Write-Export -Name "PM_MODULE_DIR" -Value $pmModuleDir
|
||||
Write-Export -Name "PM_MODULE" -Value $pmModule
|
||||
exit 0
|
||||
}
|
||||
catch {
|
||||
Write-Failure "!!! Failure while configuring local machine :( !!!"
|
||||
Write-Failure $_.Exception.Message
|
||||
exit 1
|
||||
}
|
||||
|
||||
# SIG # Begin signature block
|
||||
# MIIofwYJKoZIhvcNAQcCoIIocDCCKGwCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAWwKj2dEbYNg/h
|
||||
# mA+bs0J3T8vxT2+X/FQuZ4d/HB3WAKCCDbUwggawMIIEmKADAgECAhAIrUCyYNKc
|
||||
# TJ9ezam9k67ZMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
||||
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
|
||||
# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0z
|
||||
# NjA0MjgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
|
||||
# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg
|
||||
# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
||||
# ggIKAoICAQDVtC9C0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0
|
||||
# JAfhS0/TeEP0F9ce2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJr
|
||||
# Q5qZ8sU7H/Lvy0daE6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhF
|
||||
# LqGfLOEYwhrMxe6TSXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+F
|
||||
# LEikVoQ11vkunKoAFdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh
|
||||
# 3K3kGKDYwSNHR7OhD26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJ
|
||||
# wZPt4bRc4G/rJvmM1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQay
|
||||
# g9Rc9hUZTO1i4F4z8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbI
|
||||
# YViY9XwCFjyDKK05huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchAp
|
||||
# QfDVxW0mdmgRQRNYmtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRro
|
||||
# OBl8ZhzNeDhFMJlP/2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IB
|
||||
# WTCCAVUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+
|
||||
# YXsIiGX0TkIwHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0P
|
||||
# AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAk
|
||||
# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAC
|
||||
# hjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9v
|
||||
# dEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5j
|
||||
# b20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAED
|
||||
# MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql
|
||||
# +Eg08yy25nRm95RysQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFF
|
||||
# UP2cvbaF4HZ+N3HLIvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1h
|
||||
# mYFW9snjdufE5BtfQ/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3Ryw
|
||||
# YFzzDaju4ImhvTnhOE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5Ubdld
|
||||
# AhQfQDN8A+KVssIhdXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw
|
||||
# 8MzK7/0pNVwfiThV9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnP
|
||||
# LqR0kq3bPKSchh/jwVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatE
|
||||
# QOON8BUozu3xGFYHKi8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bn
|
||||
# KD+sEq6lLyJsQfmCXBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQji
|
||||
# WQ1tygVQK+pKHJ6l/aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbq
|
||||
# yK+p/pQd52MbOoZWeE4wggb9MIIE5aADAgECAhAJrnXkyTwXU23cf6lU5rhZMA0G
|
||||
# CSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
|
||||
# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg
|
||||
# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjUwNzMwMDAwMDAwWhcNMjgwNzI5
|
||||
# MjM1OTU5WjCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDAS
|
||||
# BgNVBAcTC1NhbnRhIENsYXJhMRswGQYDVQQKExJOVklESUEgQ29ycG9yYXRpb24x
|
||||
# EDAOBgNVBAsTBzIwMDhCOUYxGzAZBgNVBAMTEk5WSURJQSBDb3Jwb3JhdGlvbjCC
|
||||
# AaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKa2dMEsbSxk5eQlpZLnH3gh
|
||||
# gkCcxlFDR/+as8oUqOztXFPrpGWMZkyOu06MNiPycUbVMh6pb8nJjr0ULpqPwd+7
|
||||
# lPzZ1RBDiUizSvLW7QkcVrtcpaTzLV5N0aezqj1lXwFWU1MVGan0tXmcrSAaAFJG
|
||||
# F6ChQbmh5ltEeJd+9ZQenKaH+eYZIPCS4Fk9sQefuuH060+oN4aME1iGyPL/l/cL
|
||||
# wXnfGFkfy0TdmZDO+IHERhcjqrAFKfYgsDlDsUnOc6smhyRv1RFgsx2W73Mztt7U
|
||||
# sZ81qORdZDTKztGykoQIC/YYo03iI7BfotTNY9c+81iN8qIsHBhdpRrerEKA/rm7
|
||||
# dF8HrGjg7Nn+p75fRrIKZ7v86dOxPJm7s6HjDL/Ww37XwK+yK1XH+o+376bx0mFE
|
||||
# OhmGczyn8YMUwz8frLHDb+Hi0Z0qLerYaU4Io1hxk6QCciCNToGwSzj+G+Cy1TH4
|
||||
# DTtgl4A+GRDFMG9dY745HfRVlxdMlYpIMMfoO1kGIQIDAQABo4ICAzCCAf8wHwYD
|
||||
# VR0jBBgwFoAUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHQYDVR0OBBYEFM8QW3t1WsAl
|
||||
# sCyglf8KFZDQkFOgMD4GA1UdIAQ3MDUwMwYGZ4EMAQQBMCkwJwYIKwYBBQUHAgEW
|
||||
# G2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAOBgNVHQ8BAf8EBAMCB4AwEwYD
|
||||
# VR0lBAwwCgYIKwYBBQUHAwMwgbUGA1UdHwSBrTCBqjBToFGgT4ZNaHR0cDovL2Ny
|
||||
# bDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0
|
||||
# MDk2U0hBMzg0MjAyMUNBMS5jcmwwU6BRoE+GTWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0
|
||||
# LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIw
|
||||
# MjFDQTEuY3JsMIGUBggrBgEFBQcBAQSBhzCBhDAkBggrBgEFBQcwAYYYaHR0cDov
|
||||
# L29jc3AuZGlnaWNlcnQuY29tMFwGCCsGAQUFBzAChlBodHRwOi8vY2FjZXJ0cy5k
|
||||
# aWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZT
|
||||
# SEEzODQyMDIxQ0ExLmNydDAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4ICAQAb
|
||||
# hocVBslPLkweNoXnzDyHjgUHVsdaBSxnKjHDTdOzXpo/a6VkK1VXK1fIhWYy4CcZ
|
||||
# /wfyeb80+99KnfWWQzgL7nIElm4SkJRIMK8dODX3my4CQR6oSEsOimM1QUr8Gfio
|
||||
# H98oQe8fhIQUOjnQsWiqbPzukx7ehCYnm2Xbu6nnSuvdzwFjiPykA91IFkVyP4Ex
|
||||
# kf7JzWrFko4nceMXwtfGLB0jH1L+fmFUlAzXKNVIV/2GlXElSCMGHlUDy18D2hk+
|
||||
# nij2DT1Gp+PmSSBCmQVIr+6HJMVXdz3jCtE3nQGKfAT+M8dvvEIq//0+cpkZdJxQ
|
||||
# ctnHK5qukn8InimLh7fK8B+gu08wPHAhdEAc2eNM5Mmw67iCKN2/9hGvoVQlrtYm
|
||||
# Ta1YglDOm4G0uSwtGIoa8O4S2uZES75HpAXRtc/hzSCOdeHR52wCMCx91OXrJ1kz
|
||||
# NxIWIJZCE3NlzwKFObOZKONRiHPpC8oEToY/cxhTIn3Gg/70emY8JMvJoVfyokbu
|
||||
# NfteFha3Z/5wIoxkcW971JaP2Z2TO1StjGcKEZvUF2OW7PQ7Toh55AowUx2UuSZQ
|
||||
# MioaOVUrhqxcYWSBobA1Y3mwvuRfAgMqrfQ+eIwWYX+t7qg9fNjTPtxlQViE1H3+
|
||||
# cRW9p8uV5rqJXhNzXmKYH8k4AZoUUOMnY//9ZE8TtjGCGiAwghocAgEBMH0waTEL
|
||||
# MAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhE
|
||||
# aWdpQ2VydCBUcnVzdGVkIEc0IENvZGUgU2lnbmluZyBSU0E0MDk2IFNIQTM4NCAy
|
||||
# MDIxIENBMQIQCa515Mk8F1Nt3H+pVOa4WTANBglghkgBZQMEAgEFAKB8MBAGCisG
|
||||
# AQQBgjcCAQwxAjAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB
|
||||
# gjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCAHZUPKZVXcGpNc
|
||||
# UB7Q/h1O9rGaDATEYdRrcxwGZovEnjANBgkqhkiG9w0BAQEFAASCAYBOP3Ho+po5
|
||||
# XLUDHTLze5ljcJMxgRepN06jPeufsK8S9WVM1gHurmvAfzY8dz2ov68M0rUWfKxF
|
||||
# 1FdBUHLiFAbdVIozGMViF2noVCjSBFEcz6V7SO+nM2rN24mmeTMY8MUQQbxEQQIr
|
||||
# A38NtTHpQs0Ab6qp74lMPhpdtO7W9goqYRdDhYqhhUXCrTxMwOYXaa8TmHdfLQXk
|
||||
# BkvZH52Vf7hrFj907zlTYz7k7pc67BM6VDKG/rXsa+z57yKJBGsh0AIEFqpG3Vzi
|
||||
# C83j2XIDDi/Gu80kCRjlbzlnvq1aurV1XAMr1kgYEV101L4vI6+BZ/kLCZKlheUc
|
||||
# wXkdaPlVlY1zrVYgO4qCcubwevXpQdFAqeB12nswn6i5y0uBuOOQhJxzJLmQ2FrE
|
||||
# qWPB6HDrp08upi+DsIl7xz8qcRHrZLeBMYvdLw7tMSOgIeLfFS/rKj7EdqCcs1h6
|
||||
# /aBa3MVPZHnfGzs9rOvtP2uBgrOcAep806q6CqD95bHFHZN+ZsDlRnqhghd2MIIX
|
||||
# cgYKKwYBBAGCNwMDATGCF2IwghdeBgkqhkiG9w0BBwKgghdPMIIXSwIBAzEPMA0G
|
||||
# CWCGSAFlAwQCAQUAMHcGCyqGSIb3DQEJEAEEoGgEZjBkAgEBBglghkgBhv1sBwEw
|
||||
# MTANBglghkgBZQMEAgEFAAQgi8XXHRMZUXNXuWbDRcl5gt8rK6pYDUTm1YrsyNFB
|
||||
# kqYCEDoW9ExivtX6n5EQMMpBEBUYDzIwMjYwNDIwMTgyOTMyWqCCEzowggbtMIIE
|
||||
# 1aADAgECAhAKgO8YS43xBYLRxHanlXRoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
|
||||
# BAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UEAxM4RGlnaUNl
|
||||
# cnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5NiBTSEEyNTYgMjAyNSBD
|
||||
# QTEwHhcNMjUwNjA0MDAwMDAwWhcNMzYwOTAzMjM1OTU5WjBjMQswCQYDVQQGEwJV
|
||||
# UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFNI
|
||||
# QTI1NiBSU0E0MDk2IFRpbWVzdGFtcCBSZXNwb25kZXIgMjAyNSAxMIICIjANBgkq
|
||||
# hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EasLRLGntDqrmBWsytXum9R/4ZwCgHf
|
||||
# yjfMGUIwYzKomd8U1nH7C8Dr0cVMF3BsfAFI54um8+dnxk36+jx0Tb+k+87H9WPx
|
||||
# NyFPJIDZHhAqlUPt281mHrBbZHqRK71Em3/hCGC5KyyneqiZ7syvFXJ9A72wzHpk
|
||||
# BaMUNg7MOLxI6E9RaUueHTQKWXymOtRwJXcrcTTPPT2V1D/+cFllESviH8YjoPFv
|
||||
# ZSjKs3SKO1QNUdFd2adw44wDcKgH+JRJE5Qg0NP3yiSyi5MxgU6cehGHr7zou1zn
|
||||
# OM8odbkqoK+lJ25LCHBSai25CFyD23DZgPfDrJJJK77epTwMP6eKA0kWa3osAe8f
|
||||
# cpK40uhktzUd/Yk0xUvhDU6lvJukx7jphx40DQt82yepyekl4i0r8OEps/FNO4ah
|
||||
# fvAk12hE5FVs9HVVWcO5J4dVmVzix4A77p3awLbr89A90/nWGjXMGn7FQhmSlIUD
|
||||
# y9Z2hSgctaepZTd0ILIUbWuhKuAeNIeWrzHKYueMJtItnj2Q+aTyLLKLM0MheP/9
|
||||
# w6CtjuuVHJOVoIJ/DtpJRE7Ce7vMRHoRon4CWIvuiNN1Lk9Y+xZ66lazs2kKFSTn
|
||||
# nkrT3pXWETTJkhd76CIDBbTRofOsNyEhzZtCGmnQigpFHti58CSmvEyJcAlDVcKa
|
||||
# cJ+A9/z7eacCAwEAAaOCAZUwggGRMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOQ7
|
||||
# /PIx7f391/ORcWMZUEPPYYzoMB8GA1UdIwQYMBaAFO9vU0rp5AZ8esrikFb2L9RJ
|
||||
# 7MtOMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCBlQYI
|
||||
# KwYBBQUHAQEEgYgwgYUwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0
|
||||
# LmNvbTBdBggrBgEFBQcwAoZRaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0Rp
|
||||
# Z2lDZXJ0VHJ1c3RlZEc0VGltZVN0YW1waW5nUlNBNDA5NlNIQTI1NjIwMjVDQTEu
|
||||
# Y3J0MF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9E
|
||||
# aWdpQ2VydFRydXN0ZWRHNFRpbWVTdGFtcGluZ1JTQTQwOTZTSEEyNTYyMDI1Q0Ex
|
||||
# LmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglghkgBhv1sBwEwDQYJKoZIhvcN
|
||||
# AQELBQADggIBAGUqrfEcJwS5rmBB7NEIRJ5jQHIh+OT2Ik/bNYulCrVvhREafBYF
|
||||
# 0RkP2AGr181o2YWPoSHz9iZEN/FPsLSTwVQWo2H62yGBvg7ouCODwrx6ULj6hYKq
|
||||
# dT8wv2UV+Kbz/3ImZlJ7YXwBD9R0oU62PtgxOao872bOySCILdBghQ/ZLcdC8cbU
|
||||
# UO75ZSpbh1oipOhcUT8lD8QAGB9lctZTTOJM3pHfKBAEcxQFoHlt2s9sXoxFizTe
|
||||
# HihsQyfFg5fxUFEp7W42fNBVN4ueLaceRf9Cq9ec1v5iQMWTFQa0xNqItH3CPFTG
|
||||
# 7aEQJmmrJTV3Qhtfparz+BW60OiMEgV5GWoBy4RVPRwqxv7Mk0Sy4QHs7v9y69NB
|
||||
# qycz0BZwhB9WOfOu/CIJnzkQTwtSSpGGhLdjnQ4eBpjtP+XB3pQCtv4E5UCSDag6
|
||||
# +iX8MmB10nfldPF9SVD7weCC3yXZi/uuhqdwkgVxuiMFzGVFwYbQsiGnoa9F5AaA
|
||||
# yBjFBtXVLcKtapnMG3VH3EmAp/jsJ3FVF3+d1SVDTmjFjLbNFZUWMXuZyvgLfgyP
|
||||
# ehwJVxwC+UpX2MSey2ueIu9THFVkT+um1vshETaWyQo8gmBto/m3acaP9QsuLj3F
|
||||
# NwFlTxq25+T4QwX9xa6ILs84ZPvmpovq90K8eWyG2N01c4IhSOxqt81nMIIGtDCC
|
||||
# BJygAwIBAgIQDcesVwX/IZkuQEMiDDpJhjANBgkqhkiG9w0BAQsFADBiMQswCQYD
|
||||
# VQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGln
|
||||
# aWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcN
|
||||
# MjUwNTA3MDAwMDAwWhcNMzgwMTE0MjM1OTU5WjBpMQswCQYDVQQGEwJVUzEXMBUG
|
||||
# A1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQg
|
||||
# RzQgVGltZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExMIICIjANBgkq
|
||||
# hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtHgx0wqYQXK+PEbAHKx126NGaHS0URed
|
||||
# Ta2NDZS1mZaDLFTtQ2oRjzUXMmxCqvkbsDpz4aH+qbxeLho8I6jY3xL1IusLopuW
|
||||
# 2qftJYJaDNs1+JH7Z+QdSKWM06qchUP+AbdJgMQB3h2DZ0Mal5kYp77jYMVQXSZH
|
||||
# ++0trj6Ao+xh/AS7sQRuQL37QXbDhAktVJMQbzIBHYJBYgzWIjk8eDrYhXDEpKk7
|
||||
# RdoX0M980EpLtlrNyHw0Xm+nt5pnYJU3Gmq6bNMI1I7Gb5IBZK4ivbVCiZv7PNBY
|
||||
# qHEpNVWC2ZQ8BbfnFRQVESYOszFI2Wv82wnJRfN20VRS3hpLgIR4hjzL0hpoYGk8
|
||||
# 1coWJ+KdPvMvaB0WkE/2qHxJ0ucS638ZxqU14lDnki7CcoKCz6eum5A19WZQHkqU
|
||||
# JfdkDjHkccpL6uoG8pbF0LJAQQZxst7VvwDDjAmSFTUms+wV/FbWBqi7fTJnjq3h
|
||||
# j0XbQcd8hjj/q8d6ylgxCZSKi17yVp2NL+cnT6Toy+rN+nM8M7LnLqCrO2JP3oW/
|
||||
# /1sfuZDKiDEb1AQ8es9Xr/u6bDTnYCTKIsDq1BtmXUqEG1NqzJKS4kOmxkYp2WyO
|
||||
# Di7vQTCBZtVFJfVZ3j7OgWmnhFr4yUozZtqgPrHRVHhGNKlYzyjlroPxul+bgIsp
|
||||
# zOwbtmsgY1MCAwEAAaOCAV0wggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0O
|
||||
# BBYEFO9vU0rp5AZ8esrikFb2L9RJ7MtOMB8GA1UdIwQYMBaAFOzX44LScV1kTN8u
|
||||
# Zz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDCDB3
|
||||
# BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0
|
||||
# LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0Rp
|
||||
# Z2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDov
|
||||
# L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwIAYD
|
||||
# VR0gBBkwFzAIBgZngQwBBAIwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4IC
|
||||
# AQAXzvsWgBz+Bz0RdnEwvb4LyLU0pn/N0IfFiBowf0/Dm1wGc/Do7oVMY2mhXZXj
|
||||
# DNJQa8j00DNqhCT3t+s8G0iP5kvN2n7Jd2E4/iEIUBO41P5F448rSYJ59Ib61eoa
|
||||
# lhnd6ywFLerycvZTAz40y8S4F3/a+Z1jEMK/DMm/axFSgoR8n6c3nuZB9BfBwAQY
|
||||
# K9FHaoq2e26MHvVY9gCDA/JYsq7pGdogP8HRtrYfctSLANEBfHU16r3J05qX3kId
|
||||
# +ZOczgj5kjatVB+NdADVZKON/gnZruMvNYY2o1f4MXRJDMdTSlOLh0HCn2cQLwQC
|
||||
# qjFbqrXuvTPSegOOzr4EWj7PtspIHBldNE2K9i697cvaiIo2p61Ed2p8xMJb82Yo
|
||||
# sn0z4y25xUbI7GIN/TpVfHIqQ6Ku/qjTY6hc3hsXMrS+U0yy+GWqAXam4ToWd2UQ
|
||||
# 1KYT70kZjE4YtL8Pbzg0c1ugMZyZZd/BdHLiRu7hAWE6bTEm4XYRkA6Tl4KSFLFk
|
||||
# 43esaUeqGkH/wyW4N7OigizwJWeukcyIPbAvjSabnf7+Pu0VrFgoiovRDiyx3zEd
|
||||
# mcif/sYQsfch28bZeUz2rtY/9TCA6TD8dC3JE3rYkrhLULy7Dc90G6e8BlqmyIjl
|
||||
# gp2+VqsS9/wQD7yFylIz0scmbKvFoW2jNrbM1pD2T7m3XDCCBY0wggR1oAMCAQIC
|
||||
# EA6bGI750C3n79tQ4ghAGFowDQYJKoZIhvcNAQEMBQAwZTELMAkGA1UEBhMCVVMx
|
||||
# FTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNv
|
||||
# bTEkMCIGA1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBSb290IENBMB4XDTIyMDgw
|
||||
# MTAwMDAwMFoXDTMxMTEwOTIzNTk1OVowYjELMAkGA1UEBhMCVVMxFTATBgNVBAoT
|
||||
# DERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UE
|
||||
# AxMYRGlnaUNlcnQgVHJ1c3RlZCBSb290IEc0MIICIjANBgkqhkiG9w0BAQEFAAOC
|
||||
# Ag8AMIICCgKCAgEAv+aQc2jeu+RdSjwwIjBpM+zCpyUuySE98orYWcLhKac9WKt2
|
||||
# ms2uexuEDcQwH/MbpDgW61bGl20dq7J58soR0uRf1gU8Ug9SH8aeFaV+vp+pVxZZ
|
||||
# VXKvaJNwwrK6dZlqczKU0RBEEC7fgvMHhOZ0O21x4i0MG+4g1ckgHWMpLc7sXk7I
|
||||
# k/ghYZs06wXGXuxbGrzryc/NrDRAX7F6Zu53yEioZldXn1RYjgwrt0+nMNlW7sp7
|
||||
# XeOtyU9e5TXnMcvak17cjo+A2raRmECQecN4x7axxLVqGDgDEI3Y1DekLgV9iPWC
|
||||
# PhCRcKtVgkEy19sEcypukQF8IUzUvK4bA3VdeGbZOjFEmjNAvwjXWkmkwuapoGfd
|
||||
# pCe8oU85tRFYF/ckXEaPZPfBaYh2mHY9WV1CdoeJl2l6SPDgohIbZpp0yt5LHucO
|
||||
# Y67m1O+SkjqePdwA5EUlibaaRBkrfsCUtNJhbesz2cXfSwQAzH0clcOP9yGyshG3
|
||||
# u3/y1YxwLEFgqrFjGESVGnZifvaAsPvoZKYz0YkH4b235kOkGLimdwHhD5QMIR2y
|
||||
# VCkliWzlDlJRR3S+Jqy2QXXeeqxfjT/JvNNBERJb5RBQ6zHFynIWIgnffEx1P2Ps
|
||||
# IV/EIFFrb7GrhotPwtZFX50g/KEexcCPorF+CiaZ9eRpL5gdLfXZqbId5RsCAwEA
|
||||
# AaOCATowggE2MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOzX44LScV1kTN8u
|
||||
# Zz/nupiuHA9PMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMA4GA1Ud
|
||||
# DwEB/wQEAwIBhjB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
|
||||
# Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
|
||||
# aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDBFBgNVHR8EPjA8
|
||||
# MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVk
|
||||
# SURSb290Q0EuY3JsMBEGA1UdIAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQwFAAOC
|
||||
# AQEAcKC/Q1xV5zhfoKN0Gz22Ftf3v1cHvZqsoYcs7IVeqRq7IviHGmlUIu2kiHdt
|
||||
# vRoU9BNKei8ttzjv9P+Aufih9/Jy3iS8UgPITtAq3votVs/59PesMHqai7Je1M/R
|
||||
# Q0SbQyHrlnKhSLSZy51PpwYDE3cnRNTnf+hZqPC/Lwum6fI0POz3A8eHqNJMQBk1
|
||||
# RmppVLC4oVaO7KTVPeix3P0c2PR3WlxUjG/voVA9/HYJaISfb8rbII01YBwCA8sg
|
||||
# sKxYoA5AY8WYIsGyWfVVa88nq2x2zm8jLfR+cWojayL/ErhULSd+2DrZ8LaHlv1b
|
||||
# 0VysGMNNn3O3AamfV6peKOK5lDGCA3wwggN4AgEBMH0waTELMAkGA1UEBhMCVVMx
|
||||
# FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBUcnVz
|
||||
# dGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENBMQIQCoDv
|
||||
# GEuN8QWC0cR2p5V0aDANBglghkgBZQMEAgEFAKCB0TAaBgkqhkiG9w0BCQMxDQYL
|
||||
# KoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDQyMDE4MjkzMlowKwYLKoZI
|
||||
# hvcNAQkQAgwxHDAaMBgwFgQU3WIwrIYKLTBr2jixaHlSMAf7QX4wLwYJKoZIhvcN
|
||||
# AQkEMSIEICaY4QeE6Fmy2B4rhjFiAat3DCIilw2l/8ajeP/XH0wMMDcGCyqGSIb3
|
||||
# DQEJEAIvMSgwJjAkMCIEIEqgP6Is11yExVyTj4KOZ2ucrsqzP+NtJpqjNPFGEQoz
|
||||
# MA0GCSqGSIb3DQEBAQUABIICAHC6pfwLarK8w2Q3D9tKscJgzURlt1TIeGT4eg9L
|
||||
# Q5RcoCADVfnDY77cFdbzuuR/l0f8iEtBnLlFXcMKNhsn2c3QljZLZoCSG01HADAl
|
||||
# YdIGO4vnKzC+EfIsButXKZWlBDbHGk45yAF4CpAHX3K27fyjKqD9Jee/owNdeXNE
|
||||
# HKAqibVWtpbDeu5GoGa/b3lQj8SxIaDZ9Gy8RfNjOFtMaYf+M7deuiyJ657Q6o59
|
||||
# Vy99hzxvxoUI6LbyfKi1kL8Uvd+zSpj7H5N9+eCwDThPJqEB0vP9cNYEgnsRGBEh
|
||||
# GytRuRJvffxiuYTEQkdR03Lr2NcmI93DcliLSPWFhyrR95+b+Z6mipKeNA4rx9fz
|
||||
# I/IwW4eHEf6Ce99w2ZuDgT7c48BOgzYFQ3wRRMiav9IuRc1BJ3ujXrL3vuZxMQEG
|
||||
# vNoy5+ivmvf+AwInTd2Qlncqi1XoWiSIwUN9esiRcvWrkSwM04wPd5q0QwXSBG2d
|
||||
# AHFzKbBeyCnpcnMJz2STXP5uTEeauwpv9seAmF0RXGd7952M+mhdBmft7fILqKZk
|
||||
# 6DrgTWCm9L5mB6JMXx9tfk7qBu/8AEFRItP/v4Q9x/MQ3OX18s3DIEYlBSIiUWkV
|
||||
# fEpcEgXJEeFQmANUNx7BjeB2zH5XU5I1MiTGEiXo5uRLl2SYHds5N+q9cQ1AQUnA
|
||||
# UoAe
|
||||
# SIG # End signature block
|
||||
@@ -1,53 +0,0 @@
|
||||
<#
|
||||
Copyright 2019 NVIDIA CORPORATION
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
#>
|
||||
|
||||
param(
|
||||
[Parameter(Mandatory=$true)][string]$source=$null,
|
||||
[string]$output="out.exe"
|
||||
)
|
||||
$filename = $output
|
||||
|
||||
$triesLeft = 4
|
||||
$delay = 2
|
||||
do
|
||||
{
|
||||
$triesLeft -= 1
|
||||
|
||||
try
|
||||
{
|
||||
Write-Host "Downloading from bootstrap.packman.nvidia.com ..."
|
||||
$wc = New-Object net.webclient
|
||||
$wc.Downloadfile($source, $fileName)
|
||||
exit 0
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "Error downloading $source!"
|
||||
Write-Host $_.Exception|format-list -force
|
||||
if ($triesLeft)
|
||||
{
|
||||
Write-Host "Retrying in $delay seconds ..."
|
||||
Start-Sleep -seconds $delay
|
||||
}
|
||||
$delay = $delay * $delay
|
||||
}
|
||||
} while ($triesLeft -gt 0)
|
||||
# We only get here if the retries have been exhausted, remove any left-overs:
|
||||
if (Test-Path $fileName)
|
||||
{
|
||||
Remove-Item $fileName
|
||||
}
|
||||
exit 1
|
||||
@@ -1,35 +0,0 @@
|
||||
:: Copyright 2019 NVIDIA CORPORATION
|
||||
::
|
||||
:: Licensed under the Apache License, Version 2.0 (the "License");
|
||||
:: you may not use this file except in compliance with the License.
|
||||
:: You may obtain a copy of the License at
|
||||
::
|
||||
:: http://www.apache.org/licenses/LICENSE-2.0
|
||||
::
|
||||
:: Unless required by applicable law or agreed to in writing, software
|
||||
:: distributed under the License is distributed on an "AS IS" BASIS,
|
||||
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
:: See the License for the specific language governing permissions and
|
||||
:: limitations under the License.
|
||||
|
||||
:: You need to specify <package-name> <target-path> as input to this command
|
||||
@setlocal
|
||||
@set PACKAGE_NAME=%1
|
||||
@set TARGET_PATH=%2
|
||||
|
||||
@echo Fetching %PACKAGE_NAME% ...
|
||||
|
||||
@powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0download_file_from_url.ps1" ^
|
||||
-source "http://bootstrap.packman.nvidia.com/%PACKAGE_NAME%" -output %TARGET_PATH%
|
||||
:: A bug in powershell prevents the errorlevel code from being set when using the -File execution option
|
||||
:: We must therefore do our own failure analysis, basically make sure the file exists:
|
||||
@if not exist %TARGET_PATH% goto ERROR_DOWNLOAD_FAILED
|
||||
|
||||
@endlocal
|
||||
@exit /b 0
|
||||
|
||||
:ERROR_DOWNLOAD_FAILED
|
||||
@echo Failed to download file from S3
|
||||
@echo Most likely because endpoint cannot be reached or file %PACKAGE_NAME% doesn't exist
|
||||
@endlocal
|
||||
@exit /b 1
|
||||
@@ -1,161 +0,0 @@
|
||||
<#
|
||||
Copyright 2019 NVIDIA CORPORATION
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
#>
|
||||
|
||||
$out = [System.IO.Path]::GetTempFileName()
|
||||
Write-Host $out
|
||||
# SIG # Begin signature block
|
||||
# MIIaVwYJKoZIhvcNAQcCoIIaSDCCGkQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAK+Ewup1N0/mdf
|
||||
# 1l4R58rxyumHgZvTmEhrYTb2Zf0zd6CCCiIwggTTMIIDu6ADAgECAhBi50XpIWUh
|
||||
# PJcfXEkK6hKlMA0GCSqGSIb3DQEBCwUAMIGEMQswCQYDVQQGEwJVUzEdMBsGA1UE
|
||||
# ChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0
|
||||
# IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENsYXNzIDMgU0hBMjU2IENvZGUg
|
||||
# U2lnbmluZyBDQSAtIEcyMB4XDTE4MDcwOTAwMDAwMFoXDTIxMDcwOTIzNTk1OVow
|
||||
# gYMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQHDAtT
|
||||
# YW50YSBDbGFyYTEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMQ8wDQYDVQQL
|
||||
# DAZJVC1NSVMxGzAZBgNVBAMMEk5WSURJQSBDb3Jwb3JhdGlvbjCCASIwDQYJKoZI
|
||||
# hvcNAQEBBQADggEPADCCAQoCggEBALEZN63dA47T4i90jZ84CJ/aWUwVtLff8AyP
|
||||
# YspFfIZGdZYiMgdb8A5tBh7653y0G/LZL6CVUkgejcpvBU/Dl/52a+gSWy2qJ2bH
|
||||
# jMFMKCyQDhdpCAKMOUKSC9rfzm4cFeA9ct91LQCAait4LhLlZt/HF7aG+r0FgCZa
|
||||
# HJjJvE7KNY9G4AZXxjSt8CXS8/8NQMANqjLX1r+F+Hl8PzQ1fVx0mMsbdtaIV4Pj
|
||||
# 5flAeTUnz6+dCTx3vTUo8MYtkS2UBaQv7t7H2B7iwJDakEQKk1XHswJdeqG0osDU
|
||||
# z6+NVks7uWE1N8UIhvzbw0FEX/U2kpfyWaB/J3gMl8rVR8idPj8CAwEAAaOCAT4w
|
||||
# ggE6MAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
|
||||
# BwMDMGEGA1UdIARaMFgwVgYGZ4EMAQQBMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8v
|
||||
# ZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkMF2h0dHBzOi8vZC5zeW1jYi5j
|
||||
# b20vcnBhMB8GA1UdIwQYMBaAFNTABiJJ6zlL3ZPiXKG4R3YJcgNYMCsGA1UdHwQk
|
||||
# MCIwIKAeoByGGmh0dHA6Ly9yYi5zeW1jYi5jb20vcmIuY3JsMFcGCCsGAQUFBwEB
|
||||
# BEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3JiLnN5bWNkLmNvbTAmBggrBgEFBQcw
|
||||
# AoYaaHR0cDovL3JiLnN5bWNiLmNvbS9yYi5jcnQwDQYJKoZIhvcNAQELBQADggEB
|
||||
# AIJKh5vKJdhHJtMzATmc1BmXIQ3RaJONOZ5jMHn7HOkYU1JP0OIzb4pXXkH8Xwfr
|
||||
# K6bnd72IhcteyksvKsGpSvK0PBBwzodERTAu1Os2N+EaakxQwV/xtqDm1E3IhjHk
|
||||
# fRshyKKzmFk2Ci323J4lHtpWUj5Hz61b8gd72jH7xnihGi+LORJ2uRNZ3YuqMNC3
|
||||
# SBC8tAyoJqEoTJirULUCXW6wX4XUm5P2sx+htPw7szGblVKbQ+PFinNGnsSEZeKz
|
||||
# D8jUb++1cvgTKH59Y6lm43nsJjkZU77tNqyq4ABwgQRk6lt8cS2PPwjZvTmvdnla
|
||||
# ZhR0K4of+pQaUQHXVIBdji8wggVHMIIEL6ADAgECAhB8GzU1SufbdOdBXxFpymuo
|
||||
# MA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNp
|
||||
# Z24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
|
||||
# BAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
||||
# IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmlj
|
||||
# YXRpb24gQXV0aG9yaXR5MB4XDTE0MDcyMjAwMDAwMFoXDTI0MDcyMTIzNTk1OVow
|
||||
# gYQxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEf
|
||||
# MB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazE1MDMGA1UEAxMsU3ltYW50
|
||||
# ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqG
|
||||
# SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDXlUPU3N9nrjn7UqS2JjEEcOm3jlsqujdp
|
||||
# NZWPu8Aw54bYc7vf69F2P4pWjustS/BXGE6xjaUz0wt1I9VqeSfdo9P3Dodltd6t
|
||||
# HPH1NbQiUa8iocFdS5B/wFlOq515qQLXHkmxO02H/sJ4q7/vUq6crwjZOeWaUT5p
|
||||
# XzAQTnFjbFjh8CAzGw90vlvLEuHbjMSAlHK79kWansElC/ujHJ7YpglwcezAR0yP
|
||||
# fcPeGc4+7gRyjhfT//CyBTIZTNOwHJ/+pXggQnBBsCaMbwDIOgARQXpBsKeKkQSg
|
||||
# mXj0d7TzYCrmbFAEtxRg/w1R9KiLhP4h2lxeffUpeU+wRHRvbXL/AgMBAAGjggF4
|
||||
# MIIBdDAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNk
|
||||
# LmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMGYGA1UdIARfMF0wWwYLYIZIAYb4RQEH
|
||||
# FwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYB
|
||||
# BQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwNgYDVR0fBC8wLTAroCmg
|
||||
# J4YlaHR0cDovL3Muc3ltY2IuY29tL3VuaXZlcnNhbC1yb290LmNybDATBgNVHSUE
|
||||
# DDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAY
|
||||
# BgNVBAMTEVN5bWFudGVjUEtJLTEtNzI0MB0GA1UdDgQWBBTUwAYiSes5S92T4lyh
|
||||
# uEd2CXIDWDAfBgNVHSMEGDAWgBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG
|
||||
# 9w0BAQsFAAOCAQEAf+vKp+qLdkLrPo4gVDDjt7nc+kg+FscPRZUQzSeGo2bzAu1x
|
||||
# +KrCVZeRcIP5Un5SaTzJ8eCURoAYu6HUpFam8x0AkdWG80iH4MvENGggXrTL+QXt
|
||||
# nK9wUye56D5+UaBpcYvcUe2AOiUyn0SvbkMo0yF1u5fYi4uM/qkERgSF9xWcSxGN
|
||||
# xCwX/tVuf5riVpLxlrOtLfn039qJmc6yOETA90d7yiW5+ipoM5tQct6on9TNLAs0
|
||||
# vYsweEDgjY4nG5BvGr4IFYFd6y/iUedRHsl4KeceZb847wFKAQkkDhbEFHnBQTc0
|
||||
# 0D2RUpSd4WjvCPDiaZxnbpALGpNx1CYCw8BaIzGCD4swgg+HAgEBMIGZMIGEMQsw
|
||||
# CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV
|
||||
# BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENs
|
||||
# YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQSAtIEcyAhBi50XpIWUhPJcfXEkK
|
||||
# 6hKlMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcN
|
||||
# AQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUw
|
||||
# LwYJKoZIhvcNAQkEMSIEIPW+EpFrZSdzrjFFo0UT+PzFeYn/GcWNyWFaU/JMrMfR
|
||||
# MA0GCSqGSIb3DQEBAQUABIIBAA8fmU/RJcF9t60DZZAjf8FB3EZddOaHgI9z40nV
|
||||
# CnfTGi0OEYU48Pe9jkQQV2fABpACfW74xmNv3QNgP2qP++mkpKBVv28EIAuINsFt
|
||||
# YAITEljLN/VOVul8lvjxar5GSFFgpE5F6j4xcvI69LuCWbN8cteTVsBGg+eGmjfx
|
||||
# QZxP252z3FqPN+mihtFegF2wx6Mg6/8jZjkO0xjBOwSdpTL4uyQfHvaPBKXuWxRx
|
||||
# ioXw4ezGAwkuBoxWK8UG7Qu+7CSfQ3wMOjvyH2+qn30lWEsvRMdbGAp7kvfr3EGZ
|
||||
# a3WN7zXZ+6KyZeLeEH7yCDzukAjptaY/+iLVjJsuzC6tCSqhgg1EMIINQAYKKwYB
|
||||
# BAGCNwMDATGCDTAwgg0sBgkqhkiG9w0BBwKggg0dMIINGQIBAzEPMA0GCWCGSAFl
|
||||
# AwQCAQUAMHcGCyqGSIb3DQEJEAEEoGgEZjBkAgEBBglghkgBhv1sBwEwMTANBglg
|
||||
# hkgBZQMEAgEFAAQg14BnPazQkW9whhZu1d0bC3lqqScvxb3SSb1QT8e3Xg0CEFhw
|
||||
# aMBZ2hExXhr79A9+bXEYDzIwMjEwNDA4MDkxMTA5WqCCCjcwggT+MIID5qADAgEC
|
||||
# AhANQkrgvjqI/2BAIc4UAPDdMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVT
|
||||
# MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
# b20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBp
|
||||
# bmcgQ0EwHhcNMjEwMTAxMDAwMDAwWhcNMzEwMTA2MDAwMDAwWjBIMQswCQYDVQQG
|
||||
# EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xIDAeBgNVBAMTF0RpZ2lDZXJ0
|
||||
# IFRpbWVzdGFtcCAyMDIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
# wuZhhGfFivUNCKRFymNrUdc6EUK9CnV1TZS0DFC1JhD+HchvkWsMlucaXEjvROW/
|
||||
# m2HNFZFiWrj/ZwucY/02aoH6KfjdK3CF3gIY83htvH35x20JPb5qdofpir34hF0e
|
||||
# dsnkxnZ2OlPR0dNaNo/Go+EvGzq3YdZz7E5tM4p8XUUtS7FQ5kE6N1aG3JMjjfdQ
|
||||
# Jehk5t3Tjy9XtYcg6w6OLNUj2vRNeEbjA4MxKUpcDDGKSoyIxfcwWvkUrxVfbENJ
|
||||
# Cf0mI1P2jWPoGqtbsR0wwptpgrTb/FZUvB+hh6u+elsKIC9LCcmVp42y+tZji06l
|
||||
# chzun3oBc/gZ1v4NSYS9AQIDAQABo4IBuDCCAbQwDgYDVR0PAQH/BAQDAgeAMAwG
|
||||
# A1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQQYDVR0gBDowODA2
|
||||
# BglghkgBhv1sBwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5j
|
||||
# b20vQ1BTMB8GA1UdIwQYMBaAFPS24SAd/imu0uRhpbKiJbLIFzVuMB0GA1UdDgQW
|
||||
# BBQ2RIaOpLqwZr68KC0dRDbd42p6vDBxBgNVHR8EajBoMDKgMKAuhixodHRwOi8v
|
||||
# Y3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDAyoDCgLoYsaHR0
|
||||
# cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC10cy5jcmwwgYUGCCsG
|
||||
# AQUFBwEBBHkwdzAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
|
||||
# ME8GCCsGAQUFBzAChkNodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
|
||||
# cnRTSEEyQXNzdXJlZElEVGltZXN0YW1waW5nQ0EuY3J0MA0GCSqGSIb3DQEBCwUA
|
||||
# A4IBAQBIHNy16ZojvOca5yAOjmdG/UJyUXQKI0ejq5LSJcRwWb4UoOUngaVNFBUZ
|
||||
# B3nw0QTDhtk7vf5EAmZN7WmkD/a4cM9i6PVRSnh5Nnont/PnUp+Tp+1DnnvntN1B
|
||||
# Ion7h6JGA0789P63ZHdjXyNSaYOC+hpT7ZDMjaEXcw3082U5cEvznNZ6e9oMvD0y
|
||||
# 0BvL9WH8dQgAdryBDvjA4VzPxBFy5xtkSdgimnUVQvUtMjiB2vRgorq0Uvtc4GEk
|
||||
# JU+y38kpqHNDUdq9Y9YfW5v3LhtPEx33Sg1xfpe39D+E68Hjo0mh+s6nv1bPull2
|
||||
# YYlffqe0jmd4+TaY4cso2luHpoovMIIFMTCCBBmgAwIBAgIQCqEl1tYyG35B5AXa
|
||||
# NpfCFTANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGln
|
||||
# aUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtE
|
||||
# aWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTYwMTA3MTIwMDAwWhcNMzEw
|
||||
# MTA3MTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
|
||||
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBT
|
||||
# SEEyIEFzc3VyZWQgSUQgVGltZXN0YW1waW5nIENBMIIBIjANBgkqhkiG9w0BAQEF
|
||||
# AAOCAQ8AMIIBCgKCAQEAvdAy7kvNj3/dqbqCmcU5VChXtiNKxA4HRTNREH3Q+X1N
|
||||
# aH7ntqD0jbOI5Je/YyGQmL8TvFfTw+F+CNZqFAA49y4eO+7MpvYyWf5fZT/gm+vj
|
||||
# RkcGGlV+Cyd+wKL1oODeIj8O/36V+/OjuiI+GKwR5PCZA207hXwJ0+5dyJoLVOOo
|
||||
# CXFr4M8iEA91z3FyTgqt30A6XLdR4aF5FMZNJCMwXbzsPGBqrC8HzP3w6kfZiFBe
|
||||
# /WZuVmEnKYmEUeaC50ZQ/ZQqLKfkdT66mA+Ef58xFNat1fJky3seBdCEGXIX8RcG
|
||||
# 7z3N1k3vBkL9olMqT4UdxB08r8/arBD13ays6Vb/kwIDAQABo4IBzjCCAcowHQYD
|
||||
# VR0OBBYEFPS24SAd/imu0uRhpbKiJbLIFzVuMB8GA1UdIwQYMBaAFEXroq/0ksuC
|
||||
# MS1Ri6enIZ3zbcgPMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGG
|
||||
# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcw
|
||||
# AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8v
|
||||
# Y2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0
|
||||
# MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGln
|
||||
# aUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdp
|
||||
# Y2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMFAGA1UdIARJMEcw
|
||||
# OAYKYIZIAYb9bAACBDAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
|
||||
# dC5jb20vQ1BTMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsFAAOCAQEAcZUS6VGH
|
||||
# VmnN793afKpjerN4zwY3QITvS4S/ys8DAv3Fp8MOIEIsr3fzKx8MIVoqtwU0HWqu
|
||||
# mfgnoma/Capg33akOpMP+LLR2HwZYuhegiUexLoceywh4tZbLBQ1QwRostt1AuBy
|
||||
# x5jWPGTlH0gQGF+JOGFNYkYkh2OMkVIsrymJ5Xgf1gsUpYDXEkdws3XVk4WTfraS
|
||||
# Z/tTYYmo9WuWwPRYaQ18yAGxuSh1t5ljhSKMYcp5lH5Z/IwP42+1ASa2bKXuh1Eh
|
||||
# 5Fhgm7oMLSttosR+u8QlK0cCCHxJrhO24XxCQijGGFbPQTS2Zl22dHv1VjMiLyI2
|
||||
# skuiSpXY9aaOUjGCAk0wggJJAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
||||
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNV
|
||||
# BAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0ECEA1C
|
||||
# SuC+Ooj/YEAhzhQA8N0wDQYJYIZIAWUDBAIBBQCggZgwGgYJKoZIhvcNAQkDMQ0G
|
||||
# CyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yMTA0MDgwOTExMDlaMCsGCyqG
|
||||
# SIb3DQEJEAIMMRwwGjAYMBYEFOHXgqjhkb7va8oWkbWqtJSmJJvzMC8GCSqGSIb3
|
||||
# DQEJBDEiBCCHEAmNNj2zWjWYRfEi4FgzZvrI16kv/U2b9b3oHw6UVDANBgkqhkiG
|
||||
# 9w0BAQEFAASCAQCdefEKh6Qmwx7xGCkrYi/A+/Cla6LdnYJp38eMs3fqTTvjhyDw
|
||||
# HffXrwdqWy5/fgW3o3qJXqa5o7hLxYIoWSULOCpJRGdt+w7XKPAbZqHrN9elAhWJ
|
||||
# vpBTCEaj7dVxr1Ka4NsoPSYe0eidDBmmvGvp02J4Z1j8+ImQPKN6Hv/L8Ixaxe7V
|
||||
# mH4VtXIiBK8xXdi4wzO+A+qLtHEJXz3Gw8Bp3BNtlDGIUkIhVTM3Q1xcSEqhOLqo
|
||||
# PGdwCw9acxdXNWWPjOJkNH656Bvmkml+0p6MTGIeG4JCeRh1Wpqm1ZGSoEcXNaof
|
||||
# wOgj48YzI+dNqBD9i7RSWCqJr2ygYKRTxnuU
|
||||
# SIG # End signature block
|
||||
@@ -1,167 +0,0 @@
|
||||
<#
|
||||
Copyright 2019 NVIDIA CORPORATION
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
#>
|
||||
|
||||
param(
|
||||
[Parameter(Mandatory=$true)][string]$parentPath=$null
|
||||
)
|
||||
[string] $name = [System.Guid]::NewGuid()
|
||||
$out = Join-Path $parentPath $name
|
||||
New-Item -ItemType Directory -Path ($out) | Out-Null
|
||||
Write-Host $out
|
||||
|
||||
# SIG # Begin signature block
|
||||
# MIIaVwYJKoZIhvcNAQcCoIIaSDCCGkQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB29nsqMEu+VmSF
|
||||
# 7ckeVTPrEZ6hsXjOgPFlJm9ilgHUB6CCCiIwggTTMIIDu6ADAgECAhBi50XpIWUh
|
||||
# PJcfXEkK6hKlMA0GCSqGSIb3DQEBCwUAMIGEMQswCQYDVQQGEwJVUzEdMBsGA1UE
|
||||
# ChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0
|
||||
# IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENsYXNzIDMgU0hBMjU2IENvZGUg
|
||||
# U2lnbmluZyBDQSAtIEcyMB4XDTE4MDcwOTAwMDAwMFoXDTIxMDcwOTIzNTk1OVow
|
||||
# gYMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQHDAtT
|
||||
# YW50YSBDbGFyYTEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMQ8wDQYDVQQL
|
||||
# DAZJVC1NSVMxGzAZBgNVBAMMEk5WSURJQSBDb3Jwb3JhdGlvbjCCASIwDQYJKoZI
|
||||
# hvcNAQEBBQADggEPADCCAQoCggEBALEZN63dA47T4i90jZ84CJ/aWUwVtLff8AyP
|
||||
# YspFfIZGdZYiMgdb8A5tBh7653y0G/LZL6CVUkgejcpvBU/Dl/52a+gSWy2qJ2bH
|
||||
# jMFMKCyQDhdpCAKMOUKSC9rfzm4cFeA9ct91LQCAait4LhLlZt/HF7aG+r0FgCZa
|
||||
# HJjJvE7KNY9G4AZXxjSt8CXS8/8NQMANqjLX1r+F+Hl8PzQ1fVx0mMsbdtaIV4Pj
|
||||
# 5flAeTUnz6+dCTx3vTUo8MYtkS2UBaQv7t7H2B7iwJDakEQKk1XHswJdeqG0osDU
|
||||
# z6+NVks7uWE1N8UIhvzbw0FEX/U2kpfyWaB/J3gMl8rVR8idPj8CAwEAAaOCAT4w
|
||||
# ggE6MAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
|
||||
# BwMDMGEGA1UdIARaMFgwVgYGZ4EMAQQBMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8v
|
||||
# ZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkMF2h0dHBzOi8vZC5zeW1jYi5j
|
||||
# b20vcnBhMB8GA1UdIwQYMBaAFNTABiJJ6zlL3ZPiXKG4R3YJcgNYMCsGA1UdHwQk
|
||||
# MCIwIKAeoByGGmh0dHA6Ly9yYi5zeW1jYi5jb20vcmIuY3JsMFcGCCsGAQUFBwEB
|
||||
# BEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3JiLnN5bWNkLmNvbTAmBggrBgEFBQcw
|
||||
# AoYaaHR0cDovL3JiLnN5bWNiLmNvbS9yYi5jcnQwDQYJKoZIhvcNAQELBQADggEB
|
||||
# AIJKh5vKJdhHJtMzATmc1BmXIQ3RaJONOZ5jMHn7HOkYU1JP0OIzb4pXXkH8Xwfr
|
||||
# K6bnd72IhcteyksvKsGpSvK0PBBwzodERTAu1Os2N+EaakxQwV/xtqDm1E3IhjHk
|
||||
# fRshyKKzmFk2Ci323J4lHtpWUj5Hz61b8gd72jH7xnihGi+LORJ2uRNZ3YuqMNC3
|
||||
# SBC8tAyoJqEoTJirULUCXW6wX4XUm5P2sx+htPw7szGblVKbQ+PFinNGnsSEZeKz
|
||||
# D8jUb++1cvgTKH59Y6lm43nsJjkZU77tNqyq4ABwgQRk6lt8cS2PPwjZvTmvdnla
|
||||
# ZhR0K4of+pQaUQHXVIBdji8wggVHMIIEL6ADAgECAhB8GzU1SufbdOdBXxFpymuo
|
||||
# MA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNp
|
||||
# Z24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
|
||||
# BAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
||||
# IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmlj
|
||||
# YXRpb24gQXV0aG9yaXR5MB4XDTE0MDcyMjAwMDAwMFoXDTI0MDcyMTIzNTk1OVow
|
||||
# gYQxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEf
|
||||
# MB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazE1MDMGA1UEAxMsU3ltYW50
|
||||
# ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqG
|
||||
# SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDXlUPU3N9nrjn7UqS2JjEEcOm3jlsqujdp
|
||||
# NZWPu8Aw54bYc7vf69F2P4pWjustS/BXGE6xjaUz0wt1I9VqeSfdo9P3Dodltd6t
|
||||
# HPH1NbQiUa8iocFdS5B/wFlOq515qQLXHkmxO02H/sJ4q7/vUq6crwjZOeWaUT5p
|
||||
# XzAQTnFjbFjh8CAzGw90vlvLEuHbjMSAlHK79kWansElC/ujHJ7YpglwcezAR0yP
|
||||
# fcPeGc4+7gRyjhfT//CyBTIZTNOwHJ/+pXggQnBBsCaMbwDIOgARQXpBsKeKkQSg
|
||||
# mXj0d7TzYCrmbFAEtxRg/w1R9KiLhP4h2lxeffUpeU+wRHRvbXL/AgMBAAGjggF4
|
||||
# MIIBdDAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNk
|
||||
# LmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMGYGA1UdIARfMF0wWwYLYIZIAYb4RQEH
|
||||
# FwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYB
|
||||
# BQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwNgYDVR0fBC8wLTAroCmg
|
||||
# J4YlaHR0cDovL3Muc3ltY2IuY29tL3VuaXZlcnNhbC1yb290LmNybDATBgNVHSUE
|
||||
# DDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAY
|
||||
# BgNVBAMTEVN5bWFudGVjUEtJLTEtNzI0MB0GA1UdDgQWBBTUwAYiSes5S92T4lyh
|
||||
# uEd2CXIDWDAfBgNVHSMEGDAWgBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG
|
||||
# 9w0BAQsFAAOCAQEAf+vKp+qLdkLrPo4gVDDjt7nc+kg+FscPRZUQzSeGo2bzAu1x
|
||||
# +KrCVZeRcIP5Un5SaTzJ8eCURoAYu6HUpFam8x0AkdWG80iH4MvENGggXrTL+QXt
|
||||
# nK9wUye56D5+UaBpcYvcUe2AOiUyn0SvbkMo0yF1u5fYi4uM/qkERgSF9xWcSxGN
|
||||
# xCwX/tVuf5riVpLxlrOtLfn039qJmc6yOETA90d7yiW5+ipoM5tQct6on9TNLAs0
|
||||
# vYsweEDgjY4nG5BvGr4IFYFd6y/iUedRHsl4KeceZb847wFKAQkkDhbEFHnBQTc0
|
||||
# 0D2RUpSd4WjvCPDiaZxnbpALGpNx1CYCw8BaIzGCD4swgg+HAgEBMIGZMIGEMQsw
|
||||
# CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV
|
||||
# BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENs
|
||||
# YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQSAtIEcyAhBi50XpIWUhPJcfXEkK
|
||||
# 6hKlMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcN
|
||||
# AQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUw
|
||||
# LwYJKoZIhvcNAQkEMSIEIG5YDmcpqLxn4SB0H6OnuVkZRPh6OJ77eGW/6Su/uuJg
|
||||
# MA0GCSqGSIb3DQEBAQUABIIBAA3N2vqfA6WDgqz/7EoAKVIE5Hn7xpYDGhPvFAMV
|
||||
# BslVpeqE3apTcYFCEcwLtzIEc/zmpULxsX8B0SUT2VXbJN3zzQ80b+gbgpq62Zk+
|
||||
# dQLOtLSiPhGW7MXLahgES6Oc2dUFaQ+wDfcelkrQaOVZkM4wwAzSapxuf/13oSIk
|
||||
# ZX2ewQEwTZrVYXELO02KQIKUR30s/oslGVg77ALnfK9qSS96Iwjd4MyT7PzCkHUi
|
||||
# ilwyGJi5a4ofiULiPSwUQNynSBqxa+JQALkHP682b5xhjoDfyG8laR234FTPtYgs
|
||||
# P/FaeviwENU5Pl+812NbbtRD+gKlWBZz+7FKykOT/CG8sZahgg1EMIINQAYKKwYB
|
||||
# BAGCNwMDATGCDTAwgg0sBgkqhkiG9w0BBwKggg0dMIINGQIBAzEPMA0GCWCGSAFl
|
||||
# AwQCAQUAMHcGCyqGSIb3DQEJEAEEoGgEZjBkAgEBBglghkgBhv1sBwEwMTANBglg
|
||||
# hkgBZQMEAgEFAAQgJhABfkDIPbI+nWYnA30FLTyaPK+W3QieT21B/vK+CMICEDF0
|
||||
# worcGsdd7OxpXLP60xgYDzIwMjEwNDA4MDkxMTA5WqCCCjcwggT+MIID5qADAgEC
|
||||
# AhANQkrgvjqI/2BAIc4UAPDdMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVT
|
||||
# MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
# b20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBp
|
||||
# bmcgQ0EwHhcNMjEwMTAxMDAwMDAwWhcNMzEwMTA2MDAwMDAwWjBIMQswCQYDVQQG
|
||||
# EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xIDAeBgNVBAMTF0RpZ2lDZXJ0
|
||||
# IFRpbWVzdGFtcCAyMDIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
# wuZhhGfFivUNCKRFymNrUdc6EUK9CnV1TZS0DFC1JhD+HchvkWsMlucaXEjvROW/
|
||||
# m2HNFZFiWrj/ZwucY/02aoH6KfjdK3CF3gIY83htvH35x20JPb5qdofpir34hF0e
|
||||
# dsnkxnZ2OlPR0dNaNo/Go+EvGzq3YdZz7E5tM4p8XUUtS7FQ5kE6N1aG3JMjjfdQ
|
||||
# Jehk5t3Tjy9XtYcg6w6OLNUj2vRNeEbjA4MxKUpcDDGKSoyIxfcwWvkUrxVfbENJ
|
||||
# Cf0mI1P2jWPoGqtbsR0wwptpgrTb/FZUvB+hh6u+elsKIC9LCcmVp42y+tZji06l
|
||||
# chzun3oBc/gZ1v4NSYS9AQIDAQABo4IBuDCCAbQwDgYDVR0PAQH/BAQDAgeAMAwG
|
||||
# A1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQQYDVR0gBDowODA2
|
||||
# BglghkgBhv1sBwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5j
|
||||
# b20vQ1BTMB8GA1UdIwQYMBaAFPS24SAd/imu0uRhpbKiJbLIFzVuMB0GA1UdDgQW
|
||||
# BBQ2RIaOpLqwZr68KC0dRDbd42p6vDBxBgNVHR8EajBoMDKgMKAuhixodHRwOi8v
|
||||
# Y3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDAyoDCgLoYsaHR0
|
||||
# cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC10cy5jcmwwgYUGCCsG
|
||||
# AQUFBwEBBHkwdzAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
|
||||
# ME8GCCsGAQUFBzAChkNodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
|
||||
# cnRTSEEyQXNzdXJlZElEVGltZXN0YW1waW5nQ0EuY3J0MA0GCSqGSIb3DQEBCwUA
|
||||
# A4IBAQBIHNy16ZojvOca5yAOjmdG/UJyUXQKI0ejq5LSJcRwWb4UoOUngaVNFBUZ
|
||||
# B3nw0QTDhtk7vf5EAmZN7WmkD/a4cM9i6PVRSnh5Nnont/PnUp+Tp+1DnnvntN1B
|
||||
# Ion7h6JGA0789P63ZHdjXyNSaYOC+hpT7ZDMjaEXcw3082U5cEvznNZ6e9oMvD0y
|
||||
# 0BvL9WH8dQgAdryBDvjA4VzPxBFy5xtkSdgimnUVQvUtMjiB2vRgorq0Uvtc4GEk
|
||||
# JU+y38kpqHNDUdq9Y9YfW5v3LhtPEx33Sg1xfpe39D+E68Hjo0mh+s6nv1bPull2
|
||||
# YYlffqe0jmd4+TaY4cso2luHpoovMIIFMTCCBBmgAwIBAgIQCqEl1tYyG35B5AXa
|
||||
# NpfCFTANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGln
|
||||
# aUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtE
|
||||
# aWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTYwMTA3MTIwMDAwWhcNMzEw
|
||||
# MTA3MTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
|
||||
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBT
|
||||
# SEEyIEFzc3VyZWQgSUQgVGltZXN0YW1waW5nIENBMIIBIjANBgkqhkiG9w0BAQEF
|
||||
# AAOCAQ8AMIIBCgKCAQEAvdAy7kvNj3/dqbqCmcU5VChXtiNKxA4HRTNREH3Q+X1N
|
||||
# aH7ntqD0jbOI5Je/YyGQmL8TvFfTw+F+CNZqFAA49y4eO+7MpvYyWf5fZT/gm+vj
|
||||
# RkcGGlV+Cyd+wKL1oODeIj8O/36V+/OjuiI+GKwR5PCZA207hXwJ0+5dyJoLVOOo
|
||||
# CXFr4M8iEA91z3FyTgqt30A6XLdR4aF5FMZNJCMwXbzsPGBqrC8HzP3w6kfZiFBe
|
||||
# /WZuVmEnKYmEUeaC50ZQ/ZQqLKfkdT66mA+Ef58xFNat1fJky3seBdCEGXIX8RcG
|
||||
# 7z3N1k3vBkL9olMqT4UdxB08r8/arBD13ays6Vb/kwIDAQABo4IBzjCCAcowHQYD
|
||||
# VR0OBBYEFPS24SAd/imu0uRhpbKiJbLIFzVuMB8GA1UdIwQYMBaAFEXroq/0ksuC
|
||||
# MS1Ri6enIZ3zbcgPMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGG
|
||||
# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcw
|
||||
# AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8v
|
||||
# Y2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0
|
||||
# MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGln
|
||||
# aUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdp
|
||||
# Y2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMFAGA1UdIARJMEcw
|
||||
# OAYKYIZIAYb9bAACBDAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
|
||||
# dC5jb20vQ1BTMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsFAAOCAQEAcZUS6VGH
|
||||
# VmnN793afKpjerN4zwY3QITvS4S/ys8DAv3Fp8MOIEIsr3fzKx8MIVoqtwU0HWqu
|
||||
# mfgnoma/Capg33akOpMP+LLR2HwZYuhegiUexLoceywh4tZbLBQ1QwRostt1AuBy
|
||||
# x5jWPGTlH0gQGF+JOGFNYkYkh2OMkVIsrymJ5Xgf1gsUpYDXEkdws3XVk4WTfraS
|
||||
# Z/tTYYmo9WuWwPRYaQ18yAGxuSh1t5ljhSKMYcp5lH5Z/IwP42+1ASa2bKXuh1Eh
|
||||
# 5Fhgm7oMLSttosR+u8QlK0cCCHxJrhO24XxCQijGGFbPQTS2Zl22dHv1VjMiLyI2
|
||||
# skuiSpXY9aaOUjGCAk0wggJJAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
||||
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNV
|
||||
# BAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0ECEA1C
|
||||
# SuC+Ooj/YEAhzhQA8N0wDQYJYIZIAWUDBAIBBQCggZgwGgYJKoZIhvcNAQkDMQ0G
|
||||
# CyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yMTA0MDgwOTExMDlaMCsGCyqG
|
||||
# SIb3DQEJEAIMMRwwGjAYMBYEFOHXgqjhkb7va8oWkbWqtJSmJJvzMC8GCSqGSIb3
|
||||
# DQEJBDEiBCDvFxQ6lYLr8vB+9czUl19rjCw1pWhhUXw/SqOmvIa/VDANBgkqhkiG
|
||||
# 9w0BAQEFAASCAQB9ox2UrcUXQsBI4Uycnhl4AMpvhVXJME62tygFMppW1l7QftDy
|
||||
# LvfPKRYm2YUioak/APxAS6geRKpeMkLvXuQS/Jlv0kY3BjxkeG0eVjvyjF4SvXbZ
|
||||
# 3JCk9m7wLNE+xqOo0ICjYlIJJgRLudjWkC5Skpb1NpPS8DOaIYwRV+AWaSOUPd9P
|
||||
# O5yVcnbl7OpK3EAEtwDrybCVBMPn2MGhAXybIHnth3+MFp1b6Blhz3WlReQyarjq
|
||||
# 1f+zaFB79rg6JswXoOTJhwICBP3hO2Ua3dMAswbfl+QNXF+igKLJPYnaeSVhBbm6
|
||||
# VCu2io27t4ixqvoD0RuPObNX/P3oVA38afiM
|
||||
# SIG # End signature block
|
||||
@@ -22,7 +22,6 @@ import time
|
||||
import hashlib
|
||||
from typing import Any, Callable, Union
|
||||
|
||||
|
||||
RENAME_RETRY_COUNT = 100
|
||||
RENAME_RETRY_DELAY = 0.1
|
||||
|
||||
@@ -142,7 +141,7 @@ def generate_sha256_for_file(file_path: Union[str, os.PathLike]) -> str:
|
||||
|
||||
|
||||
def install_common_module(package_path, install_path):
|
||||
COMMON_SHA256 = "0a2064434cca0170411c86f23349f9618556dc380d3589a2361db38ffeea9cac"
|
||||
COMMON_SHA256 = "d6c75a6112b9c341b6f024bef3e141ac24287f20746956860365df103b9a3faa"
|
||||
package_sha256 = generate_sha256_for_file(package_path)
|
||||
if package_sha256 != COMMON_SHA256:
|
||||
raise RuntimeError(
|
||||
|
||||
+266
-161
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2019-2023 NVIDIA CORPORATION
|
||||
# Copyright 2019-2025 NVIDIA CORPORATION
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -13,8 +13,11 @@
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
SAVED_SETTINGS="$-"
|
||||
set -eu
|
||||
SAVED_SETTINGS=`echo $-`
|
||||
# Fail on undefined variables
|
||||
set -u
|
||||
# Don't exit on errors
|
||||
set +e
|
||||
|
||||
if echo ${PM_VERBOSITY-} | grep -i "debug" > /dev/null ; then
|
||||
set -x
|
||||
@@ -24,169 +27,271 @@ else
|
||||
PM_CURL_SILENT="-s -S"
|
||||
PM_WGET_QUIET="--quiet"
|
||||
fi
|
||||
export PM_PACKMAN_VERSION=7.23.1
|
||||
export PM_PACKMAN_VERSION=8.7.0
|
||||
|
||||
# This is necessary for newer macOS
|
||||
if [ `uname` == 'Darwin' ]; then
|
||||
export LC_ALL=en_US.UTF-8
|
||||
export LANG=en_US.UTF-8
|
||||
fi
|
||||
|
||||
# We cannot rely on realpath, it isn't installed on macOS and some Linux distros
|
||||
get_abs_filename() {
|
||||
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
|
||||
}
|
||||
cleanup() {
|
||||
# Remove temporary variable file if it exists
|
||||
if [[ -n "${PM_VAR_PATH:-}" && -f "$PM_VAR_PATH" ]]; then
|
||||
rm -f "$PM_VAR_PATH"
|
||||
fi
|
||||
if [[ -n "${PM_VAR_DIR:-}" && -d "$PM_VAR_DIR" ]]; then
|
||||
rmdir "$PM_VAR_DIR"
|
||||
fi
|
||||
|
||||
# Specify where packman command exists
|
||||
export PM_INSTALL_PATH="$(get_abs_filename "$(dirname "${BASH_SOURCE}")")"
|
||||
# Restore the settings we may have altered during our run
|
||||
if [[ "$SAVED_SETTINGS" == *"e"* ]]; then
|
||||
set -e
|
||||
fi
|
||||
|
||||
# The packages root may already be configured by the user
|
||||
if [ -z "${PM_PACKAGES_ROOT:-}" ]; then
|
||||
# Set variable temporarily in this process so that the following execution will work
|
||||
if [ `uname` == 'Darwin' ]; then
|
||||
export PM_PACKAGES_ROOT="${HOME}/Library/Application Support/packman-cache"
|
||||
else
|
||||
if [ -z "${XDG_CACHE_HOME:-}" ]; then
|
||||
export PM_PACKAGES_ROOT="${HOME}/.cache/packman"
|
||||
else
|
||||
export PM_PACKAGES_ROOT="${XDG_CACHE_HOME}/packman"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [[ "$SAVED_SETTINGS" != *"x"* ]]; then
|
||||
set +x
|
||||
fi
|
||||
|
||||
# Ensure the packages root path exists:
|
||||
if [ ! -d "$PM_PACKAGES_ROOT" ]; then
|
||||
echo "Creating packman packages cache at $PM_PACKAGES_ROOT"
|
||||
mkdir -p -m a+rwx "$PM_PACKAGES_ROOT"
|
||||
fi
|
||||
|
||||
fetch_file_from_s3()
|
||||
{
|
||||
SOURCE=$1
|
||||
SOURCE_URL=http://bootstrap.packman.nvidia.com/$SOURCE
|
||||
TARGET=$2
|
||||
echo "Fetching $SOURCE from bootstrap.packman.nvidia.com ..."
|
||||
if command -v wget >/dev/null 2>&1; then
|
||||
wget $PM_WGET_QUIET -O$TARGET $SOURCE_URL
|
||||
else
|
||||
curl -o $TARGET $SOURCE_URL $PM_CURL_SILENT
|
||||
fi
|
||||
}
|
||||
|
||||
generate_temp_file_name()
|
||||
{
|
||||
if [ `uname` == "Darwin" ]; then
|
||||
local tmpfile=`mktemp -t packman`
|
||||
else
|
||||
local tmpfile=`mktemp -t packman.XXXXXXXX`
|
||||
fi
|
||||
echo "$tmpfile"
|
||||
}
|
||||
|
||||
install_python()
|
||||
{
|
||||
PLATFORM=`uname`
|
||||
PROCESSOR=`uname -m`
|
||||
PYTHON_VERSION=3.10.5-1
|
||||
|
||||
if [ $PLATFORM == 'Darwin' ]; then
|
||||
PYTHON_PACKAGE=$PYTHON_VERSION-macos-x86_64
|
||||
elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'x86_64' ]; then
|
||||
PYTHON_PACKAGE=$PYTHON_VERSION-linux-x86_64
|
||||
elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'aarch64' ]; then
|
||||
PYTHON_PACKAGE=$PYTHON_VERSION-linux-aarch64
|
||||
else
|
||||
echo "Operating system not supported"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PYTHON_INSTALL_FOLDER="$PM_PACKAGES_ROOT/python/$PYTHON_PACKAGE"
|
||||
if [ ! -d "$PYTHON_INSTALL_FOLDER" ]; then
|
||||
mkdir -p "$PYTHON_INSTALL_FOLDER"
|
||||
fi
|
||||
|
||||
export PM_PYTHON="$PYTHON_INSTALL_FOLDER/python"
|
||||
|
||||
if [ ! -f "$PM_PYTHON" ]; then
|
||||
PYTHON_PACKAGE_TMP=$(generate_temp_file_name)
|
||||
fetch_file_from_s3 "python@$PYTHON_PACKAGE.tar.gz" "$PYTHON_PACKAGE_TMP"
|
||||
if [ "$?" -eq "0" ]; then
|
||||
echo "Unpacking python"
|
||||
tar -xf "$PYTHON_PACKAGE_TMP" -C "$PYTHON_INSTALL_FOLDER"
|
||||
rm "$PYTHON_PACKAGE_TMP"
|
||||
else
|
||||
echo "Failed downloading the Python interpreter"
|
||||
exit $?
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Ensure python is available:
|
||||
if [ -z "${PM_PYTHON_EXT:-}" ]; then
|
||||
install_python
|
||||
else
|
||||
PM_PYTHON="$PM_PYTHON_EXT"
|
||||
fi
|
||||
|
||||
# The packman module may be externally configured
|
||||
if [ -z "${PM_MODULE_DIR_EXT:-}" ]; then
|
||||
PM_MODULE_DIR="$PM_PACKAGES_ROOT/packman-common/$PM_PACKMAN_VERSION"
|
||||
else
|
||||
PM_MODULE_DIR="$PM_MODULE_DIR_EXT"
|
||||
fi
|
||||
export PM_MODULE="$PM_MODULE_DIR/run.py"
|
||||
|
||||
# Ensure the packman package exists:
|
||||
if [ ! -f "$PM_MODULE" ]; then
|
||||
# Remove a previously corrupt packman-common if it's there
|
||||
if [ -d "$PM_MODULE_DIR" ]; then
|
||||
rm -rf "$PM_MODULE_DIR"
|
||||
fi
|
||||
PM_MODULE_PACKAGE="packman-common@$PM_PACKMAN_VERSION.zip"
|
||||
TARGET=$(generate_temp_file_name)
|
||||
# We always fetch packman from S3:
|
||||
fetch_file_from_s3 "$PM_MODULE_PACKAGE" "$TARGET"
|
||||
if [ "$?" -eq "0" ]; then
|
||||
echo "Unpacking ..."
|
||||
"$PM_PYTHON" -S -s -u -E "$PM_INSTALL_PATH/bootstrap/install_package.py" "$TARGET" "$PM_MODULE_DIR"
|
||||
rm "$TARGET"
|
||||
else
|
||||
echo "Failure while fetching packman module from S3!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Generate temporary file name for environment variables:
|
||||
PM_VAR_PATH=`mktemp -u -t tmp.$$.pmvars.XXXXXX`
|
||||
|
||||
if [ $# -ne 0 ]
|
||||
then
|
||||
PM_VAR_PATH_ARG=--var-path="$PM_VAR_PATH"
|
||||
fi
|
||||
|
||||
"$PM_PYTHON" -S -s -u -E "$PM_MODULE" "$@" ${PM_VAR_PATH_ARG:-}
|
||||
exit_code=$?
|
||||
# Export the variables if the file was used and remove the file:
|
||||
if [ -f "$PM_VAR_PATH" ]; then
|
||||
while read -r line
|
||||
do
|
||||
if [ ${#line} -gt 0 ]; then
|
||||
export "$line"
|
||||
fi
|
||||
done < "$PM_VAR_PATH"
|
||||
rm -f "$PM_VAR_PATH"
|
||||
fi
|
||||
|
||||
# avoid leaking -e and -u into the host script if they weren't originally set
|
||||
if [[ ! ( "$SAVED_SETTINGS" =~ e ) ]]; then
|
||||
set +e
|
||||
fi
|
||||
|
||||
if [[ ! ( "$SAVED_SETTINGS" =~ u ) ]]; then
|
||||
# the e setting is always set in source mode so we remove it here so it
|
||||
# doesn't leak (in regular ./ execution doesn't matter)
|
||||
set +u
|
||||
fi
|
||||
}
|
||||
|
||||
# Return the exit code from python
|
||||
if [ "$exit_code" != 0 ]; then
|
||||
exit "$exit_code"
|
||||
main() {
|
||||
# This is necessary for newer macOS
|
||||
if [ `uname` == 'Darwin' ]; then
|
||||
export LC_ALL=en_US.UTF-8
|
||||
export LANG=en_US.UTF-8
|
||||
fi
|
||||
|
||||
# We cannot rely on realpath, it isn't installed on macOS and some Linux distros
|
||||
get_abs_filename() {
|
||||
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
|
||||
}
|
||||
|
||||
# Specify where packman command exists
|
||||
export PM_INSTALL_PATH="$(get_abs_filename "$(dirname "${BASH_SOURCE}")")"
|
||||
|
||||
# The packages root may already be configured by the user
|
||||
if [ -z "${PM_PACKAGES_ROOT:-}" ]; then
|
||||
# Set variable temporarily in this process so that the following execution will work
|
||||
if [ `uname` == 'Darwin' ]; then
|
||||
export PM_PACKAGES_ROOT="${HOME}/Library/Application Support/packman-cache"
|
||||
else
|
||||
if [ -z "${XDG_CACHE_HOME:-}" ]; then
|
||||
export PM_PACKAGES_ROOT="${HOME}/.cache/packman"
|
||||
else
|
||||
export PM_PACKAGES_ROOT="${XDG_CACHE_HOME}/packman"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ensure the packages root path exists:
|
||||
if [ ! -d "$PM_PACKAGES_ROOT" ]; then
|
||||
echo "Creating packman packages cache at $PM_PACKAGES_ROOT"
|
||||
mkdir -p "$PM_PACKAGES_ROOT" || return 1
|
||||
fi
|
||||
|
||||
execute_with_retry()
|
||||
{
|
||||
local CMD="$1"
|
||||
local MAX_TRIES=4
|
||||
local DELAY=2
|
||||
local TRIES=0
|
||||
local exit_code
|
||||
|
||||
while [ $TRIES -lt $MAX_TRIES ]
|
||||
do
|
||||
((TRIES++))
|
||||
eval $CMD
|
||||
exit_code=$?
|
||||
if [ $exit_code -eq 0 ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ $TRIES -lt $MAX_TRIES ]; then
|
||||
echo "Attempt $TRIES failed. Retrying in $DELAY seconds ..."
|
||||
sleep $DELAY
|
||||
DELAY=$((DELAY * DELAY))
|
||||
echo "Retrying ..."
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Command failed after $MAX_TRIES attempts: $CMD"
|
||||
return $exit_code
|
||||
}
|
||||
|
||||
fetch_file_from_s3()
|
||||
{
|
||||
local SOURCE=$1
|
||||
local SOURCE_URL=https://bootstrap.packman.nvidia.com/$SOURCE
|
||||
local TARGET=$2
|
||||
echo "Fetching $SOURCE from bootstrap.packman.nvidia.com ..."
|
||||
local CMD="curl -o $TARGET $SOURCE_URL $PM_CURL_SILENT"
|
||||
if command -v wget >/dev/null 2>&1; then
|
||||
CMD="wget $PM_WGET_QUIET -O$TARGET $SOURCE_URL"
|
||||
fi
|
||||
execute_with_retry "$CMD"
|
||||
return $?
|
||||
}
|
||||
|
||||
generate_temp_file_name()
|
||||
{
|
||||
if [ `uname` == "Darwin" ]; then
|
||||
local tmpfile=`mktemp -t packman`
|
||||
else
|
||||
local tmpfile=`mktemp -t packman.XXXXXXXX`
|
||||
fi
|
||||
echo "$tmpfile"
|
||||
}
|
||||
|
||||
install_python()
|
||||
{
|
||||
PLATFORM=`uname`
|
||||
PROCESSOR=`uname -m`
|
||||
PYTHON_VERSION=3.12.15-nv1-pf
|
||||
PYTHON_EXE=python
|
||||
PYTHON_CONTAINER=tar.gz
|
||||
|
||||
if [ $PLATFORM == 'Darwin' ]; then
|
||||
PYTHON_PACKAGE=3.12.15-macos-aarch64
|
||||
elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'x86_64' ]; then
|
||||
PYTHON_PACKAGE=$PYTHON_VERSION-manylinux_2_35-x86_64
|
||||
elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'aarch64' ]; then
|
||||
PYTHON_PACKAGE=$PYTHON_VERSION-manylinux_2_35-aarch64
|
||||
elif [[ $PLATFORM =~ ^MINGW.* ]] && [ $PROCESSOR == 'x86_64' ]; then
|
||||
PYTHON_PACKAGE=$PYTHON_VERSION-windows-x86_64
|
||||
PYTHON_EXE=python.exe
|
||||
PYTHON_CONTAINER=zip
|
||||
else
|
||||
echo "Operating system not supported"
|
||||
return 1
|
||||
fi
|
||||
|
||||
PYTHON_INSTALL_ROOT="$PM_PACKAGES_ROOT/python"
|
||||
PYTHON_INSTALL_FOLDER="$PYTHON_INSTALL_ROOT/$PYTHON_PACKAGE"
|
||||
export PM_PYTHON="$PYTHON_INSTALL_FOLDER/$PYTHON_EXE"
|
||||
|
||||
if [ ! -f "$PM_PYTHON" ]; then
|
||||
mkdir -p "$PYTHON_INSTALL_ROOT" || return 1
|
||||
|
||||
PYTHON_PACKAGE_TMP=""
|
||||
PYTHON_INSTALL_STAGING_PARENT=""
|
||||
PYTHON_INSTALL_STATUS=0
|
||||
cleanup_python_install()
|
||||
{
|
||||
local CLEANUP_STATUS=0
|
||||
if [ -n "$PYTHON_PACKAGE_TMP" ]; then
|
||||
rm -f "$PYTHON_PACKAGE_TMP" || CLEANUP_STATUS=1
|
||||
fi
|
||||
if [ -n "$PYTHON_INSTALL_STAGING_PARENT" ]; then
|
||||
rm -rf "$PYTHON_INSTALL_STAGING_PARENT" || CLEANUP_STATUS=1
|
||||
fi
|
||||
return $CLEANUP_STATUS
|
||||
}
|
||||
|
||||
PYTHON_PACKAGE_TMP=$(generate_temp_file_name)
|
||||
fetch_file_from_s3 "python@$PYTHON_PACKAGE.$PYTHON_CONTAINER" "$PYTHON_PACKAGE_TMP" || PYTHON_INSTALL_STATUS=1
|
||||
|
||||
if [ $PYTHON_INSTALL_STATUS -eq 0 ]; then
|
||||
PYTHON_INSTALL_STAGING_PARENT=$(mktemp -d "$PYTHON_INSTALL_ROOT/$PYTHON_PACKAGE.tmp.XXXXXXXX") || PYTHON_INSTALL_STATUS=1
|
||||
fi
|
||||
|
||||
if [ $PYTHON_INSTALL_STATUS -eq 0 ]; then
|
||||
PYTHON_INSTALL_TMP="$PYTHON_INSTALL_STAGING_PARENT/$PYTHON_PACKAGE"
|
||||
mkdir "$PYTHON_INSTALL_TMP" || PYTHON_INSTALL_STATUS=1
|
||||
fi
|
||||
|
||||
if [ $PYTHON_INSTALL_STATUS -eq 0 ]; then
|
||||
echo "Unpacking python"
|
||||
if [ "$PYTHON_CONTAINER" == "zip" ]; then
|
||||
unzip -q "$PYTHON_PACKAGE_TMP" -d "$PYTHON_INSTALL_TMP" || PYTHON_INSTALL_STATUS=1
|
||||
else
|
||||
tar -xf "$PYTHON_PACKAGE_TMP" -C "$PYTHON_INSTALL_TMP" || PYTHON_INSTALL_STATUS=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $PYTHON_INSTALL_STATUS -eq 0 ]; then
|
||||
# Move a version-named child into the install root instead of moving the
|
||||
# unique temp folder directly to $PYTHON_INSTALL_FOLDER. If another
|
||||
# process has already created $PYTHON_INSTALL_FOLDER, plain mv treats
|
||||
# that existing folder as a parent and may nest the source inside it.
|
||||
# Keeping the source basename equal to $PYTHON_PACKAGE makes that
|
||||
# competing install fail cleanly instead.
|
||||
mv "$PYTHON_INSTALL_TMP" "$PYTHON_INSTALL_ROOT" 2> /dev/null || {
|
||||
if [ ! -f "$PM_PYTHON" ]; then
|
||||
echo "Failed to install Python to '$PYTHON_INSTALL_FOLDER'. Please remove the directory and try again."
|
||||
PYTHON_INSTALL_STATUS=1
|
||||
fi
|
||||
}
|
||||
fi
|
||||
|
||||
cleanup_python_install || PYTHON_INSTALL_STATUS=1
|
||||
return $PYTHON_INSTALL_STATUS
|
||||
fi
|
||||
}
|
||||
|
||||
# Ensure python is available:
|
||||
if [ -z "${PM_PYTHON_EXT:-}" ]; then
|
||||
install_python || return 1
|
||||
else
|
||||
PM_PYTHON="$PM_PYTHON_EXT"
|
||||
fi
|
||||
|
||||
# The packman module may be externally configured
|
||||
if [ -z "${PM_MODULE_DIR_EXT:-}" ]; then
|
||||
PM_MODULE_DIR="$PM_PACKAGES_ROOT/packman-common/$PM_PACKMAN_VERSION"
|
||||
else
|
||||
PM_MODULE_DIR="$PM_MODULE_DIR_EXT"
|
||||
fi
|
||||
export PM_MODULE="$PM_MODULE_DIR/run.py"
|
||||
|
||||
# Ensure the packman package exists:
|
||||
if [ ! -f "$PM_MODULE" ]; then
|
||||
# Remove a previously corrupt packman-common if it's there
|
||||
if [ -d "$PM_MODULE_DIR" ]; then
|
||||
rm -rf "$PM_MODULE_DIR" || return 1
|
||||
fi
|
||||
PM_MODULE_PACKAGE="packman-common@$PM_PACKMAN_VERSION.zip"
|
||||
TARGET=$(generate_temp_file_name)
|
||||
# We always fetch packman from S3:
|
||||
fetch_file_from_s3 "$PM_MODULE_PACKAGE" "$TARGET" || return 1
|
||||
echo "Unpacking ..."
|
||||
"$PM_PYTHON" -S -s -u -E "$PM_INSTALL_PATH/bootstrap/install_package.py" "$TARGET" "$PM_MODULE_DIR" || return 1
|
||||
rm "$TARGET" || return 1
|
||||
fi
|
||||
|
||||
# Use a private directory so the variable file cannot be replaced before Python opens it.
|
||||
PM_VAR_DIR=$(mktemp -d -t tmp.$$.pmvars.XXXXXX) || return 1
|
||||
PM_VAR_PATH="$PM_VAR_DIR/variables"
|
||||
|
||||
if [ $# -ne 0 ]; then
|
||||
PM_VAR_PATH_ARG=--var-path="$PM_VAR_PATH"
|
||||
else
|
||||
PM_VAR_PATH_ARG=""
|
||||
fi
|
||||
|
||||
"$PM_PYTHON" -S -s -u -E "$PM_MODULE" "$@" ${PM_VAR_PATH_ARG:-} || return 1
|
||||
# Export the variables if the file was used:
|
||||
if [ -f "$PM_VAR_PATH" ]; then
|
||||
while read -r line
|
||||
do
|
||||
name=${line%%=*}
|
||||
if [[ "$line" == *=* && "$name" == PM_* && "$name" != *[!A-Za-z0-9_]* ]]; then
|
||||
export "$line"
|
||||
fi
|
||||
done < "$PM_VAR_PATH"
|
||||
fi
|
||||
|
||||
# Return success
|
||||
return 0
|
||||
}
|
||||
|
||||
main "$@"
|
||||
exit_code=$?
|
||||
cleanup
|
||||
|
||||
# Determine execution context and return accordingly
|
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||
# This is direct execution
|
||||
exit $exit_code
|
||||
else
|
||||
# This is sourced execution
|
||||
return $exit_code
|
||||
fi
|
||||
|
||||
+22
-11
@@ -1,9 +1,13 @@
|
||||
:: RUN_PM_MODULE must always be at the same spot for packman update to work (batch reloads file during update!)
|
||||
:: [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
|
||||
:: Reset errorlevel status (don't inherit from caller)
|
||||
:: SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
:: SPDX-License-Identifier: Apache-2.0
|
||||
:: pad [x]
|
||||
@call :ECHO_AND_RESET_ERROR
|
||||
|
||||
:: You can remove this section if you do your own manual configuration of the dev machines
|
||||
set PM_PACKMAN_VERSION=8.7.0
|
||||
set PM_PYTHON_VERSION=3.12.15-nv1-pf-windows-x86_64
|
||||
set PM_PACKMAN_COMMON_SHA256=d6c75a6112b9c341b6f024bef3e141ac24287f20746956860365df103b9a3faa
|
||||
|
||||
:: Optional configuration for local dev
|
||||
call :CONFIGURE
|
||||
if %errorlevel% neq 0 ( exit /b %errorlevel% )
|
||||
|
||||
@@ -21,8 +25,9 @@ if "%1"=="install" goto :SET_VAR_PATH
|
||||
if %errorlevel% neq 0 ( exit /b %errorlevel% )
|
||||
|
||||
:: Marshall environment variables into the current environment if they have been generated and remove temporary file
|
||||
if not defined PM_VAR_PATH_ARG goto :eof
|
||||
if exist "%PM_VAR_PATH%" (
|
||||
for /F "usebackq tokens=*" %%A in ("%PM_VAR_PATH%") do set "%%A"
|
||||
for /F "usebackq tokens=*" %%A in (`findstr /R /X "PM_[A-Za-z0-9_]*=.*" "%PM_VAR_PATH%"`) do set "%%A"
|
||||
)
|
||||
if %errorlevel% neq 0 ( goto :VAR_ERROR )
|
||||
|
||||
@@ -36,11 +41,11 @@ goto :eof
|
||||
|
||||
:: Subroutines below
|
||||
:PYTHON_ENV_ERROR
|
||||
@echo User environment variable PM_PYTHON is not set! Please configure machine for packman or call configure.bat.
|
||||
@echo User environment variable PM_PYTHON is not set! Please configure machine for packman or call configure.ps1.
|
||||
exit /b 1
|
||||
|
||||
:MODULE_ENV_ERROR
|
||||
@echo User environment variable PM_MODULE is not set! Please configure machine for packman or call configure.bat.
|
||||
@echo User environment variable PM_MODULE is not set! Please configure machine for packman or call configure.ps1.
|
||||
exit /b 1
|
||||
|
||||
:VAR_ERROR
|
||||
@@ -75,11 +80,17 @@ if %errorlevel% equ 0 (
|
||||
:: trim leading space (this is safe even when PM_OLD_CODE_PAGE has not been set)
|
||||
set PM_OLD_CODE_PAGE=%PM_OLD_CODE_PAGE:~1%
|
||||
if "%PM_OLD_CODE_PAGE%" equ "65001" (
|
||||
chcp 437 > nul
|
||||
set PM_RESTORE_CODE_PAGE=1
|
||||
chcp 437 > nul 2>&1 && set PM_RESTORE_CODE_PAGE=1
|
||||
)
|
||||
:: Capture configure.ps1 stdout directly via `for /f` instead of a shared file since those get messy
|
||||
:: and we can run into race conditions. The trailing `&& echo PM_CONFIGURE_OK=1` sentinel lets us
|
||||
:: recover the exit status that `for /f` would otherwise swallow.
|
||||
set PM_CONFIG_ERRORLEVEL=1
|
||||
for /f "delims=" %%A in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\bootstrap\configure.ps1" -PackmanVersion "%PM_PACKMAN_VERSION%" -PythonVersion "%PM_PYTHON_VERSION%" -PackmanCommonSha256 "%PM_PACKMAN_COMMON_SHA256%" ^&^& echo PM_CONFIGURE_OK^=1') do set "%%A"
|
||||
if defined PM_CONFIGURE_OK (
|
||||
set PM_CONFIG_ERRORLEVEL=0
|
||||
set "PM_CONFIGURE_OK="
|
||||
)
|
||||
call "%~dp0\bootstrap\configure.bat"
|
||||
set PM_CONFIG_ERRORLEVEL=%errorlevel%
|
||||
if defined PM_RESTORE_CODE_PAGE (
|
||||
:: Restore code page
|
||||
chcp %PM_OLD_CODE_PAGE% > nul
|
||||
|
||||
@@ -28,6 +28,25 @@ import os
|
||||
import platform
|
||||
import sys
|
||||
|
||||
MIN_PYTHON_VERSION = (3, 10, 0)
|
||||
MAX_PYTHON_VERSION = (3, 12, 15)
|
||||
|
||||
|
||||
def is_valid_python_version(version: tuple[int, int, int] = sys.version_info[:3]):
|
||||
return MIN_PYTHON_VERSION <= version <= MAX_PYTHON_VERSION
|
||||
|
||||
|
||||
def validate_python_version(version: tuple[int, int, int] = sys.version_info[:3]):
|
||||
if not is_valid_python_version(version):
|
||||
|
||||
def ver_str(pyver):
|
||||
return ".".join(str(x) for x in pyver)
|
||||
|
||||
raise RuntimeError(
|
||||
f"This version of packman requires Python {ver_str(MIN_PYTHON_VERSION)} "
|
||||
f"up to {ver_str(MAX_PYTHON_VERSION)}, but {ver_str(version)} was provided"
|
||||
)
|
||||
|
||||
|
||||
def init():
|
||||
"""Call this function to initialize the packman configuration.
|
||||
@@ -46,17 +65,7 @@ def init():
|
||||
>>> import packmanapi
|
||||
>>> packmanapi.set_verbosity_level(packmanapi.VERBOSITY_HIGH)
|
||||
"""
|
||||
major = sys.version_info.major
|
||||
minor = sys.version_info.minor
|
||||
patch = sys.version_info.micro
|
||||
if major == 3 and (minor == 10 or (minor == 11 and patch <= 2)):
|
||||
# we are good
|
||||
pass
|
||||
else:
|
||||
raise RuntimeError(
|
||||
f"This version of packman requires Python 3.10.0 up to 3.11.2, "
|
||||
f"but {major}.{minor}.{patch} was provided"
|
||||
)
|
||||
validate_python_version()
|
||||
conf_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
os.environ["PM_INSTALL_PATH"] = conf_dir
|
||||
packages_root = get_packages_root(conf_dir)
|
||||
@@ -79,7 +88,7 @@ def get_packages_root(conf_dir: str) -> str:
|
||||
)
|
||||
elif platform_name == "Linux":
|
||||
try:
|
||||
cache_root = os.environ["XDG_HOME_CACHE"]
|
||||
cache_root = os.environ["XDG_CACHE_HOME"]
|
||||
except KeyError:
|
||||
cache_root = os.path.join(os.path.expanduser("~"), ".cache")
|
||||
return os.path.join(cache_root, "packman")
|
||||
@@ -98,7 +107,10 @@ def get_module_dir(conf_dir, packages_root: str, version: str) -> str:
|
||||
tf = tempfile.NamedTemporaryFile(delete=False)
|
||||
target_name = tf.name
|
||||
tf.close()
|
||||
url = f"http://bootstrap.packman.nvidia.com/packman-common@{version}.zip"
|
||||
# Forced to change to https because some customers will simply not allow http,
|
||||
# even when it's used in a safe way (with download checksum verification).
|
||||
# See issue #367 for more background.
|
||||
url = f"https://bootstrap.packman.nvidia.com/packman-common@{version}.zip"
|
||||
print(f"Downloading '{url}' ...")
|
||||
import urllib.request
|
||||
|
||||
|
||||
@@ -1,16 +1,5 @@
|
||||
:: Copyright 2019-2020 NVIDIA CORPORATION
|
||||
::
|
||||
:: Licensed under the Apache License, Version 2.0 (the "License");
|
||||
:: you may not use this file except in compliance with the License.
|
||||
:: You may obtain a copy of the License at
|
||||
::
|
||||
:: http://www.apache.org/licenses/LICENSE-2.0
|
||||
::
|
||||
:: Unless required by applicable law or agreed to in writing, software
|
||||
:: distributed under the License is distributed on an "AS IS" BASIS,
|
||||
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
:: See the License for the specific language governing permissions and
|
||||
:: limitations under the License.
|
||||
:: SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
:: SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
@echo off
|
||||
setlocal enableextensions
|
||||
|
||||
+2
-13
@@ -1,18 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2019-2020 NVIDIA CORPORATION
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<project toolsVersion="5.6">
|
||||
<dependency name="repo_man" linkPath="../_repo/deps/repo_man">
|
||||
<package name="repo_man" version="1.58.4" />
|
||||
<package name="repo_man" version="2.10.1" />
|
||||
</dependency>
|
||||
<dependency name="repo_format" linkPath="../_repo/deps/repo_format">
|
||||
<package name="repo_format" version="2.12.5" />
|
||||
</dependency>
|
||||
<dependency name="repo_package" linkPath="../_repo/deps/repo_package">
|
||||
<package name="repo_package" version="5.9.12" />
|
||||
<package name="repo_package" version="6.5.2" />
|
||||
</dependency>
|
||||
<!-- <dependency name="repo_lint" linkPath="../_repo/deps/repo_lint">-->
|
||||
<!-- <package name="repo_lint" version="1.6.1" />-->
|
||||
|
||||
Reference in New Issue
Block a user