120 lines
4.1 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
scriptRoot="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ "$BUILDVARS_DONE" != 1 ]; then
. $scriptRoot/buildvars-setup.sh $*
fi
# Prepare the system for building
prepare_managed_build()
{
# Run Init-Tools to restore BuildTools and ToolRuntime
$__ProjectRoot/init-tools.sh
# Tell nuget to always use repo-local nuget package cache. The "dotnet restore" invocations use the --packages
# argument, but there are a few commands in publish and tests that do not.
export NUGET_PACKAGES=$__packageroot
echo "Using CLI tools version:"
ls "$__dotnetclipath/sdk"
}
build_managed_corert()
{
__buildproj=$__ProjectRoot/build.proj
__buildlog=$__ProjectRoot/msbuild.$__BuildArch.log
if [ -z "${ToolchainMilestone}" ]; then
ToolchainMilestone=testing
fi
__buildarch="$__BuildArch"
if [ "$__buildarch" = "armel" ]; then
__buildarch=arm
__ExtraMsBuildArgs="$__ExtraMsBuildArgs /p:BinDirPlatform=armel"
fi
$__ProjectRoot/Tools/msbuild.sh "$__buildproj" /m /nologo /verbosity:minimal "/fileloggerparameters:Verbosity=normal;LogFile=$__buildlog" /t:Build /p:RepoPath=$__ProjectRoot /p:RepoLocalBuild="true" /p:RelativeProductBinDir=$__RelativeProductBinDir /p:CleanedTheBuild=$__CleanBuild /p:NuPkgRid=$__NugetRuntimeId /p:TestNugetRuntimeId=$__NugetRuntimeId /p:OSGroup=$__BuildOS /p:Configuration=$__BuildType /p:Platform=$__buildarch /p:COMPUTERNAME=$(hostname) /p:USERNAME=$(id -un) /p:ToolchainMilestone=${ToolchainMilestone} $__UnprocessedBuildArgs $__ExtraMsBuildArgs
export BUILDERRORLEVEL=$?
echo
# Pull the build summary from the log file
tail -n 4 "$__buildlog"
echo Build Exit Code = $BUILDERRORLEVEL
if [ $BUILDERRORLEVEL != 0 ]; then
exit $BUILDERRORLEVEL
fi
}
# TODO It's a temporary decision because of there are no armel tizen nuget packages getting published today
get_official_cross_builds()
{
if [ $__CrossBuild == 1 ]; then
__corefxsite="https://ci.dot.net/job/dotnet_corefx/job/master/view/Official%20Builds/job/"
__coreclrsite="https://ci.dot.net/job/dotnet_coreclr/job/master/view/Official%20Builds/job/"
__corefxsource=
__coreclrsource=
__buildtype=
if [ $__BuildType = "Debug" ]; then
__buildtype="debug"
else
__buildtype="release"
fi
case $__BuildArch in
arm)
;;
arm64)
;;
armel)
ID=
if [ -e $ROOTFS_DIR/etc/os-release ]; then
source $ROOTFS_DIR/etc/os-release
fi
if [ "$ID" = "tizen" ]; then
__corefxsource="tizen_armel_cross_${__buildtype}/lastSuccessfulBuild/artifact/bin/build.tar.gz"
__coreclrsource="armel_cross_${__buildtype}_tizen/lastSuccessfulBuild/artifact/bin/Product/Linux.armel.${__BuildType}/libSystem.Globalization.Native.a"
fi
;;
esac
if [ -n "${__corefxsource}" ]; then
wget "${__corefxsite}${__corefxsource}"
export BUILDERRORLEVEL=$?
if [ $BUILDERRORLEVEL != 0 ]; then
exit $BUILDERRORLEVEL
fi
tar xvf ./build.tar.gz ./System.Native.a
mv ./System.Native.a $__ProjectRoot/bin/Product/Linux.${__BuildArch}.${__BuildType}/packaging/publish1/framework
rm -rf ./build.tar.gz
fi
if [ -n ${__coreclrsource} ]; then
wget "${__coreclrsite}${__coreclrsource}"
export BUILDERRORLEVEL=$?
if [ $BUILDERRORLEVEL != 0 ]; then
exit $BUILDERRORLEVEL
fi
mv ./libSystem.Globalization.Native.a $__ProjectRoot/bin/Product/Linux.${__BuildArch}.${__BuildType}/packaging/publish1/framework
fi
fi
}
if $__buildmanaged; then
# Prepare the system
prepare_managed_build
# Build the corert native components.
build_managed_corert
# Get cross builds from official sites
get_official_cross_builds
# Build complete
fi