diff --git a/images/linux/scripts/installers/azpowershell.sh b/images/linux/scripts/installers/azpowershell.sh index 9af42baf..cfe901bf 100644 --- a/images/linux/scripts/installers/azpowershell.sh +++ b/images/linux/scripts/installers/azpowershell.sh @@ -1,43 +1,43 @@ -#!/bin/bash -################################################################################ -## File: azpowershell.sh -## Desc: Installed Azure PowerShell -################################################################################ - -# Source the helpers for use with the script -source $HELPER_SCRIPTS/document.sh -source $HELPER_SCRIPTS/os.sh - -# List of versions -if isUbuntu20 ; then - versions=$(pwsh -Command '(Find-Module -Name Az).Version') -else - versions=(1.0.0 1.6.0 2.3.2 2.6.0 2.8.0 3.1.0 3.5.0 3.8.0) -fi - -# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) -for version in ${versions[@]}; do - pwsh -Command "Save-Module -Name Az -LiteralPath /usr/share/az_$version -RequiredVersion $version -Force" -done - -# Run tests to determine that the software installed as expected -echo "Testing to make sure that script performed as expected, and basic scenarios work" -for version in ${versions[@]}; do - modulePath="/usr/share/az_$version" - pwsh -Command " - \$env:PSModulePath = '${modulePath}:' + \$env:PSModulePath; - if ( -not (Get-Module -ListAvailable -Name Az.Accounts)) { - Write-Host 'Az Module was not installed' - exit 1 - }" - if [ $? -ne 0 ]; then - echo "Az version $version is not installed" - exit 1 - fi -done - -# Document what was added to the image -echo "Lastly, documenting what we added to the metadata file" -for version in ${versions[@]}; do - DocumentInstalledItem "Az Module ($version)" -done +#!/bin/bash +################################################################################ +## File: azpowershell.sh +## Desc: Installed Azure PowerShell +################################################################################ + +# Source the helpers for use with the script +source $HELPER_SCRIPTS/document.sh +source $HELPER_SCRIPTS/os.sh + +# List of versions +if isUbuntu20 ; then + versions=$(pwsh -Command '(Find-Module -Name Az).Version') +else + versions=(1.0.0 1.6.0 2.3.2 2.6.0 2.8.0 3.1.0 3.5.0 3.8.0) +fi + +# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) +for version in ${versions[@]}; do + pwsh -Command "Save-Module -Name Az -LiteralPath /usr/share/az_$version -RequiredVersion $version -Force" +done + +# Run tests to determine that the software installed as expected +echo "Testing to make sure that script performed as expected, and basic scenarios work" +for version in ${versions[@]}; do + modulePath="/usr/share/az_$version" + pwsh -Command " + \$env:PSModulePath = '${modulePath}:' + \$env:PSModulePath; + if ( -not (Get-Module -ListAvailable -Name Az.Accounts)) { + Write-Host 'Az Module was not installed' + exit 1 + }" + if [ $? -ne 0 ]; then + echo "Az version $version is not installed" + exit 1 + fi +done + +# Document what was added to the image +echo "Lastly, documenting what we added to the metadata file" +for version in ${versions[@]}; do + DocumentInstalledItem "Az Module ($version)" +done diff --git a/images/linux/scripts/installers/pypy.sh b/images/linux/scripts/installers/pypy.sh index cfb097bd..dc6d1c77 100644 --- a/images/linux/scripts/installers/pypy.sh +++ b/images/linux/scripts/installers/pypy.sh @@ -1,95 +1,95 @@ -#!/bin/bash -################################################################################ -## File: pypy.sh -## Desc: Installs PyPy -################################################################################ - -# Source the helpers for use with the script -source $HELPER_SCRIPTS/document.sh -source $HELPER_SCRIPTS/install.sh - -# This function installs PyPy using the specified arguments: -# $1=PACKAGE_URL -function InstallPyPy -{ - PACKAGE_URL=$1 - - PACKAGE_TAR_NAME=$(echo $PACKAGE_URL | awk -F/ '{print $NF}') - echo "Downloading tar archive '$PACKAGE_TAR_NAME' - '$PACKAGE_URL'" - PACKAGE_TAR_TEMP_PATH="/tmp/$PACKAGE_TAR_NAME" - download_with_retries $PACKAGE_URL "/tmp" $PACKAGE_TAR_NAME - - echo "Expand '$PACKAGE_TAR_NAME' to the /tmp folder" - tar xf $PACKAGE_TAR_TEMP_PATH -C /tmp - - # Get Python version - PACKAGE_NAME=${PACKAGE_TAR_NAME/.tar.bz2/} - MAJOR_VERSION=$(echo ${PACKAGE_NAME/pypy/} | cut -d. -f1) - PYTHON_MAJOR="python$MAJOR_VERSION" - - if [ $MAJOR_VERSION != 2 ]; then - PYPY_MAJOR="pypy$MAJOR_VERSION" - else - PYPY_MAJOR="pypy" - fi - - PACKAGE_TEMP_FOLDER="/tmp/$PACKAGE_NAME" - PYTHON_FULL_VERSION=$("$PACKAGE_TEMP_FOLDER/bin/$PYPY_MAJOR" -c "import sys;print('{}.{}.{}'.format(sys.version_info[0],sys.version_info[1],sys.version_info[2]))") - - # PyPy folder structure - PYPY_TOOLCACHE_PATH=$AGENT_TOOLSDIRECTORY/PyPy - PYPY_TOOLCACHE_VERSION_PATH=$PYPY_TOOLCACHE_PATH/$PYTHON_FULL_VERSION - PYPY_TOOLCACHE_VERSION_ARCH_PATH=$PYPY_TOOLCACHE_VERSION_PATH/x64 - - echo "Check if PyPy hostedtoolcache folder exist..." - if [ ! -d $PYPY_TOOLCACHE_PATH ]; then - mkdir -p $PYPY_TOOLCACHE_PATH - fi - - echo "Create PyPy '$PYPY_TOOLCACHE_VERSION_PATH' folder" - mkdir $PYPY_TOOLCACHE_VERSION_PATH - - echo "Move PyPy '$PACKAGE_TEMP_FOLDER' binaries to '$PYPY_TOOLCACHE_VERSION_ARCH_PATH' folder" - mv $PACKAGE_TEMP_FOLDER $PYPY_TOOLCACHE_VERSION_ARCH_PATH - - echo "Create additional symlinks (Required for UsePythonVersion Azure DevOps task)" - cd $PYPY_TOOLCACHE_VERSION_ARCH_PATH/bin - ln -s $PYPY_MAJOR $PYTHON_MAJOR - ln -s $PYTHON_MAJOR python - - chmod +x ./python ./$PYTHON_MAJOR - - echo "Install latest Pip" - ./python -m ensurepip - ./python -m pip install --ignore-installed pip - - echo "Create complete file" - touch $PYPY_TOOLCACHE_VERSION_PATH/x64.complete - - echo "Remove '$PACKAGE_TAR_TEMP_PATH'" - rm -f $PACKAGE_TAR_TEMP_PATH -} - -# Installation PyPy -uri="https://downloads.python.org/pypy/" -download_with_retries $uri "/tmp" "pypyUrls.html" -pypyVersions="$(cat /tmp/pypyUrls.html | grep 'linux64' | awk -v uri="$uri" -F'>|<' '{print uri$5}')" - -toolsetJson="$INSTALLER_SCRIPT_FOLDER/toolset.json" -toolsetVersions=$(cat $toolsetJson | jq -r '.toolcache[] | select(.name | contains("PyPy")) | .versions[]') - -# Fail out if any setups fail -set -e - -for toolsetVersion in $toolsetVersions; do - latestMajorPyPyVersion=$(echo "${pypyVersions}" | grep -E "pypy${toolsetVersion}-v[0-9]+\.[0-9]+\.[0-9]+-" | head -1) - - if [[ -z "$latestMajorPyPyVersion" ]]; then - echo "Failed to get PyPy version '$toolsetVersion'" - exit 1 - fi - - InstallPyPy $latestMajorPyPyVersion -done - +#!/bin/bash +################################################################################ +## File: pypy.sh +## Desc: Installs PyPy +################################################################################ + +# Source the helpers for use with the script +source $HELPER_SCRIPTS/document.sh +source $HELPER_SCRIPTS/install.sh + +# This function installs PyPy using the specified arguments: +# $1=PACKAGE_URL +function InstallPyPy +{ + PACKAGE_URL=$1 + + PACKAGE_TAR_NAME=$(echo $PACKAGE_URL | awk -F/ '{print $NF}') + echo "Downloading tar archive '$PACKAGE_TAR_NAME' - '$PACKAGE_URL'" + PACKAGE_TAR_TEMP_PATH="/tmp/$PACKAGE_TAR_NAME" + download_with_retries $PACKAGE_URL "/tmp" $PACKAGE_TAR_NAME + + echo "Expand '$PACKAGE_TAR_NAME' to the /tmp folder" + tar xf $PACKAGE_TAR_TEMP_PATH -C /tmp + + # Get Python version + PACKAGE_NAME=${PACKAGE_TAR_NAME/.tar.bz2/} + MAJOR_VERSION=$(echo ${PACKAGE_NAME/pypy/} | cut -d. -f1) + PYTHON_MAJOR="python$MAJOR_VERSION" + + if [ $MAJOR_VERSION != 2 ]; then + PYPY_MAJOR="pypy$MAJOR_VERSION" + else + PYPY_MAJOR="pypy" + fi + + PACKAGE_TEMP_FOLDER="/tmp/$PACKAGE_NAME" + PYTHON_FULL_VERSION=$("$PACKAGE_TEMP_FOLDER/bin/$PYPY_MAJOR" -c "import sys;print('{}.{}.{}'.format(sys.version_info[0],sys.version_info[1],sys.version_info[2]))") + + # PyPy folder structure + PYPY_TOOLCACHE_PATH=$AGENT_TOOLSDIRECTORY/PyPy + PYPY_TOOLCACHE_VERSION_PATH=$PYPY_TOOLCACHE_PATH/$PYTHON_FULL_VERSION + PYPY_TOOLCACHE_VERSION_ARCH_PATH=$PYPY_TOOLCACHE_VERSION_PATH/x64 + + echo "Check if PyPy hostedtoolcache folder exist..." + if [ ! -d $PYPY_TOOLCACHE_PATH ]; then + mkdir -p $PYPY_TOOLCACHE_PATH + fi + + echo "Create PyPy '$PYPY_TOOLCACHE_VERSION_PATH' folder" + mkdir $PYPY_TOOLCACHE_VERSION_PATH + + echo "Move PyPy '$PACKAGE_TEMP_FOLDER' binaries to '$PYPY_TOOLCACHE_VERSION_ARCH_PATH' folder" + mv $PACKAGE_TEMP_FOLDER $PYPY_TOOLCACHE_VERSION_ARCH_PATH + + echo "Create additional symlinks (Required for UsePythonVersion Azure DevOps task)" + cd $PYPY_TOOLCACHE_VERSION_ARCH_PATH/bin + ln -s $PYPY_MAJOR $PYTHON_MAJOR + ln -s $PYTHON_MAJOR python + + chmod +x ./python ./$PYTHON_MAJOR + + echo "Install latest Pip" + ./python -m ensurepip + ./python -m pip install --ignore-installed pip + + echo "Create complete file" + touch $PYPY_TOOLCACHE_VERSION_PATH/x64.complete + + echo "Remove '$PACKAGE_TAR_TEMP_PATH'" + rm -f $PACKAGE_TAR_TEMP_PATH +} + +# Installation PyPy +uri="https://downloads.python.org/pypy/" +download_with_retries $uri "/tmp" "pypyUrls.html" +pypyVersions="$(cat /tmp/pypyUrls.html | grep 'linux64' | awk -v uri="$uri" -F'>|<' '{print uri$5}')" + +toolsetJson="$INSTALLER_SCRIPT_FOLDER/toolset.json" +toolsetVersions=$(cat $toolsetJson | jq -r '.toolcache[] | select(.name | contains("PyPy")) | .versions[]') + +# Fail out if any setups fail +set -e + +for toolsetVersion in $toolsetVersions; do + latestMajorPyPyVersion=$(echo "${pypyVersions}" | grep -E "pypy${toolsetVersion}-v[0-9]+\.[0-9]+\.[0-9]+-" | head -1) + + if [[ -z "$latestMajorPyPyVersion" ]]; then + echo "Failed to get PyPy version '$toolsetVersion'" + exit 1 + fi + + InstallPyPy $latestMajorPyPyVersion +done + chown -R "$SUDO_USER:$SUDO_USER" "$AGENT_TOOLSDIRECTORY/PyPy" \ No newline at end of file