diff options
| author | Bryan Galdrikian <[email protected]> | 2018-05-31 11:36:08 -0700 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2018-05-31 11:36:08 -0700 |
| commit | 7115f60b91b5717d90f643fd692010905c7004db (patch) | |
| tree | effd68c6978751c517d54c2f2bb5bb6e7dc93e18 /buildtools/packman | |
| parent | Updating BlastTool zip (diff) | |
| download | blast-1.1.3_rc1.tar.xz blast-1.1.3_rc1.zip | |
Blast 1.1.3. See docs/release_notes.txt.v1.1.3_rc1
Diffstat (limited to 'buildtools/packman')
| -rwxr-xr-x | buildtools/packman/packman | 148 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/packman.cmd | 80 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/packman_config.txt | 6 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/packmanapi.py | 32 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/win-bootstrap/configure.bat | 208 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd | 36 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1 | 120 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/win-bootstrap/fetch_file_from_url.ps1 | 74 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/win-bootstrap/generate_temp_file_name.ps1 | 2 | ||||
| -rwxr-xr-x[-rw-r--r--] | buildtools/packman/win-bootstrap/install_package.py | 76 |
10 files changed, 391 insertions, 391 deletions
diff --git a/buildtools/packman/packman b/buildtools/packman/packman index a423f8a..124a92d 100755 --- a/buildtools/packman/packman +++ b/buildtools/packman/packman @@ -1,74 +1,74 @@ -#!/bin/bash - -PM_PACKMAN_VERSION=4.0.1 - -# Specify where configuration file could exist -export PM_CONFIG_PATH=$(dirname ${BASH_SOURCE})/packman_config.txt - -# The packages root may already be configured by the user -if [ -z "$PM_PACKAGES_ROOT" ]; then - # Set variable permanently using .profile for this user - echo "export PM_PACKAGES_ROOT=\$HOME/packman-repo" >> ~/.profile - # 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_EXT" ]; then - PM_MODULE_DIR="$PM_PACKAGES_ROOT/packman/$PM_PACKMAN_VERSION-common" - export PM_MODULE="$PM_MODULE_DIR/packman.py" -else - export PM_MODULE="$PM_MODULE_EXT" -fi - -fetch_file_from_s3() -{ - SOURCE=$1 - SOURCE_URL=http://packman.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@$PM_PACKMAN_VERSION-common.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 - -# Generate temporary file name for environment variables: -PM_VAR_PATH=`mktemp -u -t tmp.XXXXX.$$.pmvars` - -python "$PM_MODULE" $* --var-path="$PM_VAR_PATH" - -# 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 +#!/bin/bash
+
+PM_PACKMAN_VERSION=4.0.1
+
+# Specify where configuration file could exist
+export PM_CONFIG_PATH=$(dirname ${BASH_SOURCE})/packman_config.txt
+
+# The packages root may already be configured by the user
+if [ -z "$PM_PACKAGES_ROOT" ]; then
+ # Set variable permanently using .profile for this user
+ echo "export PM_PACKAGES_ROOT=\$HOME/packman-repo" >> ~/.profile
+ # 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_EXT" ]; then
+ PM_MODULE_DIR="$PM_PACKAGES_ROOT/packman/$PM_PACKMAN_VERSION-common"
+ export PM_MODULE="$PM_MODULE_DIR/packman.py"
+else
+ export PM_MODULE="$PM_MODULE_EXT"
+fi
+
+fetch_file_from_s3()
+{
+ SOURCE=$1
+ SOURCE_URL=http://packman.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@$PM_PACKMAN_VERSION-common.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
+
+# Generate temporary file name for environment variables:
+PM_VAR_PATH=`mktemp -u -t tmp.XXXXX.$$.pmvars`
+
+python "$PM_MODULE" $* --var-path="$PM_VAR_PATH"
+
+# 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
diff --git a/buildtools/packman/packman.cmd b/buildtools/packman/packman.cmd index 03e2cf8..fefdc4f 100644..100755 --- a/buildtools/packman/packman.cmd +++ b/buildtools/packman/packman.cmd @@ -1,41 +1,41 @@ -:: 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 -:TEMP_VAR_PATH_LOOP -@set "PM_VAR_PATH=%tmp%\tmp.%RANDOM%.pmvars" -@if exist "%PM_VAR_PATH%" goto :TEMP_VAR_PATH_LOOP - -@"%PM_PYTHON%" "%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 +:: 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
+:TEMP_VAR_PATH_LOOP
+@set "PM_VAR_PATH=%tmp%\tmp.%RANDOM%.pmvars"
+@if exist "%PM_VAR_PATH%" goto :TEMP_VAR_PATH_LOOP
+
+@"%PM_PYTHON%" "%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/packman/packman_config.txt b/buildtools/packman/packman_config.txt index d090b8a..2741ed2 100644..100755 --- a/buildtools/packman/packman_config.txt +++ b/buildtools/packman/packman_config.txt @@ -1,3 +1,3 @@ -PM_PACKAGES_SOURCE=s3 -PM_S3_READ_KEY_ID=AKIAJHPSPBMWMTZS6TJA -PM_S3_READ_SECRET_KEY=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 +PM_PACKAGES_SOURCE=s3
+PM_S3_READ_KEY_ID=AKIAJHPSPBMWMTZS6TJA
+PM_S3_READ_SECRET_KEY=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
diff --git a/buildtools/packman/packmanapi.py b/buildtools/packman/packmanapi.py index 6475f9d..76e20d0 100644..100755 --- a/buildtools/packman/packmanapi.py +++ b/buildtools/packman/packmanapi.py @@ -1,16 +1,16 @@ -import os -import sys - - -def get_packman_module_dir(): - root_dir = os.environ['PM_PACKAGES_ROOT'] - common_dir = '4.0.1-common' - module_dir = os.path.join(root_dir, 'packman', common_dir) - return module_dir - - -sys.path.insert(0, get_packman_module_dir()) -from packman import pack -from packman import push -from packager import get_package_filename -from packager import create_package_from_file_list +import os
+import sys
+
+
+def get_packman_module_dir():
+ root_dir = os.environ['PM_PACKAGES_ROOT']
+ common_dir = '4.0.1-common'
+ module_dir = os.path.join(root_dir, 'packman', common_dir)
+ return module_dir
+
+
+sys.path.insert(0, get_packman_module_dir())
+from packman import pack
+from packman import push
+from packager import get_package_filename
+from packager import create_package_from_file_list
diff --git a/buildtools/packman/win-bootstrap/configure.bat b/buildtools/packman/win-bootstrap/configure.bat index 7963ac2..2533d63 100644..100755 --- a/buildtools/packman/win-bootstrap/configure.bat +++ b/buildtools/packman/win-bootstrap/configure.bat @@ -1,104 +1,104 @@ -@set PM_PACKMAN_VERSION=4.0.1 - -:: Specify where config file could exist -@set PM_CONFIG_PATH=%~dp0..\packman_config.txt - -:: 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 VSLANG goto ERROR_IN_VS_WITH_NO_ROOT_DEFINED - -:: 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_DIR=%PM_PACKAGES_ROOT%\python\2.7.6-windows-x86 -@set PM_PYTHON=%PM_PYTHON_DIR%\python.exe - -@if exist "%PM_PYTHON%" goto PACKMAN - -@set [email protected] -@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%.exe -@call "%~dp0fetch_file_from_s3.cmd" %PM_PYTHON_PACKAGE% %TARGET% -@if errorlevel 1 goto ERROR - -@echo Unpacking ... -@%TARGET% -o"%PM_PYTHON_DIR%" -y 1> nul -@if errorlevel 1 goto ERROR - -@del %TARGET% - -:PACKMAN -:: The packman module may already be externally configured -@if defined PM_MODULE_EXT ( - @set PM_MODULE=%PM_MODULE_EXT% - @goto END -) - -@set PM_MODULE_DIR=%PM_PACKAGES_ROOT%\packman\%PM_PACKMAN_VERSION%-common -@set PM_MODULE=%PM_MODULE_DIR%\packman.py - -@if exist "%PM_MODULE%" goto END - -@set PM_MODULE_PACKAGE=packman@%PM_PACKMAN_VERSION%-common.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%" "%~dp0\install_package.py" %TARGET% "%PM_MODULE_DIR%" -@if errorlevel 1 goto ERROR - -@del %TARGET% - -@goto END - -:ERROR_IN_VS_WITH_NO_ROOT_DEFINED -@echo The above is a once-per-computer operation. Unfortunately VisualStudio cannot pick up environment change -@echo unless *VisualStudio is RELAUNCHED*. -@echo NOTE: If you are launching VisualStudio from command line or command line utility make sure -@echo you have a fresh environment (relaunch the command line or utility). -@echo. -@exit /B 1 - -: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 - -:END +@set PM_PACKMAN_VERSION=4.0.1
+
+:: Specify where config file could exist
+@set PM_CONFIG_PATH=%~dp0..\packman_config.txt
+
+:: 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 VSLANG goto ERROR_IN_VS_WITH_NO_ROOT_DEFINED
+
+:: 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_DIR=%PM_PACKAGES_ROOT%\python\2.7.6-windows-x86
+@set PM_PYTHON=%PM_PYTHON_DIR%\python.exe
+
+@if exist "%PM_PYTHON%" goto PACKMAN
+
+@set [email protected]
+@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%.exe
+@call "%~dp0fetch_file_from_s3.cmd" %PM_PYTHON_PACKAGE% %TARGET%
+@if errorlevel 1 goto ERROR
+
+@echo Unpacking ...
+@%TARGET% -o"%PM_PYTHON_DIR%" -y 1> nul
+@if errorlevel 1 goto ERROR
+
+@del %TARGET%
+
+:PACKMAN
+:: The packman module may already be externally configured
+@if defined PM_MODULE_EXT (
+ @set PM_MODULE=%PM_MODULE_EXT%
+ @goto END
+)
+
+@set PM_MODULE_DIR=%PM_PACKAGES_ROOT%\packman\%PM_PACKMAN_VERSION%-common
+@set PM_MODULE=%PM_MODULE_DIR%\packman.py
+
+@if exist "%PM_MODULE%" goto END
+
+@set PM_MODULE_PACKAGE=packman@%PM_PACKMAN_VERSION%-common.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%" "%~dp0\install_package.py" %TARGET% "%PM_MODULE_DIR%"
+@if errorlevel 1 goto ERROR
+
+@del %TARGET%
+
+@goto END
+
+:ERROR_IN_VS_WITH_NO_ROOT_DEFINED
+@echo The above is a once-per-computer operation. Unfortunately VisualStudio cannot pick up environment change
+@echo unless *VisualStudio is RELAUNCHED*.
+@echo NOTE: If you are launching VisualStudio from command line or command line utility make sure
+@echo you have a fresh environment (relaunch the command line or utility).
+@echo.
+@exit /B 1
+
+: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
+
+:END
diff --git a/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd b/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd index 974d5ec..7f91a47 100644..100755 --- a/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd +++ b/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd @@ -1,19 +1,19 @@ -:: You need to specify <package-name> <target-name> as input to this command - -@set PACKAGE_NAME=%1 -@set TARGET=%2 - -@echo Fetching %PACKAGE_NAME% from s3 ... - -@powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0fetch_file_from_s3.ps1" -sourceName %PACKAGE_NAME% -output %TARGET% -:: 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% goto ERROR_DOWNLOAD_FAILED -@if %~z2==0 goto ERROR_DOWNLOAD_FAILED - -@exit /b 0 - -:ERROR_DOWNLOAD_FAILED -@echo Failed to download file from %1 -@echo Most likely because endpoint cannot be reached (VPN connection down?) +:: You need to specify <package-name> <target-name> as input to this command
+
+@set PACKAGE_NAME=%1
+@set TARGET=%2
+
+@echo Fetching %PACKAGE_NAME% from s3 ...
+
+@powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0fetch_file_from_s3.ps1" -sourceName %PACKAGE_NAME% -output %TARGET%
+:: 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% goto ERROR_DOWNLOAD_FAILED
+@if %~z2==0 goto ERROR_DOWNLOAD_FAILED
+
+@exit /b 0
+
+:ERROR_DOWNLOAD_FAILED
+@echo Failed to download file from %1
+@echo Most likely because endpoint cannot be reached (VPN connection down?)
@exit /b 1
\ No newline at end of file diff --git a/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1 b/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1 index fc588d9..132fe0d 100644..100755 --- a/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1 +++ b/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1 @@ -1,60 +1,60 @@ -param( -[Parameter(Mandatory=$true)][string]$sourceName=$null, -[string]$output="out.exe" -) -$source = "http://packman.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) - +param(
+[Parameter(Mandatory=$true)][string]$sourceName=$null,
+[string]$output="out.exe"
+)
+$source = "http://packman.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/packman/win-bootstrap/fetch_file_from_url.ps1 b/buildtools/packman/win-bootstrap/fetch_file_from_url.ps1 index 5b566f1..b9cb23c 100644..100755 --- a/buildtools/packman/win-bootstrap/fetch_file_from_url.ps1 +++ b/buildtools/packman/win-bootstrap/fetch_file_from_url.ps1 @@ -1,37 +1,37 @@ -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() -} - +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/packman/win-bootstrap/generate_temp_file_name.ps1 b/buildtools/packman/win-bootstrap/generate_temp_file_name.ps1 index cefbda4..a8c9c1b 100644..100755 --- a/buildtools/packman/win-bootstrap/generate_temp_file_name.ps1 +++ b/buildtools/packman/win-bootstrap/generate_temp_file_name.ps1 @@ -1,2 +1,2 @@ -$out = [System.IO.Path]::GetTempFileName() +$out = [System.IO.Path]::GetTempFileName()
Write-Host $out
\ No newline at end of file diff --git a/buildtools/packman/win-bootstrap/install_package.py b/buildtools/packman/win-bootstrap/install_package.py index 730962a..3aa294e 100644..100755 --- a/buildtools/packman/win-bootstrap/install_package.py +++ b/buildtools/packman/win-bootstrap/install_package.py @@ -1,39 +1,39 @@ -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) - - +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 |