diff options
| author | Bryan Galdrikian <[email protected]> | 2024-12-20 16:15:12 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2024-12-20 16:15:12 -0800 |
| commit | b16fdc73d55b467b15595e32c70418ea55c1fe2b (patch) | |
| tree | 4213c6fe17aafd8bdf23e66d376ca03ccb33ae86 | |
| parent | Removing reference to deprecated documentation server (diff) | |
| download | blast-b16fdc73d55b467b15595e32c70418ea55c1fe2b.tar.xz blast-b16fdc73d55b467b15595e32c70418ea55c1fe2b.zip | |
Updating packman
30 files changed, 1136 insertions, 480 deletions
@@ -1,5 +1,5 @@ -Blast 1.1.9
-===========
+Blast 1.1.10
+============

diff --git a/buildtools/get_build_deps.cmd b/buildtools/get_build_deps.cmd index 2e87f50..fe24227 100755 --- a/buildtools/get_build_deps.cmd +++ b/buildtools/get_build_deps.cmd @@ -1,5 +1,5 @@ @echo Getting build tool dependencies for %1 ...
-@call "%~dp0packman5\packman.cmd" pull "%~dp0build_platform_deps.xml" --platform %1
+@call "%~dp0packman\packman.cmd" pull "%~dp0build_platform_deps.xml" --platform %1
@if %ERRORLEVEL% neq 0 (
@exit /b %errorlevel%
) else (
diff --git a/buildtools/packman/bootstrap/configure.bat b/buildtools/packman/bootstrap/configure.bat new file mode 100644 index 0000000..33fb441 --- /dev/null +++ b/buildtools/packman/bootstrap/configure.bat @@ -0,0 +1,169 @@ +:: 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 diff --git a/buildtools/packman/bootstrap/download_file_from_url.ps1 b/buildtools/packman/bootstrap/download_file_from_url.ps1 new file mode 100644 index 0000000..df55745 --- /dev/null +++ b/buildtools/packman/bootstrap/download_file_from_url.ps1 @@ -0,0 +1,53 @@ +<# +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
\ No newline at end of file diff --git a/buildtools/packman/bootstrap/fetch_file_from_packman_bootstrap.cmd b/buildtools/packman/bootstrap/fetch_file_from_packman_bootstrap.cmd new file mode 100644 index 0000000..bf3a88d --- /dev/null +++ b/buildtools/packman/bootstrap/fetch_file_from_packman_bootstrap.cmd @@ -0,0 +1,35 @@ +:: 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
\ No newline at end of file diff --git a/buildtools/packman/bootstrap/generate_temp_file_name.ps1 b/buildtools/packman/bootstrap/generate_temp_file_name.ps1 new file mode 100644 index 0000000..aa3f004 --- /dev/null +++ b/buildtools/packman/bootstrap/generate_temp_file_name.ps1 @@ -0,0 +1,161 @@ +<# +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 diff --git a/buildtools/packman/bootstrap/generate_temp_folder.ps1 b/buildtools/packman/bootstrap/generate_temp_folder.ps1 new file mode 100644 index 0000000..d34fc9c --- /dev/null +++ b/buildtools/packman/bootstrap/generate_temp_folder.ps1 @@ -0,0 +1,167 @@ +<# +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 diff --git a/buildtools/packman/bootstrap/install_package.py b/buildtools/packman/bootstrap/install_package.py new file mode 100644 index 0000000..4542c4b --- /dev/null +++ b/buildtools/packman/bootstrap/install_package.py @@ -0,0 +1,172 @@ +# 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. + +import logging +import zipfile +import tempfile +import sys +import os +import stat +import time +import hashlib +from typing import Any, Callable, Union + + +RENAME_RETRY_COUNT = 100 +RENAME_RETRY_DELAY = 0.1 + +logging.basicConfig(level=logging.WARNING, format="%(message)s") +logger = logging.getLogger("install_package") + + +def remove_directory_item(path): + if os.path.islink(path) or os.path.isfile(path): + try: + os.remove(path) + except PermissionError: + # make sure we have access and try again: + os.chmod(path, stat.S_IRWXU) + os.remove(path) + else: + # try first to delete the dir because this will work for folder junctions, otherwise we would follow the junctions and cause destruction! + clean_out_folder = False + try: + # make sure we have access preemptively - this is necessary because recursing into a directory without permissions + # will only lead to heart ache + os.chmod(path, stat.S_IRWXU) + os.rmdir(path) + except OSError: + clean_out_folder = True + + if clean_out_folder: + # we should make sure the directory is empty + names = os.listdir(path) + for name in names: + fullname = os.path.join(path, name) + remove_directory_item(fullname) + # now try to again get rid of the folder - and not catch if it raises: + os.rmdir(path) + + +class StagingDirectory: + def __init__(self, staging_path): + self.staging_path = staging_path + self.temp_folder_path = None + os.makedirs(staging_path, exist_ok=True) + + def __enter__(self): + self.temp_folder_path = tempfile.mkdtemp(prefix="ver-", dir=self.staging_path) + return self + + def get_temp_folder_path(self): + return self.temp_folder_path + + # this function renames the temp staging folder to folder_name, it is required that the parent path exists! + def promote_and_rename(self, folder_name): + abs_dst_folder_name = os.path.join(self.staging_path, folder_name) + os.rename(self.temp_folder_path, abs_dst_folder_name) + + def __exit__(self, type, value, traceback): + # Remove temp staging folder if it's still there (something went wrong): + path = self.temp_folder_path + if os.path.isdir(path): + remove_directory_item(path) + + +def rename_folder(staging_dir: StagingDirectory, folder_name: str): + try: + staging_dir.promote_and_rename(folder_name) + except OSError as exc: + # if we failed to rename because the folder now exists we can assume that another packman process + # has managed to update the package before us - in all other cases we re-raise the exception + abs_dst_folder_name = os.path.join(staging_dir.staging_path, folder_name) + if os.path.exists(abs_dst_folder_name): + logger.warning( + f"Directory {abs_dst_folder_name} already present, package installation already completed" + ) + else: + raise + + +def call_with_retry( + op_name: str, func: Callable, retry_count: int = 3, retry_delay: float = 20 +) -> Any: + retries_left = retry_count + while True: + try: + return func() + except (OSError, IOError) as exc: + logger.warning(f"Failure while executing {op_name} [{str(exc)}]") + if retries_left: + retry_str = "retry" if retries_left == 1 else "retries" + logger.warning( + f"Retrying after {retry_delay} seconds" + f" ({retries_left} {retry_str} left) ..." + ) + time.sleep(retry_delay) + else: + logger.error("Maximum retries exceeded, giving up") + raise + retries_left -= 1 + + +def rename_folder_with_retry(staging_dir: StagingDirectory, folder_name): + dst_path = os.path.join(staging_dir.staging_path, folder_name) + call_with_retry( + f"rename {staging_dir.get_temp_folder_path()} -> {dst_path}", + lambda: rename_folder(staging_dir, folder_name), + RENAME_RETRY_COUNT, + RENAME_RETRY_DELAY, + ) + + +def generate_sha256_for_file(file_path: Union[str, os.PathLike]) -> str: + """Returns the SHA-256 hex digest for the file at `file_path`""" + hash = hashlib.sha256() + # Read the file in binary mode and update the hash object with data + with open(file_path, "rb") as file: + for chunk in iter(lambda: file.read(4096), b""): + hash.update(chunk) + return hash.hexdigest() + + +def install_common_module(package_path, install_path): + COMMON_SHA256 = "0a2064434cca0170411c86f23349f9618556dc380d3589a2361db38ffeea9cac" + package_sha256 = generate_sha256_for_file(package_path) + if package_sha256 != COMMON_SHA256: + raise RuntimeError( + f"Package at '{package_path}' must have a sha256 of '{COMMON_SHA256}' " + f"but was found to have '{package_sha256}'" + ) + staging_path, version = os.path.split(install_path) + with StagingDirectory(staging_path) as staging_dir: + output_folder = staging_dir.get_temp_folder_path() + with zipfile.ZipFile(package_path, allowZip64=True) as zip_file: + zip_file.extractall(output_folder) + + # attempt the rename operation + rename_folder_with_retry(staging_dir, version) + + print(f"Package successfully installed to {install_path}") + + +if __name__ == "__main__": + executable_paths = os.getenv("PATH") + paths_list = executable_paths.split(os.path.pathsep) if executable_paths else [] + target_path_np = os.path.normpath(sys.argv[2]) + target_path_np_nc = os.path.normcase(target_path_np) + for exec_path in paths_list: + if os.path.normcase(os.path.normpath(exec_path)) == target_path_np_nc: + raise RuntimeError(f"packman will not install to executable path '{exec_path}'") + install_common_module(sys.argv[1], target_path_np) diff --git a/buildtools/packman/config.packman.xml b/buildtools/packman/config.packman.xml new file mode 100644 index 0000000..24ca05d --- /dev/null +++ b/buildtools/packman/config.packman.xml @@ -0,0 +1,5 @@ +<config remotes="cloudfront"> + <remote2 name="cloudfront"> + <transport actions="download" protocol="https" packageLocation="d4i3qtqj3r0z5.cloudfront.net/${name}@${version}" /> + </remote2> +</config> diff --git a/buildtools/packman/packman.cmd b/buildtools/packman/packman.cmd new file mode 100644 index 0000000..e55b2f0 --- /dev/null +++ b/buildtools/packman/packman.cmd @@ -0,0 +1,89 @@ +:: 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) +@call :ECHO_AND_RESET_ERROR + +:: You can remove this section if you do your own manual configuration of the dev machines +call :CONFIGURE +if %errorlevel% neq 0 ( exit /b %errorlevel% ) + +:: Everything below is mandatory +if not defined PM_PYTHON goto :PYTHON_ENV_ERROR +if not defined PM_MODULE goto :MODULE_ENV_ERROR + +set PM_VAR_PATH_ARG= + +if "%1"=="pull" goto :SET_VAR_PATH +if "%1"=="install" goto :SET_VAR_PATH + +:RUN_PM_MODULE +"%PM_PYTHON%" -S -s -u -E "%PM_MODULE%" %* %PM_VAR_PATH_ARG% +if %errorlevel% neq 0 ( exit /b %errorlevel% ) + +:: Marshall environment variables into the current environment if they have been generated and remove temporary file +if exist "%PM_VAR_PATH%" ( + for /F "usebackq tokens=*" %%A in ("%PM_VAR_PATH%") do set "%%A" +) +if %errorlevel% neq 0 ( goto :VAR_ERROR ) + +if exist "%PM_VAR_PATH%" ( + del /F "%PM_VAR_PATH%" +) +if %errorlevel% neq 0 ( goto :VAR_ERROR ) + +set PM_VAR_PATH= +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. +exit /b 1 + +:MODULE_ENV_ERROR +@echo User environment variable PM_MODULE is not set! Please configure machine for packman or call configure.bat. +exit /b 1 + +:VAR_ERROR +@echo Error while processing and setting environment variables! +exit /b 1 + +:: pad [xxxx] +:ECHO_AND_RESET_ERROR +@echo off +if /I "%PM_VERBOSITY%"=="debug" ( + @echo on +) +exit /b 0 + +:SET_VAR_PATH +:: Generate temporary path for variable file +for /f "delims=" %%a in ('%PM_PYTHON% -S -s -u -E -c "import tempfile;file = tempfile.NamedTemporaryFile(mode='w+t', delete=False);print(file.name)"') do (set PM_VAR_PATH=%%a) +set PM_VAR_PATH_ARG=--var-path="%PM_VAR_PATH%" +goto :RUN_PM_MODULE + +:CONFIGURE +:: Must capture and set code page to work around issue #279, powershell invocation mutates console font +:: This issue only happens in Windows CMD shell when using 65001 code page. Some Git Bash implementations +:: don't support chcp so this workaround is a bit convoluted. +:: Test for chcp: +chcp > nul 2>&1 +if %errorlevel% equ 0 ( + for /f "tokens=2 delims=:" %%a in ('chcp') do (set PM_OLD_CODE_PAGE=%%a) +) else ( + call :ECHO_AND_RESET_ERROR +) +:: 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 +) +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 +) +set PM_OLD_CODE_PAGE= +set PM_RESTORE_CODE_PAGE= +exit /b %PM_CONFIG_ERRORLEVEL% diff --git a/buildtools/packman/packman.txt b/buildtools/packman/packman.txt new file mode 100644 index 0000000..b222d30 --- /dev/null +++ b/buildtools/packman/packman.txt @@ -0,0 +1,192 @@ +#!/bin/bash + +# 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. +SAVED_SETTINGS="$-" +set -eu + +if echo ${PM_VERBOSITY-} | grep -i "debug" > /dev/null ; then + set -x + PM_CURL_SILENT="" + PM_WGET_QUIET="" +else + PM_CURL_SILENT="-s -S" + PM_WGET_QUIET="--quiet" +fi +export PM_PACKMAN_VERSION=7.23.1 + +# 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 -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 + set +u +fi + +# Return the exit code from python +if [ "$exit_code" != 0 ]; then + exit "$exit_code" +fi diff --git a/buildtools/packman/python.bat b/buildtools/packman/python.bat new file mode 100644 index 0000000..08df74f --- /dev/null +++ b/buildtools/packman/python.bat @@ -0,0 +1,32 @@ +:: 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. + +@echo off +setlocal enableextensions + +call "%~dp0\packman" init +set "PYTHONPATH=%PM_MODULE_DIR%;%PYTHONPATH%" + +if not defined PYTHONNOUSERSITE ( + set PYTHONNOUSERSITE=1 +) + +REM For performance, default to unbuffered; however, allow overriding via +REM PYTHONUNBUFFERED=0 since PYTHONUNBUFFERED on windows can truncate output +REM when printing long strings +if not defined PYTHONUNBUFFERED ( + set PYTHONUNBUFFERED=1 +) + +"%PM_PYTHON%" %*
\ No newline at end of file diff --git a/buildtools/packman/python.sh b/buildtools/packman/python.sh new file mode 100644 index 0000000..74328bf --- /dev/null +++ b/buildtools/packman/python.sh @@ -0,0 +1,42 @@ +#!/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. + +set -e + +PACKMAN_CMD="$(dirname "${BASH_SOURCE}")/packman" +if [ ! -f "$PACKMAN_CMD" ]; then + PACKMAN_CMD="${PACKMAN_CMD}.sh" +fi +source "$PACKMAN_CMD" init +export PYTHONPATH="${PM_MODULE_DIR}:${PYTHONPATH}" + +if [ -z "${PYTHONNOUSERSITE:-}" ]; then + export PYTHONNOUSERSITE=1 +fi + +# For performance, default to unbuffered; however, allow overriding via +# PYTHONUNBUFFERED=0 since PYTHONUNBUFFERED on windows can truncate output +# when printing long strings +if [ -z "${PYTHONUNBUFFERED:-}" ]; then + export PYTHONUNBUFFERED=1 +fi + +# workaround for our python not shipping with certs +if [[ -z ${SSL_CERT_DIR:-} ]]; then + export SSL_CERT_DIR=/etc/ssl/certs/ +fi + +"${PM_PYTHON}" "$@" diff --git a/buildtools/packman5/config.packman.xml b/buildtools/packman5/config.packman.xml deleted file mode 100755 index a3b89aa..0000000 --- a/buildtools/packman5/config.packman.xml +++ /dev/null @@ -1,3 +0,0 @@ -<config remotes="cloudfront"> - <remote name="cloudfront" packageLocation="d4i3qtqj3r0z5.cloudfront.net/${name}@${version}" type="https" /> -</config>
\ No newline at end of file diff --git a/buildtools/packman5/packman b/buildtools/packman5/packman deleted file mode 100755 index a2fb94f..0000000 --- a/buildtools/packman5/packman +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash - -PM_PACKMAN_VERSION=5.7.2 - -# Specify where packman command exists -export PM_INSTALL_PATH=$(dirname ${BASH_SOURCE}) - -add_packages_root_to_file() -{ - FILE_PATH=$1 - if [ -f "$FILE_PATH" ]; then - if ! grep -Fq "PM_PACKAGES_ROOT" $FILE_PATH ; then - echo "Adjusting $FILE_PATH" - echo -e "export PM_PACKAGES_ROOT=\$HOME/packman-repo\n" >> $FILE_PATH - fi - fi -} - -# The packages root may already be configured by the user -if [ -z "$PM_PACKAGES_ROOT" ]; then - # Set variable permanently using .profile for this user (if exists) - add_packages_root_to_file ~/.profile - add_packages_root_to_file ~/.bashrc - # Set variable temporarily in this process so that the following execution will work - export PM_PACKAGES_ROOT="${HOME}/packman-repo" -fi - -# Ensure the packages root path exists: -if [ ! -d "$PM_PACKAGES_ROOT" ]; then - echo "Creating packman packages repository at $PM_PACKAGES_ROOT" - mkdir -p "$PM_PACKAGES_ROOT" -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/packman.py" - -fetch_file_from_s3() -{ - SOURCE=$1 - SOURCE_URL=http://packman-bootstrap.s3.amazonaws.com/$SOURCE - TARGET=$2 - echo "Fetching $SOURCE from S3 ..." - if command -v wget >/dev/null 2>&1; then - wget --quiet -O$TARGET $SOURCE_URL - else - curl -o $TARGET $SOURCE_URL -s -S - fi -} - -# Ensure the packman package exists: -if [ ! -f "$PM_MODULE" ]; then - PM_MODULE_PACKAGE="packman-common@$PM_PACKMAN_VERSION.zip" - TARGET="/tmp/$PM_MODULE_PACKAGE" - # We always fetch packman from S3: - fetch_file_from_s3 $PM_MODULE_PACKAGE $TARGET - if [ "$?" -eq "0" ]; then - echo "Unpacking ..." - mkdir -p "$PM_MODULE_DIR" - unzip -q $TARGET -d "$PM_MODULE_DIR" - rm $TARGET - else - echo "Failure while fetching packman module from S3!" - exit 1 - fi -fi - -# For now assume python is installed on the box and we just need to find it -if command -v python2.7 >/dev/null 2>&1; then - export PM_PYTHON=python2.7 -elif command -v python2 >/dev/null 2>&1; then - export PM_PYTHON=python2 -else - export PM_PYTHON=python -fi - -# Ensure 7za package exists: -PM_7za_VERSION=16.02.4 -export PM_7za_PATH="$PM_PACKAGES_ROOT/7za/$PM_7za_VERSION" -if [ ! -d "$PM_7za_PATH" ]; then - export PM_7za_PATH="$PM_PACKAGES_ROOT/chk/7za/$PM_7za_VERSION" - if [ ! -d "$PM_7za_PATH" ]; then - $PM_PYTHON -s -u -E "$PM_MODULE" pull "$PM_MODULE_DIR/deps.packman.xml" - if [ "$?" -ne 0 ]; then - echo "Failure while installing required 7za package" - exit 1 - fi - fi -fi - -# Generate temporary file name for environment variables: -PM_VAR_PATH=`mktemp -u -t tmp.$$.pmvars.XXXXXX` - -$PM_PYTHON -s -u -E "$PM_MODULE" "$@" --var-path="$PM_VAR_PATH" -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 - -# Return the exit code from python -if [ "$exit_code" != 0 ]; then - exit "$exit_code" -fi diff --git a/buildtools/packman5/packman.cmd b/buildtools/packman5/packman.cmd deleted file mode 100755 index b06f6dc..0000000 --- a/buildtools/packman5/packman.cmd +++ /dev/null @@ -1,40 +0,0 @@ -:: Reset errorlevel status so we are not inheriting this state from the calling process:
-@call :RESET_ERROR
-:: You can remove the call below if you do your own manual configuration of the dev machines
-@call "%~dp0\win-bootstrap\configure.bat"
-@if errorlevel 1 exit /b 1
-:: Everything below is mandatory
-@if not defined PM_PYTHON goto :PYTHON_ENV_ERROR
-@if not defined PM_MODULE goto :MODULE_ENV_ERROR
-
-:: Generate temporary path for variable file
-@for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile ^
--File "%~dp0win-bootstrap\generate_temp_file_name.ps1"') do @set PM_VAR_PATH=%%a
-
-@"%PM_PYTHON%" -s -u -E "%PM_MODULE%" %* --var-path="%PM_VAR_PATH%"
-@if errorlevel 1 goto :eof
-
-:: Marshall environment variables into the current environment if they have been generated and remove temporary file
-@if exist "%PM_VAR_PATH%" (
- @for /F "usebackq tokens=*" %%A in ("%PM_VAR_PATH%") do @set "%%A"
- @if errorlevel 1 goto :VAR_ERROR
- @del /F "%PM_VAR_PATH%"
-)
-@set PM_VAR_PATH=
-@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.
-@exit /b 1
-
-:MODULE_ENV_ERROR
-@echo User environment variable PM_MODULE is not set! Please configure machine for packman or call configure.bat.
-@exit /b 1
-
-:VAR_ERROR
-@echo Error while processing and setting environment variables!
-@exit /b 1
-
-:RESET_ERROR
-@exit /b 0
\ No newline at end of file diff --git a/buildtools/packman5/win-bootstrap/configure.bat b/buildtools/packman5/win-bootstrap/configure.bat deleted file mode 100755 index 223a839..0000000 --- a/buildtools/packman5/win-bootstrap/configure.bat +++ /dev/null @@ -1,146 +0,0 @@ -@set PM_PACKMAN_VERSION=5.7.2
-
-:: 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 1 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 directory %PM_PACKAGES_ROOT%
- @mkdir "%PM_PACKAGES_ROOT%"
- @if errorlevel 1 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=2.7.14-windows-x86_32
-@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_s3.cmd" %PM_PYTHON_PACKAGE% "%TARGET%"
-@if errorlevel 1 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 ...
-@expand -F:* "%TARGET%" "%TEMP_FOLDER_NAME%" 1> nul
-@del "%TARGET%"
-:: Failure during extraction to temp folder name, need to clean up and abort
-@if errorlevel 1 (
- @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 rename
-@rename "%TEMP_FOLDER_NAME%" "%PM_PYTHON_VERSION%" 1> nul
-:: Failure during move, need to clean up and abort
-@if errorlevel 1 (
- @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%\packman.py
-
-@if exist "%PM_MODULE%" goto ENSURE_7ZA
-
-@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_s3.cmd" %PM_MODULE_PACKAGE% "%TARGET%"
-@if errorlevel 1 goto ERROR
-
-@echo Unpacking ...
-@"%PM_PYTHON%" -s -u -E "%~dp0\install_package.py" "%TARGET%" "%PM_MODULE_DIR%"
-@if errorlevel 1 goto ERROR
-
-@del "%TARGET%"
-
-:ENSURE_7ZA
-@set PM_7Za_VERSION=16.02.4
-@set PM_7Za_PATH=%PM_PACKAGES_ROOT%\7za\%PM_7ZA_VERSION%
-@if exist "%PM_7Za_PATH%" goto END
-@set PM_7Za_PATH=%PM_PACKAGES_ROOT%\chk\7za\%PM_7ZA_VERSION%
-@if exist "%PM_7Za_PATH%" goto END
-
-@"%PM_PYTHON%" -s -u -E "%PM_MODULE%" pull "%PM_MODULE_DIR%\deps.packman.xml"
-@if errorlevel 1 goto ERROR
-
-@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 1
-
-:ERROR
-@echo !!! Failure while configuring local machine :( !!!
-@exit /B 1
-
-: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
diff --git a/buildtools/packman5/win-bootstrap/fetch_file_from_s3.cmd b/buildtools/packman5/win-bootstrap/fetch_file_from_s3.cmd deleted file mode 100755 index 4e31293..0000000 --- a/buildtools/packman5/win-bootstrap/fetch_file_from_s3.cmd +++ /dev/null @@ -1,22 +0,0 @@ -:: 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% from packman-bootstrap over HTTP ...
-
-@powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0fetch_file_from_s3.ps1" -sourceName %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 and is larger than 0 bytes:
-@if not exist %TARGET_PATH% goto ERROR_DOWNLOAD_FAILED
-@if %~z2==0 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
\ No newline at end of file diff --git a/buildtools/packman5/win-bootstrap/fetch_file_from_s3.ps1 b/buildtools/packman5/win-bootstrap/fetch_file_from_s3.ps1 deleted file mode 100755 index 96db7f2..0000000 --- a/buildtools/packman5/win-bootstrap/fetch_file_from_s3.ps1 +++ /dev/null @@ -1,60 +0,0 @@ -param(
-[Parameter(Mandatory=$true)][string]$sourceName=$null,
-[string]$output="out.exe"
-)
-$source = "http://packman-bootstrap.s3.amazonaws.com/" + $sourceName
-$filename = $output
-
-$triesLeft = 3
-
-do
-{
- $triesLeft -= 1
- $req = [System.Net.httpwebrequest]::Create($source)
- $req.cookiecontainer = New-Object System.net.CookieContainer
-
- try
- {
- Write-Host "Connecting to S3 ..."
- $res = $req.GetResponse()
- if($res.StatusCode -eq "OK") {
- Write-Host "Downloading ..."
- [int]$goal = $res.ContentLength
- $reader = $res.GetResponseStream()
- $writer = new-object System.IO.FileStream $fileName, "Create"
- [byte[]]$buffer = new-object byte[] 4096
- [int]$total = [int]$count = 0
- do
- {
- $count = $reader.Read($buffer, 0, $buffer.Length);
- $writer.Write($buffer, 0, $count);
- $total += $count
- if($goal -gt 0) {
- Write-Progress "Downloading $url" "Saving $total of $goal" -id 0 -percentComplete (($total/$goal)*100)
- } else {
- Write-Progress "Downloading $url" "Saving $total bytes..." -id 0
- }
- } while ($count -gt 0)
-
- $triesLeft = 0
- }
- }
- catch
- {
- Write-Host "Error connecting to S3!"
- Write-Host $_.Exception|format-list -force
- }
- finally
- {
- if ($reader)
- {
- $reader.Close()
- }
- if ($writer)
- {
- $writer.Flush()
- $writer.Close()
- }
- }
-} while ($triesLeft -gt 0)
-
diff --git a/buildtools/packman5/win-bootstrap/fetch_file_from_url.ps1 b/buildtools/packman5/win-bootstrap/fetch_file_from_url.ps1 deleted file mode 100755 index b9cb23c..0000000 --- a/buildtools/packman5/win-bootstrap/fetch_file_from_url.ps1 +++ /dev/null @@ -1,37 +0,0 @@ -param(
-[Parameter(Mandatory=$true)][string]$sourceUrl=$null,
-[Parameter(Mandatory=$true)][string]$output=$null
-)
-$source = $sourceUrl
-$filename = $output
-
-$req = [System.Net.httpwebrequest]::Create($source)
-$req.cookiecontainer = New-Object System.net.CookieContainer
-
-Write-Host "Connecting to $source ..."
-$res = $req.GetResponse()
-
-if($res.StatusCode -eq "OK") {
- Write-Host "Downloading ..."
- [int]$goal = $res.ContentLength
- $reader = $res.GetResponseStream()
- $writer = new-object System.IO.FileStream $fileName, "Create"
- [byte[]]$buffer = new-object byte[] 4096
- [int]$total = [int]$count = 0
- do
- {
- $count = $reader.Read($buffer, 0, $buffer.Length);
- $writer.Write($buffer, 0, $count);
- $total += $count
- if($goal -gt 0) {
- Write-Progress "Downloading $url" "Saving $total of $goal" -id 0 -percentComplete (($total/$goal)*100)
- } else {
- Write-Progress "Downloading $url" "Saving $total bytes..." -id 0
- }
- } while ($count -gt 0)
-
- $reader.Close()
- $writer.Flush()
- $writer.Close()
-}
-
diff --git a/buildtools/packman5/win-bootstrap/generate_temp_file_name.ps1 b/buildtools/packman5/win-bootstrap/generate_temp_file_name.ps1 deleted file mode 100755 index a8c9c1b..0000000 --- a/buildtools/packman5/win-bootstrap/generate_temp_file_name.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -$out = [System.IO.Path]::GetTempFileName()
-Write-Host $out
\ No newline at end of file diff --git a/buildtools/packman5/win-bootstrap/generate_temp_folder.ps1 b/buildtools/packman5/win-bootstrap/generate_temp_folder.ps1 deleted file mode 100644 index b24a654..0000000 --- a/buildtools/packman5/win-bootstrap/generate_temp_folder.ps1 +++ /dev/null @@ -1,7 +0,0 @@ -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 diff --git a/buildtools/packman5/win-bootstrap/install_package.py b/buildtools/packman5/win-bootstrap/install_package.py deleted file mode 100755 index 3aa294e..0000000 --- a/buildtools/packman5/win-bootstrap/install_package.py +++ /dev/null @@ -1,39 +0,0 @@ -import logging
-import zipfile
-import tempfile
-import sys
-import shutil
-
-__author__ = 'hfannar'
-logging.basicConfig(level=logging.WARNING, format="%(message)s")
-logger = logging.getLogger('install_package')
-
-
-class TemporaryDirectory:
- def __init__(self):
- self.path = None
-
- def __enter__(self):
- self.path = tempfile.mkdtemp()
- return self.path
-
- def __exit__(self, type, value, traceback ):
- # Remove temporary data created
- shutil.rmtree(self.path)
-
-
-def install_package(package_src_path, package_dst_path):
- with zipfile.ZipFile(package_src_path, allowZip64=True) as zip_file, TemporaryDirectory() as temp_dir:
- zip_file.extractall(temp_dir)
- # Recursively copy (temp_dir will be automatically cleaned up on exit)
- try:
- # Recursive copy is needed because both package name and version folder could be missing in
- # target directory:
- shutil.copytree(temp_dir, package_dst_path)
- except OSError, exc:
- logger.warning("Directory %s already present, packaged installation aborted" % package_dst_path)
- else:
- logger.info("Package successfully installed to %s" % package_dst_path)
-
-
-install_package(sys.argv[1], sys.argv[2])
\ No newline at end of file diff --git a/docs/_compile/doxygen.bat b/docs/_compile/doxygen.bat index d74cf87..f5f19ba 100755 --- a/docs/_compile/doxygen.bat +++ b/docs/_compile/doxygen.bat @@ -20,7 +20,7 @@ if exist ..\"%NAME%"_docs ( :: Run packman to ensure doxygen is there:
set DOXYGEN_VERSION=1.5.8-gameworks-win
-call "%BLAST_ROOT%\buildtools\packman5\packman.cmd" install doxygen %DOXYGEN_VERSION%
+call "%BLAST_ROOT%\buildtools\packman\packman.cmd" install doxygen %DOXYGEN_VERSION%
if errorlevel 1 (
echo ***SCRIPTERROR: packman failed to get dependencies
goto doxygen_failed
diff --git a/docs/_compile/doxygen.sh b/docs/_compile/doxygen.sh index 340e1e6..987ded8 100755 --- a/docs/_compile/doxygen.sh +++ b/docs/_compile/doxygen.sh @@ -21,7 +21,7 @@ fi DOXYGEN_VERSION=1.8.13-linux-x86_64 echo "Using packman to get doxygen: $DOXYGEN_VERSION" -source $(dirname "$0")/../../buildtools/packman5/packman install doxygen $DOXYGEN_VERSION +source $(dirname "$0")/../../buildtools/packman/packman install doxygen $DOXYGEN_VERSION DOXYGEN=$PM_doxygen_PATH/bin/doxygen diff --git a/docs/release_notes.txt b/docs/release_notes.txt index 355eb3c..462b0e4 100755 --- a/docs/release_notes.txt +++ b/docs/release_notes.txt @@ -3,6 +3,15 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+Blast(tm) SDK 1.1.10 (20-Dec-2024)
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+Changes
+-------
+* Updated Packman version for external packages. Fixes download_sample_resources.bat usage.
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Blast(tm) SDK 1.1.9 (22-Mar-2024)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/download_sample_resources.bat b/download_sample_resources.bat index d733c02..d15bd9d 100755 --- a/download_sample_resources.bat +++ b/download_sample_resources.bat @@ -3,7 +3,7 @@ :: Run packman to pull resources
@echo Running packman to pull resources...
-@call "%~dp0buildtools\packman5\packman.cmd" pull "%~dp0\samples\resources\configs\resources.xml"
+@call "%~dp0buildtools\packman\packman.cmd" pull "%~dp0\samples\resources\configs\resources.xml"
@if %ERRORLEVEL% neq 0 (
@exit /b %errorlevel%
) else (
diff --git a/generate_projects_linux.sh b/generate_projects_linux.sh index ebbc58d..84bc743 100755 --- a/generate_projects_linux.sh +++ b/generate_projects_linux.sh @@ -7,7 +7,7 @@ echo $BLAST_ROOT_DIR # Run packman to ensure dependencies are present and run cmake generation script last echo "Getting build platform dependencies for Linux ..." -source $BLAST_ROOT_DIR"/buildtools/packman5/packman" pull $BLAST_ROOT_DIR"/buildtools/build_platform_deps.xml" --platform linux +source $BLAST_ROOT_DIR"/buildtools/packman/packman" pull $BLAST_ROOT_DIR"/buildtools/build_platform_deps.xml" --platform linux echo "Getting target platform dependencies for Linux ..." -source $BLAST_ROOT_DIR"/buildtools/packman5/packman" pull $BLAST_ROOT_DIR"/target_platform_deps.xml" --platform linux --postscript $BLAST_ROOT_DIR"/buildtools/cmake_projects_linux.sh" +source $BLAST_ROOT_DIR"/buildtools/packman/packman" pull $BLAST_ROOT_DIR"/target_platform_deps.xml" --platform linux --postscript $BLAST_ROOT_DIR"/buildtools/cmake_projects_linux.sh" diff --git a/generate_projects_linux_ue4_crosscompile.bat b/generate_projects_linux_ue4_crosscompile.bat index 9661bc0..8d1e7d5 100755 --- a/generate_projects_linux_ue4_crosscompile.bat +++ b/generate_projects_linux_ue4_crosscompile.bat @@ -14,7 +14,7 @@ )
::Need linux libs, but windows tools, run us again to get the path
-@call "%~dp0buildtools\packman5\packman.cmd" pull "%~dp0target_platform_deps.xml" --platform linux --postscript "%~dp0buildtools\cmake_projects_linux_ue4_crosscompile.bat"
+@call "%~dp0buildtools\packman\packman.cmd" pull "%~dp0target_platform_deps.xml" --platform linux --postscript "%~dp0buildtools\cmake_projects_linux_ue4_crosscompile.bat"
@if %ERRORLEVEL% neq 0 (
@exit /b %errorlevel%
) else (
diff --git a/generate_projects_vc15win64.bat b/generate_projects_vc15win64.bat index 1e32980..f10d951 100755 --- a/generate_projects_vc15win64.bat +++ b/generate_projects_vc15win64.bat @@ -11,7 +11,7 @@ @if %ERRORLEVEL% neq 0 exit /b %errorlevel%
@echo Getting target platform dependencies for win.x86_64.vc150 ...
-@call "%~dp0buildtools\packman5\packman.cmd" pull "%~dp0target_platform_deps.xml" --platform win.x86_64.vc150 --postscript "%~dp0buildtools\cmake_projects_vc15win64.bat"
+@call "%~dp0buildtools\packman\packman.cmd" pull "%~dp0target_platform_deps.xml" --platform win.x86_64.vc150 --postscript "%~dp0buildtools\cmake_projects_vc15win64.bat"
@if %ERRORLEVEL% neq 0 (
@exit /b %errorlevel%
) else (
|