7 source init-distro-rid.sh
9 # Only pass ROOTFS_DIR if cross is specified.
10 if (( ${__CrossBuild} == 1 )); then
11 passedRootfsDir=${ROOTFS_DIR}
14 initDistroRidGlobal ${__BuildOS} ${__BuildArch} ${__PortableBuild} ${passedRootfsDir}
17 isMSBuildOnNETCoreSupported()
19 __isMSBuildOnNETCoreSupported=$__msbuildonunsupportedplatform
21 if [ $__isMSBuildOnNETCoreSupported == 1 ]; then
25 if [ "$__HostArch" == "x64" ]; then
26 if [ "$__HostOS" == "Linux" ]; then
27 __isMSBuildOnNETCoreSupported=1
28 UNSUPPORTED_RIDS=("debian.9-x64" "ubuntu.17.04-x64")
29 for UNSUPPORTED_RID in "${UNSUPPORTED_RIDS[@]}"
31 if [ "${__DistroRid}" == "$UNSUPPORTED_RID" ]; then
32 __isMSBuildOnNETCoreSupported=0
36 elif [ "$__HostOS" == "OSX" ]; then
37 __isMSBuildOnNETCoreSupported=1
44 if [ $__BuildTestWrappers -ne -0 ]; then
45 echo "${__MsgPrefix}Creating test wrappers..."
47 export __Exclude="${__ProjectDir}/tests/issues.targets"
48 export __BuildLogRootName="Tests_XunitWrapper"
50 buildVerbosity="Summary"
52 if [ $__VerboseBuild == 1 ]; then
56 # Set up directories and file names
57 __BuildLogRootName=$subDirectoryName
58 __BuildLog="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.log"
59 __BuildWrn="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.wrn"
60 __BuildErr="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.err"
61 __MsbuildLog="/fileloggerparameters:\"Verbosity=normal;LogFile=${__BuildLog}\""
62 __MsbuildWrn="/fileloggerparameters1:\"WarningsOnly;LogFile=${__BuildWrn}\""
63 __MsbuildErr="/fileloggerparameters2:\"ErrorsOnly;LogFile=${__BuildErr}\""
64 __Logging="$__MsbuildLog $__MsbuildWrn $__MsbuildErr /consoleloggerparameters:$buildVerbosity"
66 nextCommand="\"${__DotNetCli}\" msbuild \"${__ProjectDir}/tests/runtest.proj\" /p:RestoreAdditionalProjectSources=https://dotnet.myget.org/F/dotnet-core/ /p:BuildWrappers=true /p:TargetsWindows=false $__Logging /p:__BuildOS=$__BuildOS /p:__BuildType=$__BuildType /p:__BuildArch=$__BuildArch"
71 echo "${__MsgPrefix}Error: build failed. Refer to the build log files for details (above)"
74 echo "XUnit Wrappers have been built."
75 echo { "\"build_os\"": "\"${__BuildOS}\"", "\"build_arch\"": "\"${__BuildArch}\"", "\"build_type\"": "\"${__BuildType}\"" } > "${__TestWorkingDir}/build_info.json"
83 echo "${__MsgPrefix}Creating test overlay..."
85 __TestDir=$__ProjectDir/tests
86 __ProjectFilesDir=$__TestDir
87 __TestBinDir=$__TestWorkingDir
89 if [ $__RebuildTests -ne 0 ]; then
90 if [ -d "${__TestBinDir}" ]; then
91 echo "Removing tests build dir: ${__TestBinDir}"
96 __CMakeBinDir="${__TestBinDir}"
98 if [ -z "$__TestIntermediateDir" ]; then
99 __TestIntermediateDir="tests/obj/${__BuildOS}.${__BuildArch}.${__BuildType}"
102 echo "__BuildOS: ${__BuildOS}"
103 echo "__BuildArch: ${__BuildArch}"
104 echo "__BuildType: ${__BuildType}"
105 echo "__TestIntermediateDir: ${__TestIntermediateDir}"
107 if [ ! -f "$__TestBinDir" ]; then
108 echo "Creating TestBinDir: ${__TestBinDir}"
109 mkdir -p $__TestBinDir
111 if [ ! -f "$__LogsDir" ]; then
112 echo "Creating LogsDir: ${__LogsDir}"
115 if [ ! -f "$__MsbuildDebugLogsDir" ]; then
116 echo "Creating MsbuildDebugLogsDir: ${__MsbuildDebugLogsDir}"
117 mkdir -p $__MsbuildDebugLogsDir
120 # Set up the directory for MSBuild debug logs.
121 export MSBUILDDEBUGPATH="${__MsbuildDebugLogsDir}"
123 __BuildProperties="-p:OSGroup=${__BuildOS} -p:BuildOS=${__BuildOS} -p:BuildArch=${__BuildArch} -p:BuildType=${__BuildType}"
125 # =========================================================================================
127 # === Restore product binaries from packages
129 # =========================================================================================
131 build_MSBuild_projects "Restore_Packages" "${__ProjectDir}/tests/build.proj" "Restore product binaries (build tests)" "/t:BatchRestorePackages"
133 if [ -n "$__UpdateInvalidPackagesArg" ]; then
134 __up="/t:UpdateInvalidPackageVersions"
137 echo "${__MsgPrefix}Creating test overlay..."
139 if [ -z "$xUnitTestBinBase" ]; then
140 xUnitTestBinBase=$__TestWorkingDir
143 export CORE_ROOT=$xUnitTestBinBase/Tests/Core_Root
145 if [ -d "${CORE_ROOT}" ]; then
151 build_MSBuild_projects "Tests_Overlay_Managed" "${__ProjectDir}/tests/runtest.proj" "Creating test overlay" "/t:CreateTestOverlay"
153 chmod +x $__BinDir/corerun
154 chmod +x $__BinDir/crossgen
156 # Make sure to copy over the pulled down packages
157 cp -r $__BinDir/* $CORE_ROOT/ > /dev/null
162 echo "${__MsgPrefix}Generating test host..."
164 export TEST_HOST=$xUnitTestBinBase/testhost
166 if [ -d "${TEST_HOST}" ]; then
172 build_MSBuild_projects "Tests_Generate_TestHost" "${__ProjectDir}/tests/runtest.proj" "Creating test host" "/t:CreateTestHost"
178 echo "${__MsgPrefix}Building Tests..."
180 __TestDir=$__ProjectDir/tests
181 __ProjectFilesDir=$__TestDir
182 __TestBinDir=$__TestWorkingDir
184 if [ -f "${__TestWorkingDir}/build_info.json" ]; then
185 rm "${__TestWorkingDir}/build_info.json"
188 if [ $__RebuildTests -ne 0 ]; then
189 if [ -d "${__TestBinDir}" ]; then
190 echo "Removing tests build dir: ${__TestBinDir}"
195 export __CMakeBinDir="${__TestBinDir}"
196 if [ ! -d "${__TestIntermediatesDir}" ]; then
197 mkdir -p ${__TestIntermediatesDir}
200 __NativeTestIntermediatesDir="${__TestIntermediatesDir}/Native"
201 if [ ! -d "${__NativeTestIntermediatesDir}" ]; then
202 mkdir -p ${__NativeTestIntermediatesDir}
205 __ManagedTestIntermediatesDir="${__TestIntermediatesDir}/Managed"
206 if [ ! -d "${__ManagedTestIntermediatesDir}" ]; then
207 mkdir -p ${__ManagedTestIntermediatesDir}
210 echo "__BuildOS: ${__BuildOS}"
211 echo "__BuildArch: ${__BuildArch}"
212 echo "__BuildType: ${__BuildType}"
213 echo "__TestIntermediatesDir: ${__TestIntermediatesDir}"
214 echo "__NativeTestIntermediatesDir: ${__NativeTestIntermediatesDir}"
215 echo "__ManagedTestIntermediatesDir: ${__ManagedTestIntermediatesDir}"
217 if [ ! -f "$__TestBinDir" ]; then
218 echo "Creating TestBinDir: ${__TestBinDir}"
219 mkdir -p $__TestBinDir
221 if [ ! -f "$__LogsDir" ]; then
222 echo "Creating LogsDir: ${__LogsDir}"
225 if [ ! -f "$__MsbuildDebugLogsDir" ]; then
226 echo "Creating MsbuildDebugLogsDir: ${__MsbuildDebugLogsDir}"
227 mkdir -p $__MsbuildDebugLogsDir
230 # Set up the directory for MSBuild debug logs.
231 export MSBUILDDEBUGPATH="${__MsbuildDebugLogsDir}"
233 __BuildProperties="-p:OSGroup=${__BuildOS} -p:BuildOS=${__BuildOS} -p:BuildArch=${__BuildArch} -p:BuildType=${__BuildType}"
235 # =========================================================================================
237 # === Restore product binaries from packages
239 # =========================================================================================
241 if [ ${__SkipRestorePackages} != 1 ]; then
242 build_MSBuild_projects "Restore_Product" "${__ProjectDir}/tests/build.proj" "Restore product binaries (build tests)" "/t:BatchRestorePackages"
245 if [ $__SkipNative != 1 ]; then
246 build_native_projects "$__BuildArch" "${__NativeTestIntermediatesDir}"
248 if [ $? -ne 0 ]; then
249 echo "${__MsgPrefix}Error: build failed. Refer to the build log files for details (above)"
254 if [ $__SkipManaged != 1 ]; then
255 echo "Starting the Managed Tests Build..."
257 build_MSBuild_projects "Tests_Managed" "$__ProjectDir/tests/build.proj" "Managed tests build (build tests)" "$__up"
259 if [ $? -ne 0 ]; then
260 echo "${__MsgPrefix}Error: build failed. Refer to the build log files for details (above)"
263 echo "Checking the Managed Tests Build..."
265 build_MSBuild_projects "Check_Test_Build" "${__ProjectDir}/tests/runtest.proj" "Check Test Build" "/t:CheckTestBuild"
267 if [ $? -ne 0 ]; then
268 echo "${__MsgPrefix}Error: Check Test Build failed."
273 echo "Managed tests build success!"
278 if [ -n "$__UpdateInvalidPackagesArg" ]; then
279 __up="/t:UpdateInvalidPackageVersions"
284 if [ $__ZipTests -ne 0 ]; then
285 echo "${__MsgPrefix}ZIP tests packages..."
286 build_MSBuild_projects "Helix_Prep" "$__ProjectDir/tests/helixprep.proj" "Prep test binaries for Helix publishing" " "
290 build_MSBuild_projects()
298 extraBuildParameters=("$@")
300 # Set up directories and file names
301 __BuildLogRootName=$subDirectoryName
302 __BuildLog="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.log"
303 __BuildWrn="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.wrn"
304 __BuildErr="$__LogsDir/${__BuildLogRootName}.${__BuildOS}.${__BuildArch}.${__BuildType}.err"
306 # Use binclashlogger by default if no other logger is specified
307 if [[ "${extraBuildParameters[*]}" == *"/l:"* ]]; then
308 __msbuildEventLogging=
310 __msbuildEventLogging="/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll\;LogFile=binclash.log"
313 if [[ "$subDirectoryName" == "Tests_Managed" ]]; then
314 # Execute msbuild managed test build in stages - workaround for excessive data retention in MSBuild ConfigCache
315 # See https://github.com/Microsoft/msbuild/issues/2993
317 # __SkipPackageRestore and __SkipTargetingPackBuild used to control build by tests/src/dirs.proj
318 export __SkipPackageRestore=false
319 export __SkipTargetingPackBuild=false
320 export __BuildLoopCount=2
321 export __TestGroupToBuild=1
324 if [ -n "$__priority1" ]; then
325 export __BuildLoopCount=16
326 export __TestGroupToBuild=2
329 for (( slice=1 ; slice <= __BuildLoopCount; slice = slice + 1 ))
331 __msbuildLog="\"/flp:Verbosity=normal;LogFile=${__BuildLog};Append=${__AppendToLog}\""
332 __msbuildWrn="\"/flp1:WarningsOnly;LogFile=${__BuildWrn};Append=${__AppendToLog}\""
333 __msbuildErr="\"/flp2:ErrorsOnly;LogFile=${__BuildErr};Append=${__AppendToLog}\""
335 export TestBuildSlice=$slice
337 # Generate build command
338 buildArgs=("/nologo" "/verbosity:minimal" "/clp:Summary")
339 buildArgs+=("/p:RestoreDefaultOptimizationDataPackage=false" "/p:PortableBuild=true")
340 buildArgs+=("/p:UsePartialNGENOptimization=false" "/maxcpucount")
342 buildArgs+=("$projectName" "${__msbuildLog}" "${__msbuildWrn}" "${__msbuildErr}")
343 buildArgs+=("$__msbuildEventLogging")
344 buildArgs+=("${extraBuildParameters[@]}")
345 buildArgs+=("${__CommonMSBuildArgs[@]}")
346 buildArgs+=("${__UnprocessedBuildArgs[@]}")
348 nextCommand="\"$__ProjectRoot/dotnet.sh\" msbuild ${buildArgs[@]}"
349 echo "Building step '$stepName' slice=$slice via $nextCommand"
352 # Make sure everything is OK
353 if [ $? -ne 0 ]; then
354 echo "${__MsgPrefix}Failed to build $stepName. See the build logs:"
360 export __SkipPackageRestore=true
361 export __SkipTargetingPackBuild=true
365 __msbuildLog="\"/flp:Verbosity=normal;LogFile=${__BuildLog}\""
366 __msbuildWrn="\"/flp1:WarningsOnly;LogFile=${__BuildWrn}\""
367 __msbuildErr="\"/flp2:ErrorsOnly;LogFile=${__BuildErr}\""
369 # Generate build command
370 buildArgs=("/nologo" "/verbosity:minimal" "/clp:Summary")
371 buildArgs+=("/p:RestoreDefaultOptimizationDataPackage=false" "/p:PortableBuild=true")
372 buildArgs+=("/p:UsePartialNGENOptimization=false" "/maxcpucount")
374 buildArgs+=("$projectName" "${__msbuildLog}" "${__msbuildWrn}" "${__msbuildErr}")
375 buildArgs+=("$__msbuildEventLogging")
376 buildArgs+=("${extraBuildParameters[@]}")
377 buildArgs+=("${__CommonMSBuildArgs[@]}")
378 buildArgs+=("${__UnprocessedBuildArgs[@]}")
380 nextCommand="\"$__ProjectRoot/dotnet.sh\" msbuild ${buildArgs[@]}"
381 echo "Building step '$stepName' via $nextCommand"
384 # Make sure everything is OK
385 if [ $? -ne 0 ]; then
386 echo "${__MsgPrefix}Failed to build $stepName. See the build logs:"
395 build_native_projects()
398 intermediatesForBuild="$2"
400 extraCmakeArguments="-DCLR_CMAKE_TARGET_OS=${__BuildOS} -DCLR_CMAKE_HOST_ARCH=${platformArch}"
401 message="native tests assets"
403 # All set to commence the build
404 echo "Commencing build of $message for $__BuildOS.$__BuildArch.$__BuildType in $intermediatesForBuild"
409 if [ $__UseNinja == 1 ]; then
411 buildFile="build.ninja"
412 if ! buildTool=$(command -v ninja || command -v ninja-build); then
413 echo "Unable to locate ninja!" 1>&2
418 if [ $__SkipConfigure == 0 ]; then
419 # if msbuild is not supported, then set __SkipGenerateVersion to 1
420 if [ $__isMSBuildOnNETCoreSupported == 0 ]; then __SkipGenerateVersion=1; fi
421 # Drop version.c file
422 __versionSourceFile="$intermediatesForBuild/version.c"
423 if [ $__SkipGenerateVersion == 0 ]; then
425 $__ProjectRoot/dotnet.sh msbuild /nologo /verbosity:minimal /clp:Summary \
426 /p:RestoreDefaultOptimizationDataPackage=false /p:PortableBuild=true \
427 /p:UsePartialNGENOptimization=false /maxcpucount \
428 $__ProjectDir/build.proj /t:GenerateVersionHeader \
429 /p:GenerateVersionHeader=true /p:NativeVersionSourceFile=$__versionSourceFile \
430 /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll\;LogFile=binclash.log \
431 $__CommonMSBuildArgs $__UnprocessedBuildArgs
433 # Generate the dummy version.c, but only if it didn't exist to make sure we don't trigger unnecessary rebuild
434 __versionSourceLine="static char sccsid[] __attribute__((used)) = \"@(#)No version information produced\";"
435 if [ -e $__versionSourceFile ]; then
436 read existingVersionSourceLine < $__versionSourceFile
438 if [ "$__versionSourceLine" != "$existingVersionSourceLine" ]; then
439 echo $__versionSourceLine > $__versionSourceFile
443 pushd "$intermediatesForBuild"
444 # Regenerate the CMake solution
445 # Force cross dir to point to project root cross dir, in case there is a cross build.
446 nextCommand="CONFIG_DIR=\"$__ProjectRoot/cross\" \"$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh\" \"$__TestDir\" $__ClangMajorVersion $__ClangMinorVersion $platformArch $__BuildType $__CodeCoverage $generator $extraCmakeArguments $__cmakeargs"
447 echo "Invoking $nextCommand"
452 if [ ! -f "$intermediatesForBuild/$buildFile" ]; then
453 echo "Failed to generate $message build project!"
458 if [ $__ConfigureOnly == 1 ]; then
459 echo "Finish configuration & skipping $message build."
463 pushd "$intermediatesForBuild"
465 echo "Executing $buildTool install -j $__NumProc"
467 $buildTool install -j $__NumProc
469 echo "Failed to build $message."
474 echo "Native tests build success!"
479 echo "Usage: $0 [BuildArch] [BuildType] [verbose] [coverage] [cross] [clangx.y] [ninja] [runtests] [bindir]"
480 echo "BuildArch can be: x64, x86, arm, armel, arm64"
481 echo "BuildType can be: debug, checked, release"
482 echo "coverage - optional argument to enable code coverage build (currently supported only for Linux and OSX)."
483 echo "ninja - target ninja instead of GNU make"
484 echo "clangx.y - optional argument to build using clang version x.y - supported version 3.5 - 6.0"
485 echo "cross - optional argument to signify cross compilation,"
486 echo " - will use ROOTFS_DIR environment variable if set."
487 echo "portableLinux - build for Portable Linux Distribution"
488 echo "portablebuild - Use portable build."
489 echo "verbose - optional argument to enable verbose build output."
490 echo "rebuild - if tests have already been built - rebuild them"
491 echo "skipnative: skip the native tests build"
492 echo "skipmanaged: skip the managed section of the test build"
493 echo "buildtestwrappersonly - only build the test wrappers"
494 echo "generatelayoutonly - only pull down dependencies and build coreroot"
495 echo "generatetesthostonly - only pull down dependencies and build coreroot and the CoreFX testhost"
496 echo "skiprestorepackages - skip package restore"
497 echo "runtests - run tests after building them"
498 echo "ziptests - zips CoreCLR tests & Core_Root for a Helix run"
499 echo "bindir - output directory (defaults to $__ProjectRoot/bin)"
500 echo "msbuildonunsupportedplatform - build managed binaries even if distro is not officially supported."
501 echo "priority1 - include priority=1 tests in the build"
506 # Obtain the location of the bash script to figure out where the root of the repo is.
507 __ProjectRoot="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
509 # Use uname to determine what the CPU is.
512 # Some Linux platforms report unknown for platform, but the arch for machine.
513 if [ "$CPUName" == "unknown" ]; then
519 echo "Unsupported CPU $CPUName detected, build might not succeed!"
530 echo "Unsupported CPU $CPUName detected, build might not succeed!"
541 echo "Unknown CPU $CPUName detected, configuring as if for x64"
547 # Use uname to determine what the OS is.
581 echo "Unsupported OS $OSName detected, configuring as if for Linux"
589 __IncludeTests=INCLUDE_TESTS
591 # Set the various build properties here so that CMake and MSBuild can pick them up
592 export __ProjectDir="$__ProjectRoot"
593 __SourceDir="$__ProjectDir/src"
594 __PackagesDir="$__ProjectDir/packages"
595 __RootBinDir="$__ProjectDir/bin"
596 __BuildToolsDir="$__ProjectDir/Tools"
597 __DotNetCli="${__BuildToolsDir}/dotnetcli/dotnet"
598 __UnprocessedBuildArgs=
607 __SkipGenerateVersion=0
610 __ClangMajorVersion=0
611 __ClangMinorVersion=0
612 __NuGetPath="$__PackagesDir/NuGet.exe"
613 __SkipRestorePackages=0
617 __msbuildonunsupportedplatform=0
619 __NativeTestIntermediatesDir=
622 __BuildTestWrappers=1
623 __GenerateLayoutOnly=
624 __GenerateTestHostOnly=
626 __BuildTestWrappersOnly=
630 if [ $# -le 0 ]; then
634 lowerI="$(echo $1 | awk '{print tolower($0)}')"
674 __CodeCoverage=Coverage
686 if [ "$__BuildOS" == "Linux" ]; then
689 echo "ERROR: portableLinux not supported for non-Linux platforms."
699 __ClangMajorVersion=3
700 __ClangMinorVersion=5
704 __ClangMajorVersion=3
705 __ClangMinorVersion=6
709 __ClangMajorVersion=3
710 __ClangMinorVersion=7
714 __ClangMajorVersion=3
715 __ClangMinorVersion=8
719 __ClangMajorVersion=3
720 __ClangMinorVersion=9
724 __ClangMajorVersion=4
725 __ClangMinorVersion=0
729 __ClangMajorVersion=5
730 __ClangMinorVersion=0
734 __ClangMajorVersion=6
735 __ClangMinorVersion=0
750 skipnative|-skipnative)
754 skipmanaged|-skipmanaged)
756 __BuildTestWrappers=0
763 buildtestwrappersonly)
764 __BuildTestWrappersOnly=1
768 __GenerateLayoutOnly=1
771 generatetesthostonly)
772 __GenerateTestHostOnly=1
776 __SkipRestorePackages=1
782 if [ ! -d $__RootBinDir ]; then
785 __RootBinParent=$(dirname $__RootBinDir)
786 __RootBinName=${__RootBinDir##*/}
787 __RootBinDir="$(cd $__RootBinParent &>/dev/null && printf %s/%s $PWD $__RootBinName)"
790 echo "ERROR: 'bindir' requires a non-empty option argument"
795 msbuildonunsupportedplatform)
796 __msbuildonunsupportedplatform=1
801 __UnprocessedBuildArgs+=("/p:CLRTestPriorityToBuild=1")
805 __UnprocessedBuildArgs+=("$1")
812 # Get the number of processors available to the scheduler
813 # Other techniques such as `nproc` only get the number of
814 # processors available to a single process.
815 if [ `uname` = "FreeBSD" ]; then
816 __NumProc=`sysctl hw.ncpu | awk '{ print $2+1 }'`
817 elif [ `uname` = "NetBSD" ]; then
818 __NumProc=$(($(getconf NPROCESSORS_ONLN)+1))
819 elif [ `uname` = "Darwin" ]; then
820 __NumProc=$(($(getconf _NPROCESSORS_ONLN)+1))
822 __NumProc=$(nproc --all)
825 __CommonMSBuildArgs=("/p:__BuildArch=$__BuildArch" "/p:__BuildType=$__BuildType" "/p:__BuildOS=$__BuildOS")
827 # Configure environment if we are doing a verbose build
828 if [ $__VerboseBuild == 1 ]; then
830 __CommonMSBuildArgs+=("/v:detailed")
833 # Set default clang version
834 if [[ $__ClangMajorVersion == 0 && $__ClangMinorVersion == 0 ]]; then
835 if [[ "$__BuildArch" == "arm" || "$__BuildArch" == "armel" ]]; then
836 __ClangMajorVersion=5
837 __ClangMinorVersion=0
839 __ClangMajorVersion=3
840 __ClangMinorVersion=9
844 # Set dependent variables
845 __LogsDir="$__RootBinDir/Logs"
846 __MsbuildDebugLogsDir="$__LogsDir/MsbuildDebugLogs"
848 # Set the remaining variables based upon the determined build configuration
849 __BinDir="$__RootBinDir/Product/$__BuildOS.$__BuildArch.$__BuildType"
850 __PackagesBinDir="$__BinDir/.nuget"
851 __TestDir="$__ProjectDir/tests"
852 __TestWorkingDir="$__RootBinDir/tests/$__BuildOS.$__BuildArch.$__BuildType"
853 __IntermediatesDir="$__RootBinDir/obj/$__BuildOS.$__BuildArch.$__BuildType"
854 __TestIntermediatesDir="$__RootBinDir/tests/obj/$__BuildOS.$__BuildArch.$__BuildType"
855 __isMSBuildOnNETCoreSupported=0
856 __CrossComponentBinDir="$__BinDir"
857 __CrossCompIntermediatesDir="$__IntermediatesDir/crossgen"
859 __CrossArch="$__HostArch"
860 if [[ "$__HostArch" == "x64" && "$__BuildArch" == "arm" ]]; then
863 if [ $__CrossBuild == 1 ]; then
864 __CrossComponentBinDir="$__CrossComponentBinDir/$__CrossArch"
866 __CrossgenCoreLibLog="$__LogsDir/CrossgenCoreLib_$__BuildOS.$BuildArch.$__BuildType.log"
867 __CrossgenExe="$__CrossComponentBinDir/crossgen"
869 isMSBuildOnNETCoreSupported
871 # CI_SPECIFIC - On CI machines, $HOME may not be set. In such a case, create a subfolder and set the variable to it.
872 # This is needed by CLI to function.
873 if [ -z "$HOME" ]; then
874 if [ ! -d "$__ProjectDir/temp_home" ]; then
877 export HOME=$__ProjectDir/temp_home
878 echo "HOME not defined; setting it to $HOME"
881 # Configure environment if we are doing a cross compile.
882 if [ $__CrossBuild == 1 ]; then
883 export CROSSCOMPILE=1
884 if ! [[ -n "$ROOTFS_DIR" ]]; then
885 export ROOTFS_DIR="$__ProjectRoot/cross/rootfs/$__BuildArch"
889 # init the target distro name
892 # Override tool directory
894 __CoreClrVersion=1.1.0
895 __sharedFxDir=$__BuildToolsDir/dotnetcli/shared/Microsoft.NETCore.App/$__CoreClrVersion/
897 if [[ (-z "$__GenerateLayoutOnly") && (-z "$__GenerateTestHostOnly") && (-z "$__BuildTestWrappersOnly") ]]; then
899 elif [ ! -z "$__BuildTestWrappersOnly" ]; then
903 if [ ! -z "$__GenerateTestHostOnly" ]; then
908 if [ $? -ne 0 ]; then
909 echo "Failed to build tests"
913 echo "${__MsgPrefix}Test build successful."
914 echo "${__MsgPrefix}Test binaries are available at ${__TestBinDir}"
916 __testNativeBinDir=$__IntermediatesDir/tests
918 if [ $__RunTests -ne 0 ]; then
922 nextCommand="$__TestDir/runtest.sh --testRootDir=$__TestBinDir --coreClrBinDir=$__BinDir --coreFxBinDir=$CORE_ROOT --testNativeBinDir=$__testNativeBinDir"
926 echo "Tests run successful."
928 echo "To run all tests use 'tests/runtests.sh' where:"
929 echo " testRootDir = $__TestBinDir"
930 echo " coreClrBinDir = $__BinDir"
931 echo " coreFxBinDir = $CORE_ROOT"
932 echo " testNativeBinDir = $__testNativeBinDir"
933 echo " -------------------------------------------------- "
934 echo " Example runtest.sh command"
936 echo " ./tests/runtest.sh --coreOverlayDir=$CORE_ROOT --testNativeBinDir=$__testNativeBinDir --testRootDir=$__TestBinDir --copyNativeTestBin"
937 echo " -------------------------------------------------- "
938 echo "To run single test use the following command:"
939 echo " bash ${__TestBinDir}/__TEST_PATH__/__TEST_NAME__.sh -coreroot=${CORE_ROOT}"