19234507ba
Former-commit-id: 3494343bcc9ddb42b36b82dd9ae7b69e85e0229f
142 lines
4.9 KiB
Bash
Executable File
142 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
scriptRoot="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
if [ "$BUILDVARS_DONE" != 1 ]; then
|
|
. $scriptRoot/buildvars-setup.sh $*
|
|
fi
|
|
|
|
export __BuildArch
|
|
|
|
# Prepare the system for building
|
|
|
|
prepare_managed_build()
|
|
{
|
|
# Run Init-Tools to restore BuildTools and ToolRuntime
|
|
$__ProjectRoot/init-tools.sh
|
|
|
|
echo "Using CLI tools version:"
|
|
ls "$__dotnetclipath/sdk"
|
|
}
|
|
|
|
build_managed_corert()
|
|
{
|
|
__buildproj=$__ProjectRoot/build.proj
|
|
__buildlog=$__ProjectRoot/msbuild.$__BuildArch.log
|
|
|
|
__buildarch="$__BuildArch"
|
|
if [ "$__buildarch" = "armel" ]; then
|
|
__buildarch=arm
|
|
__ExtraMsBuildArgs="$__ExtraMsBuildArgs /p:BinDirPlatform=armel"
|
|
fi
|
|
|
|
$__dotnetclipath/dotnet msbuild "$__buildproj" /m /nologo /verbosity:minimal "/fileloggerparameters:Verbosity=normal;LogFile=$__buildlog" /t:Restore /p:RepoPath=$__ProjectRoot /p:RepoLocalBuild="true" /p:NuPkgRid=$__NugetRuntimeId /p:OSGroup=$__BuildOS /p:Configuration=$__BuildType /p:Platform=$__buildarch /p:COMPUTERNAME=$(hostname) /p:USERNAME=$(id -un) $__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
|
|
|
|
# Buildtools tooling is not capable of publishing netcoreapp currently. Use helper projects to publish skeleton of
|
|
# the standalone app that the build injects actual binaries into later.
|
|
$__dotnetclipath/dotnet restore $__sourceroot/ILCompiler/netcoreapp/ilc.csproj -r $__NugetRuntimeId
|
|
export BUILDERRORLEVEL=$?
|
|
if [ $BUILDERRORLEVEL != 0 ]; then
|
|
exit $BUILDERRORLEVEL
|
|
fi
|
|
$__dotnetclipath/dotnet publish $__sourceroot/ILCompiler/netcoreapp/ilc.csproj -r $__NugetRuntimeId -o $__ProductBinDir/tools
|
|
export BUILDERRORLEVEL=$?
|
|
if [ $BUILDERRORLEVEL != 0 ]; then
|
|
exit $BUILDERRORLEVEL
|
|
fi
|
|
chmod +x $__ProductBinDir/tools/ilc
|
|
|
|
$__ProjectRoot/Tools/msbuild.sh "$__buildproj" /m /nologo /verbosity:minimal "/fileloggerparameters:Verbosity=normal;LogFile=$__buildlog" /t:Build /p:RepoPath=$__ProjectRoot /p:RepoLocalBuild="true" /p:NuPkgRid=$__NugetRuntimeId /p:OSGroup=$__BuildOS /p:Configuration=$__BuildType /p:Platform=$__buildarch /p:COMPUTERNAME=$(hostname) /p:USERNAME=$(id -un) $__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
|
|
ID=
|
|
case $__BuildArch in
|
|
arm)
|
|
;;
|
|
arm64)
|
|
;;
|
|
armel)
|
|
if [ -e $ROOTFS_DIR/etc/os-release ]; then
|
|
source $ROOTFS_DIR/etc/os-release
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# only tizen case now
|
|
if [ "$ID" != "tizen" ]; then
|
|
return 0
|
|
fi
|
|
__tizenToolsRoot=${__ProjectRoot}/Tools/tizen
|
|
__corefxsite="https://ci.dot.net/job/dotnet_corefx/job/master/job/"
|
|
__coreclrsite="https://ci.dot.net/job/dotnet_coreclr/job/master/job/"
|
|
__buildArchiveName="build.tar.gz"
|
|
__systemNativeLibName="System.Native.a"
|
|
__systemGlobNativeLibName="System.Globalization.Native.a"
|
|
if [ $__BuildType = "Debug" ]; then
|
|
__buildtype="debug"
|
|
else
|
|
__buildtype="release"
|
|
fi
|
|
__corefxsource="tizen_armel_cross_${__buildtype}/lastSuccessfulBuild/artifact/bin/${__buildArchiveName}"
|
|
__coreclrsource="armel_cross_${__buildtype}_tizen/lastSuccessfulBuild/artifact/bin/Product/Linux.armel.${__BuildType}/${__systemGlobNativeLibName}"
|
|
mkdir -p $__tizenToolsRoot
|
|
|
|
(cd ${__tizenToolsRoot} && wget -t0 -N "${__corefxsite}${__corefxsource}")
|
|
export BUILDERRORLEVEL=$?
|
|
if [ $BUILDERRORLEVEL != 0 ]; then
|
|
exit $BUILDERRORLEVEL
|
|
fi
|
|
tar xvf ${__tizenToolsRoot}/${__buildArchiveName} -C ${__tizenToolsRoot} ./${__systemNativeLibName}
|
|
cp ${__tizenToolsRoot}/${__systemNativeLibName} $__ProjectRoot/bin/Linux.${__BuildArch}.${__BuildType}/framework
|
|
|
|
(cd ${__tizenToolsRoot} && wget -t0 -N "${__coreclrsite}${__coreclrsource}")
|
|
export BUILDERRORLEVEL=$?
|
|
if [ $BUILDERRORLEVEL != 0 ]; then
|
|
exit $BUILDERRORLEVEL
|
|
fi
|
|
cp ${__tizenToolsRoot}/${__systemGlobNativeLibName} $__ProjectRoot/bin/Linux.${__BuildArch}.${__BuildType}/framework
|
|
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
|