2017-04-10 11:41:01 +00:00
#!/usr/bin/env bash
2017-06-07 13:16:24 +00:00
__scriptpath = $( cd " $( dirname " $0 " ) " ; pwd -P)
2017-04-10 11:41:01 +00:00
__init_tools_log = $__scriptpath /init-tools.log
__PACKAGES_DIR = $__scriptpath /packages
__TOOLRUNTIME_DIR = $__scriptpath /Tools
__DOTNET_PATH = $__TOOLRUNTIME_DIR /dotnetcli
__DOTNET_CMD = $__DOTNET_PATH /dotnet
if [ -z " $__BUILDTOOLS_SOURCE " ] ; then __BUILDTOOLS_SOURCE = https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json; fi
__BUILD_TOOLS_PACKAGE_VERSION = $( cat $__scriptpath /BuildToolsVersion.txt)
__DOTNET_TOOLS_VERSION = $( cat $__scriptpath /DotnetCLIVersion.txt)
__BUILD_TOOLS_PATH = $__PACKAGES_DIR /Microsoft.DotNet.BuildTools/$__BUILD_TOOLS_PACKAGE_VERSION /lib
__PROJECT_JSON_PATH = $__TOOLRUNTIME_DIR /$__BUILD_TOOLS_PACKAGE_VERSION
__PROJECT_JSON_FILE = $__PROJECT_JSON_PATH /project.json
__PROJECT_JSON_CONTENTS = " { \"dependencies\": { \"Microsoft.DotNet.BuildTools\": \" $__BUILD_TOOLS_PACKAGE_VERSION \" }, \"frameworks\": { \"netcoreapp1.0\": { } } } "
__INIT_TOOLS_DONE_MARKER = $__PROJECT_JSON_PATH /done
# Extended version of platform detection logic from dotnet/cli/scripts/obtain/dotnet-install.sh 16692fc
get_current_linux_name( ) {
# Detect Distro
if [ " $( cat /etc/*-release | grep -cim1 ubuntu) " -eq 1 ] ; then
if [ " $( cat /etc/*-release | grep -cim1 16.04) " -eq 1 ] ; then
echo "ubuntu.16.04"
return 0
fi
if [ " $( cat /etc/*-release | grep -cim1 16.10) " -eq 1 ] ; then
echo "ubuntu.16.10"
return 0
fi
echo "ubuntu"
return 0
elif [ " $( cat /etc/*-release | grep -cim1 centos) " -eq 1 ] ; then
echo "centos"
return 0
elif [ " $( cat /etc/*-release | grep -cim1 rhel) " -eq 1 ] ; then
echo "rhel"
return 0
elif [ " $( cat /etc/*-release | grep -cim1 debian) " -eq 1 ] ; then
echo "debian"
return 0
elif [ " $( cat /etc/*-release | grep -cim1 fedora) " -eq 1 ] ; then
if [ " $( cat /etc/*-release | grep -cim1 23) " -eq 1 ] ; then
echo "fedora.23"
return 0
fi
if [ " $( cat /etc/*-release | grep -cim1 24) " -eq 1 ] ; then
echo "fedora.24"
return 0
fi
elif [ " $( cat /etc/*-release | grep -cim1 opensuse) " -eq 1 ] ; then
if [ " $( cat /etc/*-release | grep -cim1 13.2) " -eq 1 ] ; then
echo "opensuse.13.2"
return 0
fi
if [ " $( cat /etc/*-release | grep -cim1 42.1) " -eq 1 ] ; then
echo "opensuse.42.1"
return 0
fi
fi
# Cannot determine Linux distribution, assuming Ubuntu 14.04.
echo "ubuntu"
return 0
}
if [ -z " $__DOTNET_PKG " ] ; then
OSName = $( uname -s)
case $OSName in
Darwin)
OS = OSX
__DOTNET_PKG = dotnet-dev-osx-x64
2017-06-07 13:16:24 +00:00
__DOTNET_RUNTIME_PKG = dotnet-osx-x64
2017-04-10 11:41:01 +00:00
ulimit -n 2048
; ;
Linux)
__DOTNET_PKG = " dotnet-dev- $( get_current_linux_name) -x64 "
2017-06-07 13:16:24 +00:00
__DOTNET_RUNTIME_PKG = " dotnet- $( get_current_linux_name) -x64 "
2017-04-10 11:41:01 +00:00
OS = Linux
; ;
*)
echo " Unsupported OS ' $OSName ' detected. Downloading ubuntu-x64 tools. "
OS = Linux
__DOTNET_PKG = dotnet-dev-ubuntu-x64
2017-06-07 13:16:24 +00:00
__DOTNET_RUNTIME_PKG = dotnet-ubuntu-x64
2017-04-10 11:41:01 +00:00
; ;
esac
fi
if [ ! -e $__INIT_TOOLS_DONE_MARKER ] ; then
if [ -e $__TOOLRUNTIME_DIR ] ; then rm -rf -- $__TOOLRUNTIME_DIR ; fi
echo " Running: $__scriptpath /init-tools.sh " > $__init_tools_log
if [ ! -e $__DOTNET_PATH ] ; then
2017-06-07 13:16:24 +00:00
mkdir -p " $__DOTNET_PATH "
2017-04-10 11:41:01 +00:00
echo "Installing dotnet cli..."
__DOTNET_LOCATION = " https://dotnetcli.blob.core.windows.net/dotnet/Sdk/ ${ __DOTNET_TOOLS_VERSION } / ${ __DOTNET_PKG } . ${ __DOTNET_TOOLS_VERSION } .tar.gz "
# curl has HTTPS CA trust-issues less often than wget, so lets try that first.
echo " Installing ' ${ __DOTNET_LOCATION } ' to ' $__DOTNET_PATH /dotnet.tar' " >> $__init_tools_log
2017-06-07 13:16:24 +00:00
if command -v curl > /dev/null; then
2017-04-10 11:41:01 +00:00
curl --retry 10 -sSL --create-dirs -o $__DOTNET_PATH /dotnet.tar ${ __DOTNET_LOCATION }
2017-06-07 13:16:24 +00:00
else
wget -q -O $__DOTNET_PATH /dotnet.tar ${ __DOTNET_LOCATION }
2017-04-10 11:41:01 +00:00
fi
cd $__DOTNET_PATH
tar -xf $__DOTNET_PATH /dotnet.tar
2017-06-07 13:16:24 +00:00
# Delete the bundled in runtime.
rm -rf $__DOTNET_PATH /shared
# Install .NET Core 1.0.4 until we get CLI updated to a version that has it bundled in
echo "Installing .NETCore 1.0.4..."
__NETCORE10_LOCATION = " https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/1.0.4/ ${ __DOTNET_RUNTIME_PKG } .1.0.4.tar.gz "
if command -v curl > /dev/null; then
curl --retry 10 -sSL --create-dirs -o $__DOTNET_PATH /netcore10.tar ${ __NETCORE10_LOCATION }
else
wget -q -O $__DOTNET_PATH /netcore10.tar ${ __NETCORE10_LOCATION }
fi
tar -xf $__DOTNET_PATH /netcore10.tar
# Install .NET Core 1.1.0 until we get CLI updated to a version that has it bundled in
echo "Installing .NETCore 1.1.0..."
__NETCORE11_LOCATION = " https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/1.1.0/ ${ __DOTNET_RUNTIME_PKG } .1.1.0.tar.gz "
if command -v curl > /dev/null; then
curl --retry 10 -sSL --create-dirs -o $__DOTNET_PATH /netcore11.tar ${ __NETCORE11_LOCATION }
else
wget -q -O $__DOTNET_PATH /netcore11.tar ${ __NETCORE11_LOCATION }
fi
tar -xf $__DOTNET_PATH /netcore11.tar
2017-04-10 11:41:01 +00:00
cd $__scriptpath
fi
if [ ! -d " $__PROJECT_JSON_PATH " ] ; then mkdir " $__PROJECT_JSON_PATH " ; fi
echo $__PROJECT_JSON_CONTENTS > " $__PROJECT_JSON_FILE "
if [ ! -e $__BUILD_TOOLS_PATH ] ; then
echo " Restoring BuildTools version $__BUILD_TOOLS_PACKAGE_VERSION ... "
echo " Running: $__DOTNET_CMD restore \" $__PROJECT_JSON_FILE \" --no-cache --packages $__PACKAGES_DIR --source $__BUILDTOOLS_SOURCE " >> $__init_tools_log
$__DOTNET_CMD restore " $__PROJECT_JSON_FILE " --no-cache --packages $__PACKAGES_DIR --source $__BUILDTOOLS_SOURCE >> $__init_tools_log
if [ ! -e " $__BUILD_TOOLS_PATH /init-tools.sh " ] ; then echo " ERROR: Could not restore build tools correctly. See ' $__init_tools_log ' for more details. " 1>& 2; fi
fi
echo "Initializing BuildTools..."
echo " Running: $__BUILD_TOOLS_PATH /init-tools.sh $__scriptpath $__DOTNET_CMD $__TOOLRUNTIME_DIR " >> $__init_tools_log
$__BUILD_TOOLS_PATH /init-tools.sh $__scriptpath $__DOTNET_CMD $__TOOLRUNTIME_DIR >> $__init_tools_log
if [ " $? " != "0" ] ; then
echo " ERROR: An error occured when trying to initialize the tools. Please check ' $__init_tools_log ' for more details. " 1>& 2
exit 1
fi
touch $__INIT_TOOLS_DONE_MARKER
echo "Done initializing tools."
else
echo "Tools are already initialized"
fi