elif [ -e /etc/os-release ]; then
source /etc/os-release
if [[ $ID == "alpine" ]]; then
- # remove the last version digit
- VERSION_ID=${VERSION_ID%.*}
+ __HostDistroRid="linux-musl-$__HostArch"
else
__PortableBuild=1
+ __HostDistroRid="$ID.$VERSION_ID-$__HostArch"
fi
-
- __HostDistroRid="$ID.$VERSION_ID-$__HostArch"
- fi
+ fi
elif [ "$__HostOS" == "FreeBSD" ]; then
__freebsd_version=`sysctl -n kern.osrelease | cut -f1 -d'.'`
__HostDistroRid="freebsd.$__freebsd_version-$__HostArch"
echo "Starting the Managed Tests Build..."
- __ManagedTestBuiltMarker=${__TestBinDir}/managed_test_build
-
- if [ ! -f $__ManagedTestBuiltMarker ]; then
+ build_Tests_internal "Tests_Managed" "$__ProjectDir/tests/build.proj" "$__up" "Managed tests build (build tests)"
- build_Tests_internal "Tests_Managed" "$__ProjectDir/tests/build.proj" "$__up" "Managed tests build (build tests)"
-
- if [ $? -ne 0 ]; then
- echo "${__MsgPrefix}Error: build failed. Refer to the build log files for details (above)"
- exit 1
- else
- echo "Tests have been built."
- echo "Create marker \"${__ManagedTestBuiltMarker}\""
- touch $__ManagedTestBuiltMarker
- fi
+ if [ $? -ne 0 ]; then
+ echo "${__MsgPrefix}Error: build failed. Refer to the build log files for details (above)"
+ exit 1
else
- echo "Managed Tests had been built before."
+ echo "Managed tests build success!"
fi
if [ $__BuildTestWrappers -ne -0 ]; then
__BuildLog="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.log"
__BuildWrn="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.wrn"
__BuildErr="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.err"
- __msbuildLog="\"/flp:Verbosity=normal;LogFile=${__BuildLog}\""
- __msbuildWrn="\"/flp1:WarningsOnly;LogFile=${__BuildWrn}\""
- __msbuildErr="\"/flp2:ErrorsOnly;LogFile=${__BuildErr}\""
- # Generate build command
- buildCommand="$__ProjectRoot/run.sh build -Project=$projectName -MsBuildLog=${__msbuildLog} -MsBuildWrn=${__msbuildWrn} -MsBuildErr=${__msbuildErr} -MsBuildEventLogging=\"/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log\" $extraBuildParameters $__RunArgs $__UnprocessedBuildArgs"
+ if [[ "$subDirectoryName" == "Tests_Managed" ]]; then
+ # Execute msbuild managed test build in stages - workaround for excessive data retention in MSBuild ConfigCache
+ # See https://github.com/Microsoft/msbuild/issues/2993
- echo "Building step '$stepName' via $buildCommand"
+ # __SkipPackageRestore and __SkipTargetingPackBuild used to control build by tests/src/dirs.proj
+ export __SkipPackageRestore=false
+ export __SkipTargetingPackBuild=false
+ export __BuildLoopCount=2
+ export __TestGroupToBuild=1
+ __AppendToLog=false
- # Invoke MSBuild
- eval $buildCommand
+ if [ -n __priority1 ]; then
+ export __BuildLoopCount=16
+ export __TestGroupToBuild=2
+ fi
- # Invoke MSBuild
- # $__ProjectRoot/run.sh build -Project=$projectName -MsBuildLog="$__msbuildLog" -MsBuildWrn="$__msbuildWrn" -MsBuildErr="$__msbuildErr" $extraBuildParameters $__RunArgs $__UnprocessedBuildArgs
+ for (( slice=1 ; slice <= __BuildLoopCount; slice = slice + 1 ))
+ do
+ __msbuildLog="\"/flp:Verbosity=normal;LogFile=${__BuildLog};Append=${__AppendToLog}\""
+ __msbuildWrn="\"/flp1:WarningsOnly;LogFile=${__BuildWrn};Append=${__AppendToLog}\""
+ __msbuildErr="\"/flp2:ErrorsOnly;LogFile=${__BuildErr};Append=${__AppendToLog}\""
- # Make sure everything is OK
- if [ $? -ne 0 ]; then
- echo "${__MsgPrefix}Failed to build $stepName. See the build logs:"
- echo " $__BuildLog"
- echo " $__BuildWrn"
- echo " $__BuildErr"
- exit 1
+ export TestBuildSlice=$slice
+
+ # Generate build command
+ buildCommand="$__ProjectRoot/run.sh build -Project=$projectName -MsBuildLog=${__msbuildLog} -MsBuildWrn=${__msbuildWrn} -MsBuildErr=${__msbuildErr} -MsBuildEventLogging=\"/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log\" $extraBuildParameters $__RunArgs $__UnprocessedBuildArgs"
+
+ echo "Building step '$stepName' slice=$slice via $buildCommand"
+
+ # Invoke MSBuild
+ eval $buildCommand
+
+ # Make sure everything is OK
+ if [ $? -ne 0 ]; then
+ echo "${__MsgPrefix}Failed to build $stepName. See the build logs:"
+ echo " $__BuildLog"
+ echo " $__BuildWrn"
+ echo " $__BuildErr"
+ exit 1
+ fi
+ export __SkipPackageRestore=true
+ export __SkipTargetingPackBuild=true
+ __AppendToLog=true
+ done
+ else
+ __msbuildLog="\"/flp:Verbosity=normal;LogFile=${__BuildLog}\""
+ __msbuildWrn="\"/flp1:WarningsOnly;LogFile=${__BuildWrn}\""
+ __msbuildErr="\"/flp2:ErrorsOnly;LogFile=${__BuildErr}\""
+
+ # Generate build command
+ buildCommand="$__ProjectRoot/run.sh build -Project=$projectName -MsBuildLog=${__msbuildLog} -MsBuildWrn=${__msbuildWrn} -MsBuildErr=${__msbuildErr} -MsBuildEventLogging=\"/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log\" $extraBuildParameters $__RunArgs $__UnprocessedBuildArgs"
+
+ echo "Building step '$stepName' via $buildCommand"
+
+ # Invoke MSBuild
+ eval $buildCommand
+
+ # Invoke MSBuild
+ # $__ProjectRoot/run.sh build -Project=$projectName -MsBuildLog="$__msbuildLog" -MsBuildWrn="$__msbuildWrn" -MsBuildErr="$__msbuildErr" $extraBuildParameters $__RunArgs $__UnprocessedBuildArgs
+
+ # Make sure everything is OK
+ if [ $? -ne 0 ]; then
+ echo "${__MsgPrefix}Failed to build $stepName. See the build logs:"
+ echo " $__BuildLog"
+ echo " $__BuildWrn"
+ echo " $__BuildErr"
+ exit 1
+ fi
fi
}
echo "BuildType can be: debug, checked, release"
echo "coverage - optional argument to enable code coverage build (currently supported only for Linux and OSX)."
echo "ninja - target ninja instead of GNU make"
- echo "clangx.y - optional argument to build using clang version x.y."
+ echo "clangx.y - optional argument to build using clang version x.y - supported version 3.5 - 6.0"
echo "cross - optional argument to signify cross compilation,"
echo " - will use ROOTFS_DIR environment variable if set."
echo "crosscomponent - optional argument to build cross-architecture component,"
echo "ziptests - zips CoreCLR tests & Core_Root for a Helix run"
echo "bindir - output directory (defaults to $__ProjectRoot/bin)"
echo "msbuildonunsupportedplatform - build managed binaries even if distro is not officially supported."
+ echo "priority1 - include priority=1 tests in the build"
exit 1
}
__RebuildTests=0
__BuildTestWrappers=0
__GenerateLayoutOnly=
+__priority1=
CORE_ROOT=
while :; do
__VerboseBuild=1
;;
- clang3.5)
+ clang3.5|-clang3.5)
__ClangMajorVersion=3
__ClangMinorVersion=5
;;
- clang3.6)
+ clang3.6|-clang3.6)
__ClangMajorVersion=3
__ClangMinorVersion=6
;;
- clang3.7)
+ clang3.7|-clang3.7)
__ClangMajorVersion=3
__ClangMinorVersion=7
;;
- clang3.8)
+ clang3.8|-clang3.8)
__ClangMajorVersion=3
__ClangMinorVersion=8
;;
- clang3.9)
+ clang3.9|-clang3.9)
__ClangMajorVersion=3
__ClangMinorVersion=9
;;
+ clang4.0|-clang4.0)
+ __ClangMajorVersion=4
+ __ClangMinorVersion=0
+ ;;
+
+ clang5.0|-clang5.0)
+ __ClangMajorVersion=5
+ __ClangMinorVersion=0
+ ;;
+
+ clang6.0|-clang6.0)
+ __ClangMajorVersion=6
+ __ClangMinorVersion=0
+ ;;
+
ninja)
__UseNinja=1
;;
msbuildonunsupportedplatform)
__msbuildonunsupportedplatform=1
;;
+ priority1)
+ __priority1=1
+ __UnprocessedBuildArgs="$__UnprocessedBuildArgs -priority=1"
+ ;;
*)
__UnprocessedBuildArgs="$__UnprocessedBuildArgs $1"
;;
if [ ! -d "$__BinDir" ] || [ ! -d "$__BinDir/bin" ]; then
- echo "Cannot find build directory for the CoreCLR Product."
- echo "Please make sure CoreCLR is built before building tests."
- echo "Example use: './build.sh $__BuildArch $__BuildType'"
+ echo "Cannot find build directory for the CoreCLR Product or native tests."
+ echo "Please make sure CoreCLR and native tests are built before building managed tests."
+ echo "Example use: './build.sh $__BuildArch $__BuildType' without -skiptests switch"
exit 1
fi