2017-04-10 11:41:01 +00:00
#!/usr/bin/env bash
__scriptpath = $( cd " $( dirname " $0 " ) " ; pwd -P)
__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
2017-08-21 15:34:15 +00:00
export __BUILDTOOLS_USE_CSPROJ = true
2017-04-10 11:41:01 +00:00
__BUILD_TOOLS_PACKAGE_VERSION = $( cat $__scriptpath /BuildToolsVersion.txt)
__DOTNET_TOOLS_VERSION = $( cat $__scriptpath /DotnetCLIVersion.txt)
2017-08-21 15:34:15 +00:00
__BUILD_TOOLS_PATH = $__PACKAGES_DIR /microsoft.dotnet.buildtools/$__BUILD_TOOLS_PACKAGE_VERSION /lib
__INIT_TOOLS_RESTORE_PROJECT = $__scriptpath /init-tools.msbuild
__INIT_TOOLS_DONE_MARKER_DIR = $__TOOLRUNTIME_DIR /$__BUILD_TOOLS_PACKAGE_VERSION
__INIT_TOOLS_DONE_MARKER = $__INIT_TOOLS_DONE_MARKER_DIR /done
2017-04-10 11:41:01 +00:00
if [ -z " $__DOTNET_PKG " ] ; then
2017-06-07 13:16:24 +00:00
if [ " $( uname -m | grep "i[3456]86" ) " = "i686" ] ; then
echo "Warning: build not supported on 32 bit Unix"
fi
2017-04-10 11:41:01 +00:00
OSName = $( uname -s)
case $OSName in
Darwin)
OS = OSX
__DOTNET_PKG = dotnet-dev-osx-x64
ulimit -n 2048
2017-08-21 15:34:15 +00:00
# Format x.y.z as single integer with three digits for each part
VERSION = ` sw_vers -productVersion| sed -e 's/\./ /g' | xargs printf "%03d%03d%03d" `
if [ " $VERSION " -lt 010012000 ] ; then
echo error: macOS version ` sw_vers -productVersion` is too old. 10.12 is needed as minimum.
exit 1
fi
2017-04-10 11:41:01 +00:00
; ;
Linux)
2017-08-21 15:34:15 +00:00
__DOTNET_PKG = dotnet-dev-linux-x64
2017-04-10 11:41:01 +00:00
OS = Linux
; ;
*)
2017-08-21 15:34:15 +00:00
echo " Unsupported OS ' $OSName ' detected. Downloading linux-x64 tools. "
2017-04-10 11:41:01 +00:00
OS = Linux
2017-08-21 15:34:15 +00:00
__DOTNET_PKG = dotnet-dev-linux-x64
2017-04-10 11:41:01 +00:00
; ;
esac
fi
if [ ! -e $__INIT_TOOLS_DONE_MARKER ] ; then
__PATCH_CLI_NUGET_FRAMEWORKS = 0
if [ -e $__TOOLRUNTIME_DIR ] ; then rm -rf -- $__TOOLRUNTIME_DIR ; fi
echo " Running: $__scriptpath /init-tools.sh " > $__init_tools_log
if [ ! -e $__DOTNET_PATH ] ; then
mkdir -p " $__DOTNET_PATH "
if [ -n " $DOTNET_TOOLSET_DIR " ] && [ -d " $DOTNET_TOOLSET_DIR / $__DOTNET_TOOLS_VERSION " ] ; then
echo " Copying $DOTNET_TOOLSET_DIR / $__DOTNET_TOOLS_VERSION to $__DOTNET_PATH " >> $__init_tools_log
cp -r $DOTNET_TOOLSET_DIR /$__DOTNET_TOOLS_VERSION /* $__DOTNET_PATH
elif [ -n " $DOTNET_TOOL_DIR " ] && [ -d " $DOTNET_TOOL_DIR " ] ; then
echo " Copying $DOTNET_TOOL_DIR to $__DOTNET_PATH " >> $__init_tools_log
cp -r $DOTNET_TOOL_DIR /* $__DOTNET_PATH
else
echo "Installing dotnet cli..."
2017-08-21 15:34:15 +00:00
__DOTNET_LOCATION = " https://dotnetcli.azureedge.net/dotnet/Sdk/ ${ __DOTNET_TOOLS_VERSION } / ${ __DOTNET_PKG } . ${ __DOTNET_TOOLS_VERSION } .tar.gz "
2017-04-10 11:41:01 +00:00
# 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
which curl > /dev/null 2> /dev/null
if [ $? -ne 0 ] ; then
wget -q -O $__DOTNET_PATH /dotnet.tar ${ __DOTNET_LOCATION }
else
curl --retry 10 -sSL --create-dirs -o $__DOTNET_PATH /dotnet.tar ${ __DOTNET_LOCATION }
fi
cd $__DOTNET_PATH
tar -xf $__DOTNET_PATH /dotnet.tar
cd $__scriptpath
__PATCH_CLI_NUGET_FRAMEWORKS = 1
fi
fi
if [ -n " $BUILD_TOOLS_TOOLSET_DIR " ] && [ -d " $BUILD_TOOLS_TOOLSET_DIR / $__BUILD_TOOLS_PACKAGE_VERSION " ] ; then
echo " Copying $BUILD_TOOLS_TOOLSET_DIR / $__BUILD_TOOLS_PACKAGE_VERSION to $__TOOLRUNTIME_DIR " >> $__init_tools_log
cp -r $BUILD_TOOLS_TOOLSET_DIR /$__BUILD_TOOLS_PACKAGE_VERSION /* $__TOOLRUNTIME_DIR
elif [ -n " $BUILD_TOOLS_TOOL_DIR " ] && [ -d " $BUILD_TOOLS_TOOL_DIR " ] ; then
echo " Copying $BUILD_TOOLS_TOOL_DIR to $__TOOLRUNTIME_DIR " >> $__init_tools_log
cp -r $BUILD_TOOLS_TOOL_DIR /* $__TOOLRUNTIME_DIR
else
if [ ! -e $__BUILD_TOOLS_PATH ] ; then
echo " Restoring BuildTools version $__BUILD_TOOLS_PACKAGE_VERSION ... "
2017-08-21 15:34:15 +00:00
echo " Running: $__DOTNET_CMD restore \" $__INIT_TOOLS_RESTORE_PROJECT \" --no-cache --packages $__PACKAGES_DIR --source $__BUILDTOOLS_SOURCE /p:BuildToolsPackageVersion= $__BUILD_TOOLS_PACKAGE_VERSION " >> $__init_tools_log
$__DOTNET_CMD restore " $__INIT_TOOLS_RESTORE_PROJECT " --no-cache --packages $__PACKAGES_DIR --source $__BUILDTOOLS_SOURCE /p:BuildToolsPackageVersion= $__BUILD_TOOLS_PACKAGE_VERSION >> $__init_tools_log
2017-04-10 11:41:01 +00:00
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
2017-08-21 15:34:15 +00:00
# Executables restored with .NET Core 2.0 do not have executable permission flags. https://github.com/NuGet/Home/issues/4424
chmod +x $__BUILD_TOOLS_PATH /init-tools.sh
2017-04-10 11:41:01 +00:00
$__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
fi
2017-08-21 15:34:15 +00:00
echo "Making all .sh files executable under Tools."
# Executables restored with .NET Core 2.0 do not have executable permission flags. https://github.com/NuGet/Home/issues/4424
ls $__scriptpath /Tools/*.sh | xargs chmod +x
ls $__scriptpath /Tools/scripts/docker/*.sh | xargs chmod +x
2017-04-10 11:41:01 +00:00
2017-08-21 15:34:15 +00:00
Tools/crossgen.sh $__scriptpath /Tools
2017-04-10 11:41:01 +00:00
2017-08-21 15:34:15 +00:00
mkdir -p $__INIT_TOOLS_DONE_MARKER_DIR
2017-04-10 11:41:01 +00:00
touch $__INIT_TOOLS_DONE_MARKER
echo "Done initializing tools."
else
echo "Tools are already initialized"
fi