From ae22daa47fd2dfc084b01239b1859138ef41bc84 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Thu, 27 Oct 2022 17:39:26 -0700 Subject: [PATCH 01/49] add DOTNET_EnableCrashReport --- src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 76e35494f8961..ce2d555d8eec5 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -221,6 +221,7 @@ static bool CollectCrashDump(Process process, string path) createdump.StartInfo.FileName = "sudo"; createdump.StartInfo.Arguments = $"{createdumpPath} " + arguments; createdump.StartInfo.EnvironmentVariables.Add("DOTNET_DbgEnableElfDumpOnMacOS", "1"); + createdump.StartInfo.EnvironmentVariables.Add("DOTNET_EnableCrashReport", "1"); } createdump.StartInfo.UseShellExecute = false; From 770b4c52e36f70d3e60914d2ceb039adb9c8d1b9 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Thu, 27 Oct 2022 17:49:56 -0700 Subject: [PATCH 02/49] Enable JitStress and JitStressRegs by default to see some test failures --- src/coreclr/jit/jitconfigvalues.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/jit/jitconfigvalues.h b/src/coreclr/jit/jitconfigvalues.h index faf634baa24fe..c07251d5c5c4c 100644 --- a/src/coreclr/jit/jitconfigvalues.h +++ b/src/coreclr/jit/jitconfigvalues.h @@ -159,7 +159,7 @@ CONFIG_INTEGER(JitSplitFunctionSize, W("JitSplitFunctionSize"), 0) // On ARM, us CONFIG_INTEGER(JitSsaStress, W("JitSsaStress"), 0) // Perturb order of processing of blocks in SSA; 0 = no stress; 1 = // use method hash; * = supplied value as random hash CONFIG_INTEGER(JitStackChecks, W("JitStackChecks"), 0) -CONFIG_INTEGER(JitStress, W("JitStress"), 0) // Internal Jit stress mode: 0 = no stress, 2 = all stress, other = vary +CONFIG_INTEGER(JitStress, W("JitStress"), 1) // Internal Jit stress mode: 0 = no stress, 2 = all stress, other = vary // stress based on a hash of the method and this value CONFIG_INTEGER(JitStressBBProf, W("JitStressBBProf"), 0) // Internal Jit stress mode CONFIG_INTEGER(JitStressBiasedCSE, W("JitStressBiasedCSE"), 0x101) // Internal Jit stress mode: decimal bias value @@ -171,7 +171,7 @@ CONFIG_INTEGER(JitStressModeNamesOnly, W("JitStressModeNamesOnly"), 0) // Intern CONFIG_INTEGER(JitStressProcedureSplitting, W("JitStressProcedureSplitting"), 0) // Always split after the first basic // block. Skips functions with EH // for simplicity. -CONFIG_INTEGER(JitStressRegs, W("JitStressRegs"), 0) +CONFIG_INTEGER(JitStressRegs, W("JitStressRegs"), 1) CONFIG_STRING(JitStressRegsRange, W("JitStressRegsRange")) // Only apply JitStressRegs to methods in this hash range CONFIG_INTEGER(JitVNMapSelLimit, W("JitVNMapSelLimit"), 0) // If non-zero, assert if # of VNF_MapSelect applications From b98f36333a433563d9f3bdfadfdffff19757028c Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 28 Oct 2022 14:43:52 -0700 Subject: [PATCH 03/49] Enable stress switches only for JIT --- src/coreclr/jit/compiler.cpp | 6 +++++- src/coreclr/jit/lsra.cpp | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/coreclr/jit/compiler.cpp b/src/coreclr/jit/compiler.cpp index 04d50f28c66b6..0fd6657ffb2f3 100644 --- a/src/coreclr/jit/compiler.cpp +++ b/src/coreclr/jit/compiler.cpp @@ -3459,7 +3459,11 @@ bool Compiler::compStressCompileHelper(compStressArea stressArea, unsigned weigh // 0: No stress (Except when explicitly set in complus_JitStressModeNames) // !=2: Vary stress. Performance will be slightly/moderately degraded // 2: Check-all stress. Performance will be REALLY horrible - const int stressLevel = getJitStressLevel(); + int stressLevel = getJitStressLevel(); + if (opts.IsReadyToRun()) + { + stressLevel = 0; + } assert(weight <= MAX_STRESS_WEIGHT); diff --git a/src/coreclr/jit/lsra.cpp b/src/coreclr/jit/lsra.cpp index a479af572b644..61579510ef7ae 100644 --- a/src/coreclr/jit/lsra.cpp +++ b/src/coreclr/jit/lsra.cpp @@ -635,6 +635,10 @@ LinearScan::LinearScan(Compiler* theCompiler) currBuildNode = nullptr; lsraStressMask = JitConfig.JitStressRegs(); + if (compiler->opts.IsReadyToRun()) + { + lsraStressMask = 0; + } if (lsraStressMask != 0) { From 7f444a7f7615197de5658b807114009fa4d8ecf1 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 28 Oct 2022 17:13:10 -0700 Subject: [PATCH 04/49] fix the build errors --- src/coreclr/jit/compiler.cpp | 3 ++- src/coreclr/jit/lsra.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/coreclr/jit/compiler.cpp b/src/coreclr/jit/compiler.cpp index 0fd6657ffb2f3..145e9fa0c9439 100644 --- a/src/coreclr/jit/compiler.cpp +++ b/src/coreclr/jit/compiler.cpp @@ -1759,6 +1759,7 @@ void Compiler::compInit(ArenaAllocator* pAlloc, InlineInfo* inlineInfo) { assert(pAlloc); + opts = {}; compArenaAllocator = pAlloc; // Inlinee Compile object will only be allocated when needed for the 1st time. @@ -3460,7 +3461,7 @@ bool Compiler::compStressCompileHelper(compStressArea stressArea, unsigned weigh // !=2: Vary stress. Performance will be slightly/moderately degraded // 2: Check-all stress. Performance will be REALLY horrible int stressLevel = getJitStressLevel(); - if (opts.IsReadyToRun()) + if ((opts.jitFlags != nullptr) && opts.IsReadyToRun()) { stressLevel = 0; } diff --git a/src/coreclr/jit/lsra.cpp b/src/coreclr/jit/lsra.cpp index 61579510ef7ae..808a7dc989b52 100644 --- a/src/coreclr/jit/lsra.cpp +++ b/src/coreclr/jit/lsra.cpp @@ -635,7 +635,7 @@ LinearScan::LinearScan(Compiler* theCompiler) currBuildNode = nullptr; lsraStressMask = JitConfig.JitStressRegs(); - if (compiler->opts.IsReadyToRun()) + if ((compiler->opts.jitFlags != nullptr) && compiler->opts.IsReadyToRun()) { lsraStressMask = 0; } From 5cfff119dbd8dd7a925a5db6fdb33f4f6487cb3a Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Sun, 30 Oct 2022 07:27:07 -0700 Subject: [PATCH 05/49] Revert "Set DNER for all local fields (#77341)" This reverts commit 4e85471628214a3e6257132cadd8f7fd33299eb0. --- src/coreclr/jit/morph.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/coreclr/jit/morph.cpp b/src/coreclr/jit/morph.cpp index eb4a019a73dfa..17a8ed97cbd26 100644 --- a/src/coreclr/jit/morph.cpp +++ b/src/coreclr/jit/morph.cpp @@ -16166,6 +16166,10 @@ void Compiler::fgMorphLocalField(GenTree* tree, GenTree* parent) } else { + // There is no existing field that has all the parts that we need + // So we must ensure that the struct lives in memory. + lvaSetVarDoNotEnregister(lclNum DEBUGARG(DoNotEnregisterReason::LocalField)); + #ifdef DEBUG // We can't convert this guy to a float because he really does have his // address taken.. @@ -16174,12 +16178,6 @@ void Compiler::fgMorphLocalField(GenTree* tree, GenTree* parent) } } } - - // If we haven't replaced the field, make sure to set DNER on the local. - if (tree->OperIs(GT_LCL_FLD)) - { - lvaSetVarDoNotEnregister(lclNum DEBUGARG(DoNotEnregisterReason::LocalField)); - } } //------------------------------------------------------------------------ From 2988f89ea3e1e29bc8313c8495f00c7d9ea9b8f4 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 31 Oct 2022 16:15:02 -0700 Subject: [PATCH 06/49] Set EnableCrashReport in testenvironment.proj --- src/tests/Common/testenvironment.proj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tests/Common/testenvironment.proj b/src/tests/Common/testenvironment.proj index 27e14c6c3194c..88d128d66db0b 100644 --- a/src/tests/Common/testenvironment.proj +++ b/src/tests/Common/testenvironment.proj @@ -15,6 +15,7 @@ DOTNET_TieredCompilation; DOTNET_DbgEnableMiniDump; + DOTNET_EnableCrashReport; DOTNET_DbgEnableElfDumpOnMacOS; DOTNET_DbgMiniDumpName; DOTNET_EnableAES; @@ -81,8 +82,8 @@ 0 1 - 1 $HELIX_DUMP_FOLDER/coredump.%d.dmp + 1 From bccea52a1f7744015180d88a19041d646550d5e2 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 31 Oct 2022 16:17:38 -0700 Subject: [PATCH 07/49] Pass --crashReport to capture for hangs --- src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index ce2d555d8eec5..77ff73fee9bcd 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -219,9 +219,8 @@ static bool CollectCrashDump(Process process, string path) else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) { createdump.StartInfo.FileName = "sudo"; - createdump.StartInfo.Arguments = $"{createdumpPath} " + arguments; + createdump.StartInfo.Arguments = $"{createdumpPath} --crashreport " + arguments; createdump.StartInfo.EnvironmentVariables.Add("DOTNET_DbgEnableElfDumpOnMacOS", "1"); - createdump.StartInfo.EnvironmentVariables.Add("DOTNET_EnableCrashReport", "1"); } createdump.StartInfo.UseShellExecute = false; From e804a123b8457f9d6b40b4db6d3abf213ca3ce0e Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 31 Oct 2022 16:36:10 -0700 Subject: [PATCH 08/49] Comment bunch of jobs to trigger --- eng/pipelines/runtime.yml | 1974 ++++++++++++++++++------------------- 1 file changed, 987 insertions(+), 987 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 261f3058a297e..42af0ea412f4c 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -77,12 +77,12 @@ extends: - Linux_musl_arm - Linux_musl_arm64 - Linux_musl_x64 - - OSX_arm64 - - Tizen_armel - - windows_x86 - - windows_x64 - - windows_arm - - windows_arm64 + # - OSX_arm64 + # - Tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm + # - windows_arm64 jobParameters: testGroup: innerloop condition: >- @@ -115,659 +115,659 @@ extends: eq(variables['isRollingBuild'], true)) # - # Build CoreCLR OSX_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - OSX_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build CoreCLR release - # Always as they are needed by Installer and we always build and test the Installer. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - OSX_arm64 - - OSX_x64 - - Linux_x64 - - Linux_arm - - Linux_arm64 - - Linux_musl_x64 - - Linux_musl_arm - - Linux_musl_arm64 - - windows_x64 - - windows_x86 - - windows_arm - - windows_arm64 - - FreeBSD_x64 - jobParameters: - testGroup: innerloop - # Mono/runtimetests also need this, but skip for wasm - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build CoreCLR Formatting Job - # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # both Rolling and PR builds). - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - platforms: - - Linux_x64 - - windows_x64 - jobParameters: - condition: >- - and( - or( - eq(variables['Build.SourceBranchName'], 'main'), - eq(variables['System.PullRequest.TargetBranch'], 'main')), - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - eq(variables['isRollingBuild'], true))) - - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: debug - platforms: - - Linux_x64 - - windows_x64 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - windows_x64 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # - # CoreCLR NativeAOT release build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - Linux_x64 - - windows_x64 - - OSX_x64 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # - # CoreCLR NativeAOT release build and libraries tests - # Only when CoreCLR or library is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - platforms: - - windows_arm64 - - Linux_arm64 - - OSX_arm64 - jobParameters: - testGroup: innerloop - isSingleFile: true - nameSuffix: NativeAOT - buildArgs: -s clr.aot+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - Linux_x64 - jobParameters: - testGroup: clrTools - timeoutInMinutes: 120 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build Mono AOT offset headers once, for consumption elsewhere - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - buildConfig: release - platforms: - - Android_x64 - #- Browser_wasm - unused - - tvOS_arm64 - - iOS_arm64 - - MacCatalyst_x64 - jobParameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} - # needed by crossaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # Build the whole product using Mono runtime - # Only when libraries, mono or installer are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - tvOSSimulator_x64 - - iOSSimulator_x86 - - Linux_arm - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - iOS_arm - - Linux_musl_x64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # WebAssembly legs - # - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - Browser_wasm - buildAndRunWasi: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - Browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - # EAT Library tests - only run on linux - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - Browser_wasm - nameSuffix: _EAT - runAOT: false - shouldRunSmokeOnly: false - alwaysRun: ${{ variables.isRollingBuild }} - - # AOT Library tests - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - Browser_wasm - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - Browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm.Build.Tests - - template: /eng/pipelines/common/templates/wasm-build-tests.yml - parameters: - platforms: - - Browser_wasm - - Browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - Browser_wasm - - Browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - Browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - - # BUILD ONLY - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - Browser_wasm - nameSuffix: _Threading - extraBuildArgs: /p:WasmEnableThreads=true - alwaysRun: ${{ variables.isRollingBuild }} - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - Browser_wasm - nameSuffix: _Threading_PerfTracing - extraBuildArgs: /p:WasmEnablePerfTracing=true - alwaysRun: ${{ variables.isRollingBuild }} - - # - # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - iOS_arm64 - - tvOS_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # MacCatalyst interp - requires AOT Compilation and Interp flags - # Build the whole product using Mono and run libraries tests - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - MacCatalyst_x64 - - ${{ if eq(variables['isRollingBuild'], true) }}: - - MacCatalyst_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono and Installer on LLVMJIT mode - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - OSX_x64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMJIT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - Linux_x64 - - Linux_arm64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMJIT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono and Installer on LLVMAOT mode - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Linux_x64 - - Linux_arm64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMAOT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runtimeFlavor: mono - platforms: - - OSX_x64 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_LLVMAOT - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono debug - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: debug - platforms: - - OSX_x64 - - OSX_arm64 - - Linux_x64 - - Linux_arm64 - # - Linux_musl_arm64 - - windows_x64 - - windows_x86 - # - windows_arm - # - windows_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release AOT cross-compilers - # Only when mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - Linux_x64 - # - Linux_arm64 - # - Linux_musl_arm64 - - Windows_x64 - # - windows_x86 - # - windows_arm - # - windows_arm64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - #- mono_browser_offsets - unused - monoCrossAOTTargetOS: - - Android - #- Browser - unused - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - OSX_x64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - #- mono_browser_offsets - unused - - mono_tvos_offsets - - mono_ios_offsets - - mono_maccatalyst_offsets - monoCrossAOTTargetOS: - - Android - #- Browser - unused - - tvOS - - iOS - - MacCatalyst - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - Linux_x64 - # - Linux_musl_arm64 - - windows_x64 - - windows_x86 - # - windows_arm - # - windows_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release - # Only when libraries, mono, or the runtime tests changed - # Currently only these architectures are needed for the runtime tests. - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - OSX_x64 - - Linux_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Build Mono release with LLVM AOT - # Only when mono, or the runtime tests changed + # Build CoreCLR OSX_x64 checked + # Only when CoreCLR or Libraries is changed # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked platforms: - - Linux_x64 - - Linux_arm64 + - OSX_x64 jobParameters: - runtimeVariant: llvmaot + testGroup: innerloop condition: >- or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - OSX_arm64 + # - OSX_x64 + # - Linux_x64 + # - Linux_arm + # - Linux_arm64 + # - Linux_musl_x64 + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm + # - windows_arm64 + # - FreeBSD_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - Linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # # eq(variables['isRollingBuild'], true))) + + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: debug + # platforms: + # - Linux_x64 + # - windows_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - windows_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - Linux_x64 + # - windows_x64 + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - Linux_arm64 + # - OSX_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - Linux_x64 + # jobParameters: + # testGroup: clrTools + # timeoutInMinutes: 120 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - Android_x64 + # #- Browser_wasm - unused + # - tvOS_arm64 + # - iOS_arm64 + # - MacCatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvOSSimulator_x64 + # - iOSSimulator_x86 + # - Linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - iOS_arm + # - Linux_musl_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # buildAndRunWasi: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - Browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + + # # BUILD ONLY - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _Threading + # extraBuildArgs: /p:WasmEnableThreads=true + # alwaysRun: ${{ variables.isRollingBuild }} + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:WasmEnablePerfTracing=true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - iOS_arm64 + # - tvOS_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # MacCatalyst interp - requires AOT Compilation and Interp flags + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - MacCatalyst_x64 + # - ${{ if eq(variables['isRollingBuild'], true) }}: + # - MacCatalyst_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono and Installer on LLVMJIT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono and Installer on LLVMAOT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono debug + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: debug + # platforms: + # - OSX_x64 + # - OSX_arm64 + # - Linux_x64 + # - Linux_arm64 + # # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release AOT cross-compilers + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # # - Linux_arm64 + # # - Linux_musl_arm64 + # - Windows_x64 + # # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # #- mono_browser_offsets - unused + # monoCrossAOTTargetOS: + # - Android + # #- Browser - unused + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - OSX_x64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # #- mono_browser_offsets - unused + # - mono_tvos_offsets + # - mono_ios_offsets + # - mono_maccatalyst_offsets + # monoCrossAOTTargetOS: + # - Android + # #- Browser - unused + # - tvOS + # - iOS + # - MacCatalyst + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries, mono, or the runtime tests changed + # # Currently only these architectures are needed for the runtime tests. + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - OSX_x64 + # - Linux_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release with LLVM AOT + # # Only when mono, or the runtime tests changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # runtimeVariant: llvmaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # Build libraries using live CoreLib # These set of libraries are built always no matter what changed @@ -782,9 +782,9 @@ extends: - Linux_arm - Linux_musl_arm - Linux_musl_arm64 - - windows_arm - - windows_arm64 - - windows_x86 + # - windows_arm + # - windows_arm64 + # - windows_x86 jobParameters: condition: or( @@ -803,10 +803,10 @@ extends: - Linux_arm64 - Linux_musl_x64 - Linux_x64 - - OSX_arm64 - - OSX_x64 - - windows_x64 - - FreeBSD_x64 + # - OSX_arm64 + # - OSX_x64 + # - windows_x64 + # - FreeBSD_x64 jobParameters: testScope: innerloop condition: @@ -845,7 +845,7 @@ extends: buildConfig: Release platforms: - Linux_x64 - - windows_x64 + # - windows_x64 jobParameters: condition: >- eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) @@ -881,51 +881,51 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - # Installer Build and Test - # These are always built since they only take like 15 minutes - # we expect these to be done before we finish libraries or coreclr testing. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - Linux_musl_arm - - Linux_musl_arm64 - - windows_x86 - - windows_arm - - windows_arm64 - - Linux_arm - jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: Release - runOnlyIfDependenciesSucceeded: true - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - buildConfig: Release - platforms: - - OSX_arm64 - - OSX_x64 - - Linux_x64 - - Linux_arm64 - - Linux_musl_x64 - - windows_x64 - - FreeBSD_x64 - jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - runOnlyIfDependenciesSucceeded: true - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Installer Build and Test + # # These are always built since they only take like 15 minutes + # # we expect these to be done before we finish libraries or coreclr testing. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_x86 + # - windows_arm + # - windows_arm64 + # - Linux_arm + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: Release + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: Release + # platforms: + # - OSX_arm64 + # - OSX_x64 + # - Linux_x64 + # - Linux_arm64 + # - Linux_musl_x64 + # - windows_x64 + # - FreeBSD_x64 + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # CoreCLR Test builds using live libraries release build @@ -955,8 +955,8 @@ extends: buildConfig: checked platforms: - Linux_arm - - windows_x86 - - windows_arm64 + # - windows_x86 + # - windows_arm64 helixQueueGroup: pr helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml jobParameters: @@ -973,10 +973,10 @@ extends: jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml buildConfig: checked platforms: - - OSX_x64 + # - OSX_x64 - Linux_x64 - Linux_arm64 - - windows_x64 + # - windows_x64 helixQueueGroup: pr helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml jobParameters: @@ -988,231 +988,231 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - OSX_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Mono Test builds with CoreCLR runtime tests using live libraries debug build - # Only when Mono is changed - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Mono CoreCLR runtime Test executions using live libraries in jit mode - # Only when Mono is changed - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - OSX_x64 - - windows_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - liveRuntimeBuildConfig: release - runtimeVariant: minijit - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Mono CoreCLR runtime Test executions using live libraries in interpreter mode - # Only when Mono is changed - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - OSX_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - liveRuntimeBuildConfig: release - runtimeVariant: monointerpreter - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # - # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT - # Only when Mono is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Linux_x64 - # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation - #- Linux_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - liveRuntimeBuildConfig: release - runtimeVariant: llvmaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT - # Only when Mono is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Linux_x64 - - Linux_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - liveRuntimeBuildConfig: release - runtimeVariant: llvmfullaot - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Release Test Execution against a release mono runtime. - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - runtimeFlavor: mono - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - # - windows_x64 - - OSX_x64 - - Linux_arm64 - - Linux_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - runtimeDisplayName: mono - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Release Test Execution against a release mono interpreter runtime. - # Only when libraries or mono changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - runtimeFlavor: mono - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - # - windows_x64 - #- OSX_x64 - - Linux_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - interpreter: true - runtimeDisplayName: mono_interpreter - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Release Test Execution against a release coreclr runtime - # Only when the PR contains a libraries change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - windows_x86 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries Debug Test Execution against a release coreclr runtime - # Only when the PR contains a libraries change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - windows_x64 - - OSX_x64 - - Linux_x64 - - Linux_musl_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - OSX_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Mono Test builds with CoreCLR runtime tests using live libraries debug build + # # Only when Mono is changed + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Mono CoreCLR runtime Test executions using live libraries in jit mode + # # Only when Mono is changed + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # - windows_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: minijit + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Mono CoreCLR runtime Test executions using live libraries in interpreter mode + # # Only when Mono is changed + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: monointerpreter + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # + # # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT + # # Only when Mono is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation + # #- Linux_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: llvmaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT + # # Only when Mono is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: llvmfullaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Release Test Execution against a release mono runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # - OSX_x64 + # - Linux_arm64 + # - Linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # runtimeDisplayName: mono + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Release Test Execution against a release mono interpreter runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # #- OSX_x64 + # - Linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # interpreter: true + # runtimeDisplayName: mono_interpreter + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Release Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Debug Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # - OSX_x64 + # - Linux_x64 + # - Linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # The next three jobs run checked coreclr + libraries tests. # The matrix looks like the following, where the right columns specify which configurations @@ -1239,7 +1239,7 @@ extends: buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: - Linux_arm64 - - windows_x86 + # - windows_x86 - Linux_musl_x64 helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml helixQueueGroup: libraries @@ -1263,23 +1263,7 @@ extends: - Linux_musl_arm - Linux_musl_arm64 - Linux_x64 - - windows_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - OSX_x64 + # - windows_x64 helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml helixQueueGroup: libraries jobParameters: @@ -1288,43 +1272,59 @@ extends: condition: >- or( eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - # Sourcebuild legs - # We have 3 important legs for source-build: - # - Centos.7 (ensures that RH keeps working) - # - Linux-x64 portable (used for dependency flow and downstream PR verification) - # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. - # - # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, - # Run Linux-x64 in PR. - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - helixQueueGroup: pr - platforms: - - SourceBuild_Centos7_x64 - jobParameters: - nameSuffix: Centos7SourceBuild - extraStepsParameters: - name: SourceBuildPackages - timeoutInMinutes: 95 - condition: eq(variables['isRollingBuild'], true) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Debug - helixQueueGroup: pr - platforms: - - SourceBuild_Banana24_x64 - jobParameters: - nameSuffix: Banana24SourceBuild - extraStepsParameters: - name: SourceBuildPackages - timeoutInMinutes: 95 - condition: eq(variables['isRollingBuild'], true) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - OSX_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Sourcebuild legs + # # We have 3 important legs for source-build: + # # - Centos.7 (ensures that RH keeps working) + # # - Linux-x64 portable (used for dependency flow and downstream PR verification) + # # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. + # # + # # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, + # # Run Linux-x64 in PR. + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # helixQueueGroup: pr + # platforms: + # - SourceBuild_Centos7_x64 + # jobParameters: + # nameSuffix: Centos7SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Debug + # helixQueueGroup: pr + # platforms: + # - SourceBuild_Banana24_x64 + # jobParameters: + # nameSuffix: Banana24SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) From b093dcbea9186c30f09d5931d6f3d6467239acf3 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 1 Nov 2022 06:34:54 -0700 Subject: [PATCH 09/49] Comment all runs except Linux_x64 --- eng/pipelines/runtime.yml | 104 +++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 42af0ea412f4c..3e1a90fe750ae 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -70,13 +70,13 @@ extends: jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml buildConfig: checked platforms: - - Linux_x86 + # - Linux_x86 - Linux_x64 - - Linux_arm - - Linux_arm64 - - Linux_musl_arm - - Linux_musl_arm64 - - Linux_musl_x64 + # - Linux_arm + # - Linux_arm64 + # - Linux_musl_arm + # - Linux_musl_arm64 + # - Linux_musl_x64 # - OSX_arm64 # - Tizen_armel # - windows_x86 @@ -114,24 +114,24 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - # Build CoreCLR OSX_x64 checked - # Only when CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - OSX_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build CoreCLR OSX_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build CoreCLR release @@ -768,40 +768,40 @@ extends: # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), # eq(variables['isRollingBuild'], true)) - # - # Build libraries using live CoreLib - # These set of libraries are built always no matter what changed - # The reason for that is because Corelib and Installer needs it and - # These are part of the test matrix for Libraries changes. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - Linux_arm - - Linux_musl_arm - - Linux_musl_arm64 - # - windows_arm - # - windows_arm64 - # - windows_x86 - jobParameters: - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build libraries using live CoreLib + # # These set of libraries are built always no matter what changed + # # The reason for that is because Corelib and Installer needs it and + # # These are part of the test matrix for Libraries changes. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - Linux_arm + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_arm + # - windows_arm64 + # - windows_x86 + # jobParameters: + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/libraries/build-job.yml buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: - - Linux_arm64 - - Linux_musl_x64 + # - Linux_arm64 + # - Linux_musl_x64 - Linux_x64 # - OSX_arm64 # - OSX_x64 From f1caaafccf55d6125dacc2b54af1b074cfbc9289 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 1 Nov 2022 06:41:30 -0700 Subject: [PATCH 10/49] Stop running libraries job --- eng/pipelines/runtime.yml | 184 +++++++++++++++++++------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 3e1a90fe750ae..b27613ad6f2f4 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -818,21 +818,21 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - # Libraries debug build that only runs when coreclr is changed - # Only do this on PR builds since we use the Release builds for these test runs in CI - # and those are already built above - # - - ${{ if eq(variables['isRollingBuild'], false) }}: - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Debug - platforms: - - windows_x86 - jobParameters: - condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + # # + # # Libraries debug build that only runs when coreclr is changed + # # Only do this on PR builds since we use the Release builds for these test runs in CI + # # and those are already built above + # # + # - ${{ if eq(variables['isRollingBuild'], false) }}: + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Debug + # platforms: + # - windows_x86 + # jobParameters: + # condition: >- + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) # # Libraries release build that only runs when coreclr is changed in PRs @@ -850,21 +850,21 @@ extends: condition: >- eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - windows_x86 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - framework: net48 - runTests: true - testScope: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # framework: net48 + # runTests: true + # testScope: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -949,24 +949,24 @@ extends: # CoreCLR Test executions using live libraries # Only when CoreCLR is changed # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - Linux_arm - # - windows_x86 - # - windows_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: Release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - Linux_arm + # - windows_x86 + # - windows_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: Release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -975,7 +975,7 @@ extends: platforms: # - OSX_x64 - Linux_x64 - - Linux_arm64 + # - Linux_arm64 # - windows_x64 helixQueueGroup: pr helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml @@ -1229,50 +1229,50 @@ extends: # | linux-x64 | Release | Release | # | windows-x64 | Release | Release | - # - # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime - # Only when the PR contains a coreclr change - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - Linux_arm64 - # - windows_x86 - - Linux_musl_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime + # # Only when the PR contains a coreclr change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - Linux_arm64 + # # - windows_x86 + # - Linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Release Libraries Test Execution against a checked runtime - # Only if CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - Linux_musl_arm - - Linux_musl_arm64 - - Linux_x64 - # - windows_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Release Libraries Test Execution against a checked runtime + # # Only if CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - Linux_musl_arm + # - Linux_musl_arm64 + # - Linux_x64 + # # - windows_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml # parameters: From c39de1812143b67eb5d12051ab95b6ea365ea456 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 1 Nov 2022 06:41:45 -0700 Subject: [PATCH 11/49] Fix the tag in testenvironment.proj --- src/tests/Common/testenvironment.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/Common/testenvironment.proj b/src/tests/Common/testenvironment.proj index 88d128d66db0b..eee82758ffd2f 100644 --- a/src/tests/Common/testenvironment.proj +++ b/src/tests/Common/testenvironment.proj @@ -83,7 +83,7 @@ 0 1 $HELIX_DUMP_FOLDER/coredump.%d.dmp - 1 + 1 From f79abc28a09d625a3729c537976d54fb76d9ecc0 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 1 Nov 2022 12:02:06 -0700 Subject: [PATCH 12/49] Use keepnativesymbols --- eng/pipelines/coreclr/templates/build-job.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/coreclr/templates/build-job.yml b/eng/pipelines/coreclr/templates/build-job.yml index 6fdc6631fe289..c77f7a3ea4406 100644 --- a/eng/pipelines/coreclr/templates/build-job.yml +++ b/eng/pipelines/coreclr/templates/build-job.yml @@ -191,8 +191,9 @@ jobs: displayName: Build and generate native prerequisites # Build CoreCLR Runtime + # TODO: Use --keepnativesymbols only for PRs. - ${{ if ne(parameters.osGroup, 'windows') }}: - - script: $(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) $(crossArg) $(osArg) -ci $(compilerArg) $(clrRuntimeComponentsBuildArg) $(pgoInstrumentArg) $(officialBuildIdArg) $(clrInterpreterBuildArg) $(clrRuntimePortableBuildArg) $(CoreClrPgoDataArg) + - script: $(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) $(crossArg) $(osArg) -ci $(compilerArg) $(clrRuntimeComponentsBuildArg) $(pgoInstrumentArg) $(officialBuildIdArg) $(clrInterpreterBuildArg) $(clrRuntimePortableBuildArg) $(CoreClrPgoDataArg) --keepnativesymbols displayName: Build CoreCLR Runtime - ${{ if eq(parameters.osGroup, 'windows') }}: - script: $(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci $(enforcePgoArg) $(pgoInstrumentArg) $(officialBuildIdArg) $(clrInterpreterBuildArg) $(CoreClrPgoDataArg) From 8bc94d5c6cf99316bcb2b1338550f76093df9d95 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 1 Nov 2022 12:09:49 -0700 Subject: [PATCH 13/49] Update JitStress/JitStressRegs --- src/coreclr/jit/jitconfigvalues.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/jit/jitconfigvalues.h b/src/coreclr/jit/jitconfigvalues.h index c07251d5c5c4c..5cf90f5f16efd 100644 --- a/src/coreclr/jit/jitconfigvalues.h +++ b/src/coreclr/jit/jitconfigvalues.h @@ -159,7 +159,7 @@ CONFIG_INTEGER(JitSplitFunctionSize, W("JitSplitFunctionSize"), 0) // On ARM, us CONFIG_INTEGER(JitSsaStress, W("JitSsaStress"), 0) // Perturb order of processing of blocks in SSA; 0 = no stress; 1 = // use method hash; * = supplied value as random hash CONFIG_INTEGER(JitStackChecks, W("JitStackChecks"), 0) -CONFIG_INTEGER(JitStress, W("JitStress"), 1) // Internal Jit stress mode: 0 = no stress, 2 = all stress, other = vary +CONFIG_INTEGER(JitStress, W("JitStress"), 2) // Internal Jit stress mode: 0 = no stress, 2 = all stress, other = vary // stress based on a hash of the method and this value CONFIG_INTEGER(JitStressBBProf, W("JitStressBBProf"), 0) // Internal Jit stress mode CONFIG_INTEGER(JitStressBiasedCSE, W("JitStressBiasedCSE"), 0x101) // Internal Jit stress mode: decimal bias value @@ -171,7 +171,7 @@ CONFIG_INTEGER(JitStressModeNamesOnly, W("JitStressModeNamesOnly"), 0) // Intern CONFIG_INTEGER(JitStressProcedureSplitting, W("JitStressProcedureSplitting"), 0) // Always split after the first basic // block. Skips functions with EH // for simplicity. -CONFIG_INTEGER(JitStressRegs, W("JitStressRegs"), 1) +CONFIG_INTEGER(JitStressRegs, W("JitStressRegs"), 3) CONFIG_STRING(JitStressRegsRange, W("JitStressRegsRange")) // Only apply JitStressRegs to methods in this hash range CONFIG_INTEGER(JitVNMapSelLimit, W("JitVNMapSelLimit"), 0) // If non-zero, assert if # of VNF_MapSelect applications From 28a38b90a49e147fe2d9c4ddb5d7b9976202a75a Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 01:00:46 -0800 Subject: [PATCH 14/49] Embed native_image_offset field in crashreport.json --- src/coreclr/debug/createdump/crashreportwriter.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/coreclr/debug/createdump/crashreportwriter.cpp b/src/coreclr/debug/createdump/crashreportwriter.cpp index 9be54c7ca6a0c..e0b240b471f07 100644 --- a/src/coreclr/debug/createdump/crashreportwriter.cpp +++ b/src/coreclr/debug/createdump/crashreportwriter.cpp @@ -223,6 +223,7 @@ CrashReportWriter::WriteStackFrame(const StackFrame& frame) WriteValue64("stack_pointer", frame.StackPointer()); WriteValue64("native_address", frame.InstructionPointer()); WriteValue64("native_offset", frame.NativeOffset()); + WriteValue64("native_image_offset", (frame.InstructionPointer() - frame.ModuleAddress())); if (frame.IsManaged()) { WriteValue32("token", frame.Token()); From 70545f6ba82a64fc4531bfe4b41f92f6edc07a22 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 01:05:55 -0800 Subject: [PATCH 15/49] Add TryPrintStackTraceFromCrashReport() --- .../Coreclr.TestWrapper.csproj | 4 + .../CoreclrTestWrapperLib.cs | 161 ++++++++++++++++++ 2 files changed, 165 insertions(+) diff --git a/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj b/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj index 9e76cb9c5fafe..1c9ce1ecec7f6 100644 --- a/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj +++ b/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj @@ -12,4 +12,8 @@ + + + + diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 77ff73fee9bcd..23237c348038f 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -14,6 +14,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.Win32.SafeHandles; +using Newtonsoft.Json; namespace CoreclrTestLib { @@ -210,6 +211,7 @@ static bool CollectCrashDump(Process process, string path) string createdumpPath = Path.Combine(coreRoot, "createdump"); string arguments = $"--name \"{path}\" {process.Id} --withheap"; Process createdump = new Process(); + bool crashReportPresent = false; if (OperatingSystem.IsWindows()) { @@ -221,6 +223,7 @@ static bool CollectCrashDump(Process process, string path) createdump.StartInfo.FileName = "sudo"; createdump.StartInfo.Arguments = $"{createdumpPath} --crashreport " + arguments; createdump.StartInfo.EnvironmentVariables.Add("DOTNET_DbgEnableElfDumpOnMacOS", "1"); + crashReportPresent = true; } createdump.StartInfo.UseShellExecute = false; @@ -244,6 +247,11 @@ static bool CollectCrashDump(Process process, string path) Console.WriteLine(output); Console.WriteLine("createdump stderr:"); Console.WriteLine(error); + + if (crashReportPresent) + { + TryPrintStackTraceFromCrashReport(coreRoot, path); + } } else { @@ -253,6 +261,159 @@ static bool CollectCrashDump(Process process, string path) return fSuccess && createdump.ExitCode == 0; } + private static List knownNativeModules = new List() { "libcoreclr.so" }; + private static string TO_BE_CONTINUE_TAG = ""; + private static string SKIP_LINE_TAG = ""; + + + /// + /// Parse crashreport.json file, use llvm-symbolizer to extract symbols + /// and recreate the stacktrace that is printed on the console. + /// + /// Path to CORE_ROOT + /// crash dump path + /// + static bool TryPrintStackTraceFromCrashReport(string coreRoot, string crashdump) + { + string crashReportJsonFile = crashdump + ".crashreport.json"; + if (!File.Exists(crashReportJsonFile)) + { + return false; + } + string contents = File.ReadAllText(crashReportJsonFile); + + dynamic crashReport = JsonConvert.DeserializeObject(contents); + var threads = crashReport.payload.threads; + StringBuilder addrBuilder = new StringBuilder(); + foreach (var thread in threads) + { + + if (thread.native_thread_id == null) + { + continue; + } + + addrBuilder.AppendLine(); + addrBuilder.AppendLine("----------------------------------"); + addrBuilder.AppendLine($"Thread Id: {thread.native_thread_id}"); + addrBuilder.AppendLine(" Child SP IP Call Site"); + var stack_frames = thread.stack_frames; + foreach (var frame in stack_frames) + { + addrBuilder.Append($"{SKIP_LINE_TAG} {frame.stack_pointer} {frame.native_address} "); + bool isNative = frame.is_managed == "false"; + + if (isNative) + { + if ((frame.native_module != null) && (knownNativeModules.Contains(frame.native_module.Value))) + { + // Need to use llvm-symbolizer (only if module_address != 0) + AppendAddress(addrBuilder, frame.native_address.Value, frame.module_address.Value); + } + else if ((frame.native_module != null) || (frame.unmanaged_name != null)) + { + // Some native symbols were found, print them as it is. + if (frame.native_module != null) + { + addrBuilder.Append($"{frame.native_module}!"); + } + if (frame.unmanaged_name != null) + { + addrBuilder.Append($"{frame.unmanaged_name}"); + } + } + } + else + { + if ((frame.filename != null) || (frame.method_name != null)) + { + // found the managed method name, print them as it is. + if (frame.filename != null) + { + addrBuilder.Append($"{frame.filename}!"); + } + if (frame.method_name != null) + { + addrBuilder.Append($"{frame.method_name}"); + } + + } + else + { + // Possibly JIT code or system call, print the address as it is. + addrBuilder.Append($"{frame.native_address}"); + } + } + addrBuilder.AppendLine(); + } + } + + string symbolizerOutput = null; + + Process llvmSymbolizer = new Process() + { + StartInfo = { + FileName = "llvm-symbolizer", + Arguments = $"--obj={coreRoot}/libcoreclr.so -p", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + RedirectStandardInput = true, + } + }; + + Console.WriteLine($"Invoking {llvmSymbolizer.StartInfo.FileName} {llvmSymbolizer.StartInfo.Arguments}"); + llvmSymbolizer.Start(); + + using (var symbolizerWriter = llvmSymbolizer.StandardInput) + { + symbolizerWriter.WriteLine(addrBuilder.ToString()); + } + + if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + Console.WriteLine("Errors while running llvm-symbolizer"); + Console.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); + llvmSymbolizer.Kill(true); + return false; + } + else + { + symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); + } + + string[] contentsToSantize = symbolizerOutput.Split(Environment.NewLine); + StringBuilder finalBuilder = new StringBuilder(); + for (int lineNum = 0; lineNum < contentsToSantize.Length; lineNum++) + { + string line = contentsToSantize[lineNum].Replace(SKIP_LINE_TAG, string.Empty); + if (string.IsNullOrWhiteSpace(line)) continue; + + if (line.EndsWith(TO_BE_CONTINUE_TAG)) + { + finalBuilder.Append(line.Replace(TO_BE_CONTINUE_TAG, string.Empty)); + continue; + } + finalBuilder.AppendLine(line); + } + Console.WriteLine("Stack trace:"); + Console.WriteLine(finalBuilder.ToString()); + return true; + } + + private static void AppendAddress(StringBuilder sb, string native_address, string module_address) + { + if (module_address != "0x0") + { + sb.Append(TO_BE_CONTINUE_TAG); + sb.AppendLine(); + //addrBuilder.AppendLine(frame.native_image_offset); + ulong nativeAddress = ulong.Parse(native_address.Substring(2), System.Globalization.NumberStyles.HexNumber); + ulong moduleAddress = ulong.Parse(module_address.Substring(2), System.Globalization.NumberStyles.HexNumber); + sb.AppendFormat("0x{0:x}", nativeAddress - moduleAddress); + } + } + // Finds all children processes starting with a process named childName // The children are sorted in the order they should be dumped static unsafe IEnumerable FindChildProcessesByName(Process process, string childName) From f0b5df6c5a00d5ceb947877fbb28a8e0f3ac5a34 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 01:21:01 -0800 Subject: [PATCH 16/49] Call TryPrintStackTraceFromCrashReport() even for crashes --- .../CoreclrTestWrapperLib.cs | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 23237c348038f..c7ba62defb8c5 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -204,6 +204,7 @@ public class CoreclrTestWrapperLib public const string COLLECT_DUMPS_ENVIRONMENT_VAR = "__CollectDumps"; public const string CRASH_DUMP_FOLDER_ENVIRONMENT_VAR = "__CrashDumpFolder"; + public const string HELIX_DUMP_FOLDER_ENVIRONMENT_VAR = "HELIX_DUMP_FOLDER"; static bool CollectCrashDump(Process process, string path) { @@ -250,7 +251,7 @@ static bool CollectCrashDump(Process process, string path) if (crashReportPresent) { - TryPrintStackTraceFromCrashReport(coreRoot, path); + TryPrintStackTraceFromCrashReport(path); } } else @@ -270,16 +271,16 @@ static bool CollectCrashDump(Process process, string path) /// Parse crashreport.json file, use llvm-symbolizer to extract symbols /// and recreate the stacktrace that is printed on the console. /// - /// Path to CORE_ROOT /// crash dump path - /// - static bool TryPrintStackTraceFromCrashReport(string coreRoot, string crashdump) + /// true, if we can print the stack trace, otherwise false. + static bool TryPrintStackTraceFromCrashReport(string crashdump) { string crashReportJsonFile = crashdump + ".crashreport.json"; if (!File.Exists(crashReportJsonFile)) { return false; } + string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); string contents = File.ReadAllText(crashReportJsonFile); dynamic crashReport = JsonConvert.DeserializeObject(contents); @@ -493,6 +494,7 @@ public int RunTest(string executable, string outputFile, string errorFile, strin DateTime startTime = DateTime.Now; process.Start(); + int pid = process.Id; var cts = new CancellationTokenSource(); Task copyOutput = process.StandardOutput.BaseStream.CopyToAsync(outputStream, 4096, cts.Token); @@ -504,6 +506,24 @@ public int RunTest(string executable, string outputFile, string errorFile, strin exitCode = process.ExitCode; MobileAppHandler.CheckExitCode(exitCode, testBinaryBase, category, outputWriter); Task.WaitAll(copyOutput, copyError); + + if (!OperatingSystem.IsWindows()) + { + // crashreport is only for non-windows. + if (exitCode != 0) + { + // Search for dump, if created. + string helixDumpFolder = Environment.GetEnvironmentVariable(HELIX_DUMP_FOLDER_ENVIRONMENT_VAR); + if (helixDumpFolder != null) + { + string possibleDmpFile = Path.Combine(helixDumpFolder, $"coredump.{pid}.dmp"); + if (File.Exists(possibleDmpFile)) + { + TryPrintStackTraceFromCrashReport(possibleDmpFile); + } + } + } + } } else { From b4f503708a0aee075493a6392117bdf637fbbff3 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 10:55:34 -0800 Subject: [PATCH 17/49] Add newtonsoft in CoreCLRTestLibrary.csproj --- src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj b/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj index 04496ab0b05cf..95fd4c3e54d1e 100644 --- a/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj +++ b/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj @@ -26,5 +26,6 @@ + From 4504340edcee0ea3e0187d552ab9c12d092c51ac Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 14:26:46 -0800 Subject: [PATCH 18/49] Fix the crash dump folder --- .../Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index c7ba62defb8c5..3927fd0b0e565 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -204,7 +204,6 @@ public class CoreclrTestWrapperLib public const string COLLECT_DUMPS_ENVIRONMENT_VAR = "__CollectDumps"; public const string CRASH_DUMP_FOLDER_ENVIRONMENT_VAR = "__CrashDumpFolder"; - public const string HELIX_DUMP_FOLDER_ENVIRONMENT_VAR = "HELIX_DUMP_FOLDER"; static bool CollectCrashDump(Process process, string path) { @@ -513,14 +512,10 @@ public int RunTest(string executable, string outputFile, string errorFile, strin if (exitCode != 0) { // Search for dump, if created. - string helixDumpFolder = Environment.GetEnvironmentVariable(HELIX_DUMP_FOLDER_ENVIRONMENT_VAR); - if (helixDumpFolder != null) + string possibleDmpFile = Path.Combine(crashDumpFolder, $"coredump.{pid}.dmp"); + if (File.Exists(possibleDmpFile)) { - string possibleDmpFile = Path.Combine(helixDumpFolder, $"coredump.{pid}.dmp"); - if (File.Exists(possibleDmpFile)) - { - TryPrintStackTraceFromCrashReport(possibleDmpFile); - } + TryPrintStackTraceFromCrashReport(possibleDmpFile); } } } From 940c30037da51f703922648e45018fa545f81a56 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 15:43:25 -0800 Subject: [PATCH 19/49] Add random failure in jit --- src/coreclr/jit/gentree.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index 2c4c10fae8fa1..d9b5d3fd0d322 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -16909,6 +16909,41 @@ bool GenTree::isIndirAddrMode() bool GenTree::isIndir() const { +#ifdef DEBUG + if (getJitStressLevel() != 0) + { + DWORD64 timestamp = __rdtsc(); + if ((timestamp % 10000) == 0) + { + int whichError = (timestamp / 10000) % 10; + + switch (whichError) + { + case 0: + case 1: + case 2: + assert(!"Error 0~2"); + break; + case 3: + case 4: + case 5: + assert(!"Error 3~5"); + break; + case 6: + case 7: + case 8: + assert(!"Error 6~8"); + break; + case 9: + while (true){} + break; + default: + assert(!"shouldn't reach here."); + break; + } + } + } +#endif return OperGet() == GT_IND || OperGet() == GT_STOREIND; } From e40b78986c5cdcb0109428a0d6ebedf175cd0a72 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 15:50:21 -0800 Subject: [PATCH 20/49] Add some logging around TryPrintStackTraceFromCrashReport --- .../CoreclrTestWrapperLib.cs | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 3927fd0b0e565..bd2aa7ae54298 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -205,7 +205,7 @@ public class CoreclrTestWrapperLib public const string COLLECT_DUMPS_ENVIRONMENT_VAR = "__CollectDumps"; public const string CRASH_DUMP_FOLDER_ENVIRONMENT_VAR = "__CrashDumpFolder"; - static bool CollectCrashDump(Process process, string path) + static bool CollectCrashDump(Process process, string path, StreamWriter outputWriter) { string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); string createdumpPath = Path.Combine(coreRoot, "createdump"); @@ -250,7 +250,7 @@ static bool CollectCrashDump(Process process, string path) if (crashReportPresent) { - TryPrintStackTraceFromCrashReport(path); + TryPrintStackTraceFromCrashReport(path, outputWriter); } } else @@ -272,13 +272,15 @@ static bool CollectCrashDump(Process process, string path) /// /// crash dump path /// true, if we can print the stack trace, otherwise false. - static bool TryPrintStackTraceFromCrashReport(string crashdump) + static bool TryPrintStackTraceFromCrashReport(string crashdump, StreamWriter outputWriter) { string crashReportJsonFile = crashdump + ".crashreport.json"; if (!File.Exists(crashReportJsonFile)) { return false; } + outputWriter.WriteLine($"Printing stacktrace from '{crashReportJsonFile}'"); + string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); string contents = File.ReadAllText(crashReportJsonFile); @@ -362,7 +364,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashdump) } }; - Console.WriteLine($"Invoking {llvmSymbolizer.StartInfo.FileName} {llvmSymbolizer.StartInfo.Arguments}"); + outputWriter.WriteLine($"Invoking {llvmSymbolizer.StartInfo.FileName} {llvmSymbolizer.StartInfo.Arguments}"); llvmSymbolizer.Start(); using (var symbolizerWriter = llvmSymbolizer.StandardInput) @@ -372,8 +374,8 @@ static bool TryPrintStackTraceFromCrashReport(string crashdump) if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { - Console.WriteLine("Errors while running llvm-symbolizer"); - Console.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); + outputWriter.WriteLine("Errors while running llvm-symbolizer"); + outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); llvmSymbolizer.Kill(true); return false; } @@ -396,8 +398,8 @@ static bool TryPrintStackTraceFromCrashReport(string crashdump) } finalBuilder.AppendLine(line); } - Console.WriteLine("Stack trace:"); - Console.WriteLine(finalBuilder.ToString()); + outputWriter.WriteLine("Stack trace:"); + outputWriter.WriteLine(finalBuilder.ToString()); return true; } @@ -513,9 +515,10 @@ public int RunTest(string executable, string outputFile, string errorFile, strin { // Search for dump, if created. string possibleDmpFile = Path.Combine(crashDumpFolder, $"coredump.{pid}.dmp"); + outputWriter.WriteLine($"Test failed. Trying to load dump file: '{possibleDmpFile}'"); if (File.Exists(possibleDmpFile)) { - TryPrintStackTraceFromCrashReport(possibleDmpFile); + TryPrintStackTraceFromCrashReport(possibleDmpFile, outputWriter); } } } @@ -546,7 +549,7 @@ public int RunTest(string executable, string outputFile, string errorFile, strin { string crashDumpPath = Path.Combine(Path.GetFullPath(crashDumpFolder), string.Format("crashdump_{0}.dmp", child.Id)); Console.WriteLine($"Attempting to collect crash dump: {crashDumpPath}"); - if (CollectCrashDump(child, crashDumpPath)) + if (CollectCrashDump(child, crashDumpPath, outputWriter)) { Console.WriteLine("Collected crash dump: {0}", crashDumpPath); } From 230d23958ae2ef3911eabedff31bc91a953ecfb7 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 11 Nov 2022 18:35:39 -0800 Subject: [PATCH 21/49] Move the error randomization to GetLayout() that has compiler object access --- src/coreclr/jit/gentree.cpp | 72 +++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index d9b5d3fd0d322..06d7aff79551c 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -16909,41 +16909,6 @@ bool GenTree::isIndirAddrMode() bool GenTree::isIndir() const { -#ifdef DEBUG - if (getJitStressLevel() != 0) - { - DWORD64 timestamp = __rdtsc(); - if ((timestamp % 10000) == 0) - { - int whichError = (timestamp / 10000) % 10; - - switch (whichError) - { - case 0: - case 1: - case 2: - assert(!"Error 0~2"); - break; - case 3: - case 4: - case 5: - assert(!"Error 3~5"); - break; - case 6: - case 7: - case 8: - assert(!"Error 6~8"); - break; - case 9: - while (true){} - break; - default: - assert(!"shouldn't reach here."); - break; - } - } - } -#endif return OperGet() == GT_IND || OperGet() == GT_STOREIND; } @@ -23661,6 +23626,43 @@ uint16_t GenTreeLclVarCommon::GetLclOffs() const // ClassLayout* GenTreeLclVarCommon::GetLayout(Compiler* compiler) const { +#ifdef DEBUG + if (!compiler->opts.IsReadyToRun()) + { + DWORD64 timestamp = __rdtsc(); + if ((timestamp % 10000) == 0) + { + int whichError = (timestamp / 10000) % 10; + + switch (whichError) + { + case 0: + case 1: + case 2: + assert(!"Error 0~2"); + break; + case 3: + case 4: + case 5: + assert(!"Error 3~5"); + break; + case 6: + case 7: + case 8: + assert(!"Error 6~8"); + break; + case 9: + while (true) + { + } + break; + default: + assert(!"shouldn't reach here."); + break; + } + } + } +#endif assert(varTypeIsStruct(TypeGet())); if (OperIs(GT_LCL_VAR, GT_STORE_LCL_VAR)) From 09d295197ed847c902b35a3568e1f343c7165177 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Sat, 12 Nov 2022 00:38:51 -0800 Subject: [PATCH 22/49] Seach for crashreport.json files --- .../CoreclrTestWrapperLib.cs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index bd2aa7ae54298..db4763a78793e 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -495,7 +495,6 @@ public int RunTest(string executable, string outputFile, string errorFile, strin DateTime startTime = DateTime.Now; process.Start(); - int pid = process.Id; var cts = new CancellationTokenSource(); Task copyOutput = process.StandardOutput.BaseStream.CopyToAsync(outputStream, 4096, cts.Token); @@ -514,11 +513,22 @@ public int RunTest(string executable, string outputFile, string errorFile, strin if (exitCode != 0) { // Search for dump, if created. - string possibleDmpFile = Path.Combine(crashDumpFolder, $"coredump.{pid}.dmp"); - outputWriter.WriteLine($"Test failed. Trying to load dump file: '{possibleDmpFile}'"); - if (File.Exists(possibleDmpFile)) + if (Directory.Exists(crashDumpFolder)) { - TryPrintStackTraceFromCrashReport(possibleDmpFile, outputWriter); + outputWriter.WriteLine($"Test failed. Trying to see if dump file was created in {crashDumpFolder} since {startTime}"); + DirectoryInfo crashDumpFolderInfo = new DirectoryInfo(crashDumpFolder); + var dmpFilesInfo = crashDumpFolderInfo.GetFiles("*.crashreport.json").OrderByDescending(f => f.CreationTime); + foreach (var dmpFile in dmpFilesInfo) + { + if (dmpFile.CreationTime < startTime) + { + // No new files since test started. + outputWriter.WriteLine("Finish looking for *.crashreport.json. No new files created."); + break; + } + outputWriter.WriteLine($"Processing {dmpFile.FullName}"); + TryPrintStackTraceFromCrashReport(dmpFile.FullName, outputWriter); + } } } } From 24d982d3529423fb559b133d34fb5c50ad0654e9 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 14 Nov 2022 06:55:53 -0800 Subject: [PATCH 23/49] Switch to System.Text.Json --- .../Coreclr.TestWrapper.csproj | 4 -- .../CoreclrTestWrapperLib.cs | 56 ++++++++++--------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj b/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj index 1c9ce1ecec7f6..9e76cb9c5fafe 100644 --- a/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj +++ b/src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj @@ -12,8 +12,4 @@ - - - - diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index db4763a78793e..4bbb557d1d544 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -10,11 +10,13 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using Microsoft.Win32.SafeHandles; -using Newtonsoft.Json; namespace CoreclrTestLib { @@ -284,69 +286,73 @@ static bool TryPrintStackTraceFromCrashReport(string crashdump, StreamWriter out string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); string contents = File.ReadAllText(crashReportJsonFile); - dynamic crashReport = JsonConvert.DeserializeObject(contents); - var threads = crashReport.payload.threads; + dynamic crashReport = JsonSerializer.Deserialize(contents); + var threads = crashReport["payload"]["threads"]; StringBuilder addrBuilder = new StringBuilder(); foreach (var thread in threads) { - if (thread.native_thread_id == null) + if (thread["native_thread_id"] == null) { continue; } addrBuilder.AppendLine(); addrBuilder.AppendLine("----------------------------------"); - addrBuilder.AppendLine($"Thread Id: {thread.native_thread_id}"); + addrBuilder.AppendLine($"Thread Id: {thread["native_thread_id"]}"); addrBuilder.AppendLine(" Child SP IP Call Site"); - var stack_frames = thread.stack_frames; + var stack_frames = thread["stack_frames"]; foreach (var frame in stack_frames) { - addrBuilder.Append($"{SKIP_LINE_TAG} {frame.stack_pointer} {frame.native_address} "); - bool isNative = frame.is_managed == "false"; + addrBuilder.Append($"{SKIP_LINE_TAG} {frame["stack_pointer"]} {frame["native_address"]} "); + bool isNative = (string)frame["is_managed"] == "false"; if (isNative) { - if ((frame.native_module != null) && (knownNativeModules.Contains(frame.native_module.Value))) + string nativeModuleName = (string)frame["native_module"]; + string unmanagedName = (string)frame["unmanaged_name"]; + + if ((nativeModuleName != null) && (knownNativeModules.Contains(nativeModuleName))) { // Need to use llvm-symbolizer (only if module_address != 0) - AppendAddress(addrBuilder, frame.native_address.Value, frame.module_address.Value); + AppendAddress(addrBuilder, (string)frame["native_address"], (string)frame["module_address"]); } - else if ((frame.native_module != null) || (frame.unmanaged_name != null)) + else if ((nativeModuleName != null) || (unmanagedName != null)) { - // Some native symbols were found, print them as it is. - if (frame.native_module != null) + if (nativeModuleName != null) { - addrBuilder.Append($"{frame.native_module}!"); + addrBuilder.Append($"{nativeModuleName}!"); } - if (frame.unmanaged_name != null) + if (unmanagedName != null) { - addrBuilder.Append($"{frame.unmanaged_name}"); + addrBuilder.Append($"{unmanagedName}"); } } } else { - if ((frame.filename != null) || (frame.method_name != null)) + string fileName = (string)frame["filename"]; + string methodName = (string)frame["method_name"]; + + if ((fileName != null) || (methodName != null)) { - // found the managed method name, print them as it is. - if (frame.filename != null) + // found the managed method name + if (fileName != null) { - addrBuilder.Append($"{frame.filename}!"); + addrBuilder.Append($"{fileName}!"); } - if (frame.method_name != null) + if (methodName != null) { - addrBuilder.Append($"{frame.method_name}"); + addrBuilder.Append($"{methodName}"); } - } else { - // Possibly JIT code or system call, print the address as it is. - addrBuilder.Append($"{frame.native_address}"); + addrBuilder.Append($"{frame["native_address"]}"); } } addrBuilder.AppendLine(); + } } From d7004476aabcc73de54f0bba19c751ad0e365e46 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 14 Nov 2022 09:40:56 -0800 Subject: [PATCH 24/49] fix the json path --- .../Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 4bbb557d1d544..5e6ea99795230 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -207,11 +207,11 @@ public class CoreclrTestWrapperLib public const string COLLECT_DUMPS_ENVIRONMENT_VAR = "__CollectDumps"; public const string CRASH_DUMP_FOLDER_ENVIRONMENT_VAR = "__CrashDumpFolder"; - static bool CollectCrashDump(Process process, string path, StreamWriter outputWriter) + static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter outputWriter) { string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); string createdumpPath = Path.Combine(coreRoot, "createdump"); - string arguments = $"--name \"{path}\" {process.Id} --withheap"; + string arguments = $"--name \"{crashDumpPath}\" {process.Id} --withheap"; Process createdump = new Process(); bool crashReportPresent = false; @@ -252,7 +252,7 @@ static bool CollectCrashDump(Process process, string path, StreamWriter outputWr if (crashReportPresent) { - TryPrintStackTraceFromCrashReport(path, outputWriter); + TryPrintStackTraceFromCrashReport(crashDumpPath + ".crashreport.json", outputWriter); } } else @@ -272,11 +272,10 @@ static bool CollectCrashDump(Process process, string path, StreamWriter outputWr /// Parse crashreport.json file, use llvm-symbolizer to extract symbols /// and recreate the stacktrace that is printed on the console. /// - /// crash dump path + /// crash dump path /// true, if we can print the stack trace, otherwise false. - static bool TryPrintStackTraceFromCrashReport(string crashdump, StreamWriter outputWriter) + static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, StreamWriter outputWriter) { - string crashReportJsonFile = crashdump + ".crashreport.json"; if (!File.Exists(crashReportJsonFile)) { return false; From e1d0fd9a7f83cf9e8d012afb4ee7aa0e71a533b6 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 14 Nov 2022 13:35:38 -0800 Subject: [PATCH 25/49] Add some logging --- .../Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 5e6ea99795230..ed1b271a3b45c 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -276,8 +276,17 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter /// true, if we can print the stack trace, otherwise false. static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, StreamWriter outputWriter) { - if (!File.Exists(crashReportJsonFile)) + Console.WriteLine($"Running TryPrintStackTraceFromCrashReport() for {crashReportJsonFile}"); + try { + if (!File.Exists(crashReportJsonFile)) + { + return false; + } + } catch (Exception ex) + { + Console.WriteLine($"Got exception when trying to check existance of {crashReportJsonFile}"); + Console.WriteLine(ex.ToString()); return false; } outputWriter.WriteLine($"Printing stacktrace from '{crashReportJsonFile}'"); @@ -355,6 +364,10 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } } + Console.WriteLine("----------input to llvm-symbolizer-----------------"); + Console.WriteLine(addrBuilder.ToString()); + Console.WriteLine("---------------------------"); + string symbolizerOutput = null; Process llvmSymbolizer = new Process() From 12406ab80422206fa3e119c99d819d5b7596cb9f Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 14 Nov 2022 14:54:17 -0800 Subject: [PATCH 26/49] Fix the clrjit symbols --- .../CoreclrTestWrapperLib.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index ed1b271a3b45c..02bf1eaf86192 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -263,9 +263,9 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter return fSuccess && createdump.ExitCode == 0; } - private static List knownNativeModules = new List() { "libcoreclr.so" }; + private static List knownNativeModules = new List() { "libcoreclr.so", "libclrjit.so" }; private static string TO_BE_CONTINUE_TAG = ""; - private static string SKIP_LINE_TAG = ""; + private static string SKIP_LINE_TAG = "# "; /// @@ -273,6 +273,7 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter /// and recreate the stacktrace that is printed on the console. /// /// crash dump path + /// Stream for writing logs /// true, if we can print the stack trace, otherwise false. static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, StreamWriter outputWriter) { @@ -323,7 +324,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream if ((nativeModuleName != null) && (knownNativeModules.Contains(nativeModuleName))) { // Need to use llvm-symbolizer (only if module_address != 0) - AppendAddress(addrBuilder, (string)frame["native_address"], (string)frame["module_address"]); + AppendAddress(addrBuilder, coreRoot, nativeModuleName, (string)frame["native_address"], (string)frame["module_address"]); } else if ((nativeModuleName != null) || (unmanagedName != null)) { @@ -364,17 +365,13 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } } - Console.WriteLine("----------input to llvm-symbolizer-----------------"); - Console.WriteLine(addrBuilder.ToString()); - Console.WriteLine("---------------------------"); - string symbolizerOutput = null; Process llvmSymbolizer = new Process() { StartInfo = { FileName = "llvm-symbolizer", - Arguments = $"--obj={coreRoot}/libcoreclr.so -p", + Arguments = $"-p", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, @@ -421,16 +418,18 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream return true; } - private static void AppendAddress(StringBuilder sb, string native_address, string module_address) + private static void AppendAddress(StringBuilder sb, string coreRoot, string nativeModuleName, string native_address, string module_address) { if (module_address != "0x0") { + sb.Append($"{nativeModuleName}!"); sb.Append(TO_BE_CONTINUE_TAG); sb.AppendLine(); //addrBuilder.AppendLine(frame.native_image_offset); ulong nativeAddress = ulong.Parse(native_address.Substring(2), System.Globalization.NumberStyles.HexNumber); ulong moduleAddress = ulong.Parse(module_address.Substring(2), System.Globalization.NumberStyles.HexNumber); - sb.AppendFormat("0x{0:x}", nativeAddress - moduleAddress); + string fullPathToModule = Path.Combine(coreRoot, nativeModuleName); + sb.AppendFormat("{0} 0x{1:x}", fullPathToModule, nativeAddress - moduleAddress); } } From cb7e0cb6ce828c99ce5a44923197442ad90fc35a Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 14 Nov 2022 14:59:13 -0800 Subject: [PATCH 27/49] Add a comment --- src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 02bf1eaf86192..2c86e7f6ab289 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -399,6 +399,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); } + // Go through the output of llvm-symbolizer and strip all the markers we added initially. string[] contentsToSantize = symbolizerOutput.Split(Environment.NewLine); StringBuilder finalBuilder = new StringBuilder(); for (int lineNum = 0; lineNum < contentsToSantize.Length; lineNum++) From db9c273a7f75aab6f64ecac14aee298f20d91a04 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 14 Nov 2022 18:16:48 -0800 Subject: [PATCH 28/49] Add few more commnets --- .../CoreclrTestWrapperLib.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 2c86e7f6ab289..1e16a49a84eb2 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -290,10 +290,29 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream Console.WriteLine(ex.ToString()); return false; } + Console.WriteLine($"Printing stacktrace from '{crashReportJsonFile}'"); outputWriter.WriteLine($"Printing stacktrace from '{crashReportJsonFile}'"); + try + { + Console.WriteLine($"Checking permission of '{crashReportJsonFile}'"); + // File.Open also returns FileStream + // there are also two "shortcut" methods: File.OpenRead, File.OpenWrite + using (var fs = File.Open(crashReportJsonFile, FileMode.Open)) { + var canRead = fs.CanRead; + var canWrite = fs.CanWrite; + Console.WriteLine($"Permission: canRead: {canRead}, canWrite: {canWrite}."); + } + } catch (Exception ex) + { + Console.WriteLine($"Got exception while checking the permission '{ex.ToString()}'"); + } + string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); + + Console.WriteLine($"Reading file'{crashReportJsonFile}'"); string contents = File.ReadAllText(crashReportJsonFile); + Console.WriteLine($"File read '{crashReportJsonFile}'"); dynamic crashReport = JsonSerializer.Deserialize(contents); var threads = crashReport["payload"]["threads"]; From 8045668953debb316d71746531bfd602b0893cbc Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Mon, 14 Nov 2022 18:43:54 -0800 Subject: [PATCH 29/49] chown --- .../CoreclrTestWrapperLib.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 1e16a49a84eb2..4c516e6f73bd8 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -278,6 +278,29 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, StreamWriter outputWriter) { Console.WriteLine($"Running TryPrintStackTraceFromCrashReport() for {crashReportJsonFile}"); + Console.WriteLine($"Set the permission to make sure {crashReportJsonFile} can be read."); + + + if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) + { + Process chownProcess = new Process(); + + chownProcess.StartInfo.FileName = "sudo"; + chownProcess.StartInfo.Arguments = $"chown $USER {crashReportJsonFile}"; + chownProcess.StartInfo.UseShellExecute = false; + chownProcess.StartInfo.RedirectStandardOutput = true; + chownProcess.StartInfo.RedirectStandardError = true; + + Console.WriteLine($"Invoking: {chownProcess.StartInfo.FileName} {chownProcess.StartInfo.Arguments}"); + chownProcess.Start(); + if (!chownProcess.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + chownProcess.Kill(true); + Console.WriteLine("Failed to change ownership"); + return false; + } + } + try { if (!File.Exists(crashReportJsonFile)) From 5b567e0e244319889a70a9df0a77e58b8b009f16 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 15 Nov 2022 05:44:15 -0800 Subject: [PATCH 30/49] ls -l, chmod --- .../CoreclrTestWrapperLib.cs | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 4c516e6f73bd8..0298c6c550c41 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -286,7 +286,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream Process chownProcess = new Process(); chownProcess.StartInfo.FileName = "sudo"; - chownProcess.StartInfo.Arguments = $"chown $USER {crashReportJsonFile}"; + chownProcess.StartInfo.Arguments = $"ls -l {crashReportJsonFile}"; chownProcess.StartInfo.UseShellExecute = false; chownProcess.StartInfo.RedirectStandardOutput = true; chownProcess.StartInfo.RedirectStandardError = true; @@ -295,10 +295,42 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream chownProcess.Start(); if (!chownProcess.WaitForExit(DEFAULT_TIMEOUT_MS)) { + Console.WriteLine("stderr:"); + Console.WriteLine(chownProcess.StandardError.ReadToEnd()); chownProcess.Kill(true); - Console.WriteLine("Failed to change ownership"); + Console.WriteLine("Failed to ls -l"); return false; } + else + { + Console.WriteLine("stdout:"); + Console.WriteLine(chownProcess.StandardOutput.ReadToEnd()); + Console.WriteLine("stderr:"); + Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + } + Console.WriteLine("========================================="); + chownProcess.StartInfo.Arguments = $"chmod 744 {crashReportJsonFile}"; + chownProcess.StartInfo.UseShellExecute = false; + chownProcess.StartInfo.RedirectStandardOutput = true; + chownProcess.StartInfo.RedirectStandardError = true; + + Console.WriteLine($"Invoking: {chownProcess.StartInfo.FileName} {chownProcess.StartInfo.Arguments}"); + chownProcess.Start(); + if (!chownProcess.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + Console.WriteLine("stderr:"); + Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + chownProcess.Kill(true); + Console.WriteLine("Failed to chmod"); + return false; + } + else + { + Console.WriteLine("stdout:"); + Console.WriteLine(chownProcess.StandardOutput.ReadToEnd()); + Console.WriteLine("stderr:"); + Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + } } try From f3700ec8caa5ccf92e0606a1fffd72f713a1bf85 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 15 Nov 2022 10:47:21 -0800 Subject: [PATCH 31/49] Change to chown --- .../CoreclrTestWrapperLib.cs | 75 ++++++++++--------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 0298c6c550c41..0b53ff747a854 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -268,6 +268,33 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter private static string SKIP_LINE_TAG = "# "; + static bool RunProcess(string fileName, string arguments) + { + Process chownProcess = new Process(); + + chownProcess.StartInfo.FileName = fileName; + chownProcess.StartInfo.Arguments = arguments; + chownProcess.StartInfo.UseShellExecute = false; + chownProcess.StartInfo.RedirectStandardOutput = true; + chownProcess.StartInfo.RedirectStandardError = true; + + Console.WriteLine($"Invoking: {chownProcess.StartInfo.FileName} {chownProcess.StartInfo.Arguments}"); + chownProcess.Start(); + if (!chownProcess.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + Console.WriteLine("stderr:"); + Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + chownProcess.Kill(true); + Console.WriteLine($"Failed to run '{fileName} {arguments}"); + return false; + } + Console.WriteLine("stdout:"); + Console.WriteLine(chownProcess.StandardOutput.ReadToEnd()); + Console.WriteLine("stderr:"); + Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + return true; + } + /// /// Parse crashreport.json file, use llvm-symbolizer to extract symbols /// and recreate the stacktrace that is printed on the console. @@ -283,53 +310,27 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) { - Process chownProcess = new Process(); - - chownProcess.StartInfo.FileName = "sudo"; - chownProcess.StartInfo.Arguments = $"ls -l {crashReportJsonFile}"; - chownProcess.StartInfo.UseShellExecute = false; - chownProcess.StartInfo.RedirectStandardOutput = true; - chownProcess.StartInfo.RedirectStandardError = true; - - Console.WriteLine($"Invoking: {chownProcess.StartInfo.FileName} {chownProcess.StartInfo.Arguments}"); - chownProcess.Start(); - if (!chownProcess.WaitForExit(DEFAULT_TIMEOUT_MS)) + if (!RunProcess("sudo", $"ls -l {crashReportJsonFile}")) { - Console.WriteLine("stderr:"); - Console.WriteLine(chownProcess.StandardError.ReadToEnd()); - chownProcess.Kill(true); - Console.WriteLine("Failed to ls -l"); return false; } - else + + Console.WriteLine("========================================="); + if (!RunProcess("sudo", $"chown $USER {crashReportJsonFile}")) { - Console.WriteLine("stdout:"); - Console.WriteLine(chownProcess.StandardOutput.ReadToEnd()); - Console.WriteLine("stderr:"); - Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + return false; } + Console.WriteLine("========================================="); - chownProcess.StartInfo.Arguments = $"chmod 744 {crashReportJsonFile}"; - chownProcess.StartInfo.UseShellExecute = false; - chownProcess.StartInfo.RedirectStandardOutput = true; - chownProcess.StartInfo.RedirectStandardError = true; - - Console.WriteLine($"Invoking: {chownProcess.StartInfo.FileName} {chownProcess.StartInfo.Arguments}"); - chownProcess.Start(); - if (!chownProcess.WaitForExit(DEFAULT_TIMEOUT_MS)) + if (!RunProcess("sudo", $"ls -l {crashReportJsonFile}")) { - Console.WriteLine("stderr:"); - Console.WriteLine(chownProcess.StandardError.ReadToEnd()); - chownProcess.Kill(true); - Console.WriteLine("Failed to chmod"); return false; } - else + + Console.WriteLine("========================================="); + if (!RunProcess("ls", $"-l {crashReportJsonFile}")) { - Console.WriteLine("stdout:"); - Console.WriteLine(chownProcess.StandardOutput.ReadToEnd()); - Console.WriteLine("stderr:"); - Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + return false; } } From 5ce4de8cb8f7608ef34a481e041662e736510edf Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 15 Nov 2022 13:50:20 -0800 Subject: [PATCH 32/49] USER environment variable --- .../CoreclrTestWrapperLib.cs | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 0b53ff747a854..787f1b7728e6c 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -316,21 +316,25 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } Console.WriteLine("========================================="); - if (!RunProcess("sudo", $"chown $USER {crashReportJsonFile}")) + string userName = Environment.GetEnvironmentVariable("USER"); + if (!string.IsNullOrEmpty(userName)) { - return false; - } + if (!RunProcess("sudo", $"chown {userName} {crashReportJsonFile}")) + { + return false; + } - Console.WriteLine("========================================="); - if (!RunProcess("sudo", $"ls -l {crashReportJsonFile}")) - { - return false; - } + Console.WriteLine("========================================="); + if (!RunProcess("sudo", $"ls -l {crashReportJsonFile}")) + { + return false; + } - Console.WriteLine("========================================="); - if (!RunProcess("ls", $"-l {crashReportJsonFile}")) - { - return false; + Console.WriteLine("========================================="); + if (!RunProcess("ls", $"-l {crashReportJsonFile}")) + { + return false; + } } } From 1eae2fbcbd778c6ff66bd7949e7ad169ad3aa759 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Sun, 27 Nov 2022 16:26:17 -0800 Subject: [PATCH 33/49] update runtime.yml --- eng/pipelines/runtime.yml | 1938 +++++++++++++++++++------------------ 1 file changed, 991 insertions(+), 947 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 372edc8d62243..c35728df7a48e 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -91,79 +91,79 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - # Build the whole product using GNU compiler toolchain - # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - Linux_x64 - container: debian-11-gcc12-amd64-20220511124845-b7a6185 - jobParameters: - testGroup: innerloop - compilerName: gcc - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - Linux_x64 + # container: debian-11-gcc12-amd64-20220511124845-b7a6185 + # jobParameters: + # testGroup: innerloop + # compilerName: gcc + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build CoreCLR OSX_x64 checked # # Only when CoreCLR or Libraries is changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build CoreCLR release # # Always as they are needed by Installer and we always build and test the Installer. # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: release - # platforms: - # - OSX_arm64 - # - OSX_x64 - # - Linux_x64 - # - Linux_arm - # - Linux_arm64 - # - Linux_musl_x64 - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # - windows_arm - # - windows_arm64 - # - FreeBSD_x64 - # jobParameters: - # testGroup: innerloop - # # Mono/runtimetests also need this, but skip for wasm - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - OSX_arm64 + # - OSX_x64 + # - Linux_x64 + # - Linux_arm + # - Linux_arm64 + # - Linux_musl_x64 + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm + # - windows_arm64 + # - FreeBSD_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build CoreCLR Formatting Job @@ -171,602 +171,602 @@ extends: # # both Rolling and PR builds). # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - # platforms: - # - Linux_x64 - # - windows_x64 - # jobParameters: - # condition: >- - # and( - # or( - # eq(variables['Build.SourceBranchName'], 'main'), - # eq(variables['System.PullRequest.TargetBranch'], 'main')), - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - # # eq(variables['isRollingBuild'], true))) + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - Linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) - # # - # # CoreCLR NativeAOT debug build and smoke tests - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: debug - # platforms: - # - Linux_x64 - # - windows_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isFullMatrix'], true)) + # + # CoreCLR NativeAOT debug build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: debug + platforms: + - Linux_x64 + - windows_x64 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) - # # - # # CoreCLR NativeAOT checked build and smoke tests - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: checked - # platforms: - # - windows_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isFullMatrix'], true)) + # + # CoreCLR NativeAOT checked build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: checked + platforms: + - windows_x64 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) # # # # CoreCLR NativeAOT release build and smoke tests # # Only when CoreCLR is changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - Linux_x64 - # - windows_x64 - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isFullMatrix'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - Linux_x64 + # - windows_x64 + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) # # # # CoreCLR NativeAOT release build and libraries tests # # Only when CoreCLR or library is changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # platforms: - # - windows_arm64 - # - Linux_arm64 - # - OSX_arm64 - # jobParameters: - # testGroup: innerloop - # isSingleFile: true - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isFullMatrix'], true)) - - # # Build and test clr tools - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - Linux_x64 - # jobParameters: - # testGroup: clrTools - # timeoutInMinutes: 120 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - Linux_arm64 + # - OSX_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # Build and test clr tools + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - Linux_x64 + jobParameters: + testGroup: clrTools + timeoutInMinutes: 120 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) # # Build Mono AOT offset headers once, for consumption elsewhere # # Only when mono changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - # buildConfig: release - # platforms: - # - Android_x64 - # #- Browser_wasm - unused - # - tvOS_arm64 - # - iOS_arm64 - # - MacCatalyst_x64 - # jobParameters: - # isOfficialBuild: ${{ variables.isOfficialBuild }} - # # needed by crossaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - Android_x64 + # #- Browser_wasm - unused + # - tvOS_arm64 + # - iOS_arm64 + # - MacCatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # Build the whole product using Mono runtime # # Only when libraries, mono or installer are changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - tvOSSimulator_x64 - # - iOSSimulator_x86 - # - Linux_arm - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvOSSimulator_x64 + # - iOSSimulator_x86 + # - Linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - iOS_arm - # - Linux_musl_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - iOS_arm + # - Linux_musl_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # WebAssembly legs # # # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # buildAndRunWasi: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - normal - # - WasmTestOnBrowser + # parameters: + # platforms: + # - Browser_wasm + # buildAndRunWasi: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - WasmTestOnBrowser + # parameters: + # platforms: + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser # # EAT Library tests - only run on linux # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _EAT - # runAOT: false - # shouldRunSmokeOnly: false - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} # # AOT Library tests # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm_win - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} # # Wasm.Build.Tests # - template: /eng/pipelines/common/templates/wasm-build-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} # # Wasm Debugger tests # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} # # Wasm runtime tests # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} # # BUILD ONLY - Wasm Threading Legs # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _Threading - # extraBuildArgs: /p:WasmEnableThreads=true - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _Threading + # extraBuildArgs: /p:WasmEnableThreads=true + # alwaysRun: ${{ variables.isRollingBuild }} # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _Threading_PerfTracing - # extraBuildArgs: /p:WasmEnablePerfTracing=true - # alwaysRun: ${{ variables.isRollingBuild }} + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:WasmEnablePerfTracing=true + # alwaysRun: ${{ variables.isRollingBuild }} # # # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size # # Build the whole product using Mono and run libraries tests # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - iOS_arm64 - # - tvOS_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - iOS_arm64 + # - tvOS_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # MacCatalyst interp - requires AOT Compilation and Interp flags # # Build the whole product using Mono and run libraries tests # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - MacCatalyst_x64 - # - ${{ if eq(variables['isRollingBuild'], true) }}: - # - MacCatalyst_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - MacCatalyst_x64 + # - ${{ if eq(variables['isRollingBuild'], true) }}: + # - MacCatalyst_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono and Installer on LLVMJIT mode # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono and Installer on LLVMAOT mode # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono debug # # Only when mono changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: debug - # platforms: - # - OSX_x64 - # - OSX_arm64 - # - Linux_x64 - # - Linux_arm64 - # # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: debug + # platforms: + # - OSX_x64 + # - OSX_arm64 + # - Linux_x64 + # - Linux_arm64 + # # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono release AOT cross-compilers # # Only when mono changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # # - Linux_arm64 - # # - Linux_musl_arm64 - # - Windows_x64 - # # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # #- mono_browser_offsets - unused - # monoCrossAOTTargetOS: - # - Android - # #- Browser - unused - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # # - Linux_arm64 + # # - Linux_musl_arm64 + # - Windows_x64 + # # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # #- mono_browser_offsets - unused + # monoCrossAOTTargetOS: + # - Android + # #- Browser - unused + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - OSX_x64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # #- mono_browser_offsets - unused - # - mono_tvos_offsets - # - mono_ios_offsets - # - mono_maccatalyst_offsets - # monoCrossAOTTargetOS: - # - Android - # #- Browser - unused - # - tvOS - # - iOS - # - MacCatalyst - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - OSX_x64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # #- mono_browser_offsets - unused + # - mono_tvos_offsets + # - mono_ios_offsets + # - mono_maccatalyst_offsets + # monoCrossAOTTargetOS: + # - Android + # #- Browser - unused + # - tvOS + # - iOS + # - MacCatalyst + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono release # # Only when libraries or mono changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono release # # Only when libraries, mono, or the runtime tests changed # # Currently only these architectures are needed for the runtime tests. # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - OSX_x64 - # - Linux_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - OSX_x64 + # - Linux_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build Mono release with LLVM AOT # # Only when mono, or the runtime tests changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # runtimeVariant: llvmaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # runtimeVariant: llvmaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Build libraries using live CoreLib @@ -775,25 +775,25 @@ extends: # # These are part of the test matrix for Libraries changes. # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - Linux_arm - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_arm - # - windows_arm64 - # - windows_x86 - # jobParameters: - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - Linux_arm + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_arm + # - windows_arm64 + # - windows_x86 + # jobParameters: + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -818,21 +818,21 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), eq(variables['isRollingBuild'], true)) - # # - # # Libraries debug build that only runs when coreclr is changed - # # Only do this on PR builds since we use the Release builds for these test runs in CI - # # and those are already built above - # # - # - ${{ if eq(variables['isRollingBuild'], false) }}: - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Debug - # platforms: - # - windows_x86 - # jobParameters: - # condition: >- - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + # + # Libraries debug build that only runs when coreclr is changed + # Only do this on PR builds since we use the Release builds for these test runs in CI + # and those are already built above + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Debug + platforms: + - windows_x86 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) # # Libraries release build that only runs when coreclr is changed in PRs @@ -851,35 +851,35 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # framework: net48 - # runTests: true - # testScope: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # framework: net48 + # runTests: true + # testScope: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - - windows_x64 - jobParameters: - framework: allConfigurations - runTests: true - useHelix: false - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # jobParameters: + # framework: allConfigurations + # runTests: true + # useHelix: false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Installer Build and Test @@ -887,45 +887,45 @@ extends: # # we expect these to be done before we finish libraries or coreclr testing. # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_x86 - # - windows_arm - # - windows_arm64 - # - Linux_arm - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: Release - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_x86 + # - windows_arm + # - windows_arm64 + # - Linux_arm + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: Release + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: Release - # platforms: - # - OSX_arm64 - # - OSX_x64 - # - Linux_x64 - # - Linux_arm64 - # - Linux_musl_x64 - # - windows_x64 - # - FreeBSD_x64 - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: Release + # platforms: + # - OSX_arm64 + # - OSX_x64 + # - Linux_x64 + # - Linux_arm64 + # - Linux_musl_x64 + # - windows_x64 + # - FreeBSD_x64 + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # CoreCLR Test builds using live libraries release build @@ -945,28 +945,28 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - # CoreCLR Test executions using live libraries - # Only when CoreCLR is changed - # + # # + # # CoreCLR Test executions using live libraries + # # Only when CoreCLR is changed + # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - Linux_arm - # - windows_x86 - # - windows_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: Release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - Linux_arm + # - windows_x86 + # - windows_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: Release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -989,322 +989,366 @@ extends: eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - OSX_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - OSX_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Mono Test builds with CoreCLR runtime tests using live libraries debug build # # Only when Mono is changed # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - windows_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: minijit + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # - # # Mono CoreCLR runtime Test executions using live libraries in jit mode - # # Only when Mono is changed + # # Build the whole product using Mono and run runtime tests + # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # - windows_x64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # liveRuntimeBuildConfig: release - # runtimeVariant: minijit - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests + # runtimeVariant: minijit + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release # # # # Mono CoreCLR runtime Test executions using live libraries in interpreter mode # # Only when Mono is changed + # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # liveRuntimeBuildConfig: release - # runtimeVariant: monointerpreter - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests + # runtimeVariant: monointerpreter + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release # # # # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT # # Only when Mono is changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation - # #- Linux_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # liveRuntimeBuildConfig: release - # runtimeVariant: llvmaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation + # #- Linux_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests + # runtimeVariant: llvmaot + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + # timeoutInMinutes: 180 + + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release # # # # Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT # # Only when Mono is changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release - buildConfig: Release - # - Linux_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # liveRuntimeBuildConfig: release - # runtimeVariant: llvmfullaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests + # runtimeVariant: llvmfullaot + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + # timeoutInMinutes: 300 + + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release # # # # Libraries Release Test Execution against a release mono runtime. # # Only when libraries or mono changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # - OSX_x64 - # - Linux_arm64 - # - Linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # runtimeDisplayName: mono - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # - OSX_x64 + # - Linux_arm64 + # - Linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # runtimeDisplayName: mono + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Libraries Release Test Execution against a release mono interpreter runtime. # # Only when libraries or mono changed # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # #- OSX_x64 - # - Linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # interpreter: true - # runtimeDisplayName: mono_interpreter - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # #- OSX_x64 + # - Linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # interpreter: true + # runtimeDisplayName: mono_interpreter + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Libraries Release Test Execution against a release coreclr runtime # # Only when the PR contains a libraries change # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Libraries Debug Test Execution against a release coreclr runtime # # Only when the PR contains a libraries change # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - windows_x64 - # - OSX_x64 - # - Linux_x64 - # - Linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # The next three jobs run checked coreclr + libraries tests. - # The matrix looks like the following, where the right columns specify which configurations - # the libraries tests are built in. - # ________________________________________ - # | Platform | PR | Rolling | - # | ---------------- | ------- | ------- | - # | linux-arm64 | Debug | Release | - # | windows-x86 | Debug | Release | - # | linux-musl-x64 | Debug | Release | - # | OSX-x64 | Debug | Release | - # | linux-musl-arm | Release | Release | - # | linux-musl-arm64 | Release | Release | - # | linux-x64 | Release | Release | - # | windows-x64 | Release | Release | + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # - OSX_x64 + # - Linux_x64 + # - Linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # The next three jobs run checked coreclr + libraries tests. + # # The matrix looks like the following, where the right columns specify which configurations + # # the libraries tests are built in. + # # ________________________________________ + # # | Platform | PR | Rolling | + # # | ---------------- | ------- | ------- | + # # | linux-arm64 | Debug | Release | + # # | windows-x86 | Debug | Release | + # # | linux-musl-x64 | Debug | Release | + # # | OSX-x64 | Debug | Release | + # # | linux-musl-arm | Release | Release | + # # | linux-musl-arm64 | Release | Release | + # # | linux-x64 | Release | Release | + # # | windows-x64 | Release | Release | # # # # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime # # Only when the PR contains a coreclr change # # # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - Linux_arm64 - # # - windows_x86 - # - Linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - Linux_arm64 + # - windows_x86 + # - Linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # # - # # Release Libraries Test Execution against a checked runtime - # # Only if CoreCLR or Libraries is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: Release - # platforms: - # - Linux_musl_arm - # - Linux_musl_arm64 - # - Linux_x64 - # # - windows_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Release Libraries Test Execution against a checked runtime + # Only if CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: Release + platforms: + # - Linux_musl_arm + # - Linux_musl_arm64 + - Linux_x64 + # - windows_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - OSX_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - OSX_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) # # # # Sourcebuild legs @@ -1317,29 +1361,29 @@ extends: # # Run Linux-x64 in PR. # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # helixQueueGroup: pr - # platforms: - # - SourceBuild_Centos7_x64 - # jobParameters: - # nameSuffix: Centos7SourceBuild - # extraStepsParameters: - # name: SourceBuildPackages - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # helixQueueGroup: pr + # platforms: + # - SourceBuild_Centos7_x64 + # jobParameters: + # nameSuffix: Centos7SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Debug - # helixQueueGroup: pr - # platforms: - # - SourceBuild_Banana24_x64 - # jobParameters: - # nameSuffix: Banana24SourceBuild - # extraStepsParameters: - # name: SourceBuildPackages - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Debug + # helixQueueGroup: pr + # platforms: + # - SourceBuild_Banana24_x64 + # jobParameters: + # nameSuffix: Banana24SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) \ No newline at end of file From 7daf27f864da4962651df4bee27747c9f2fc9b08 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Thu, 1 Dec 2022 11:53:57 -0800 Subject: [PATCH 34/49] fix runtime.yml --- eng/pipelines/runtime.yml | 2604 +++++++++++++++++++------------------ 1 file changed, 1303 insertions(+), 1301 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index c35728df7a48e..30c024cda0573 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -52,1338 +52,1340 @@ variables: - template: /eng/pipelines/common/variables.yml extends: - template: /eng/pipelines/common/templates/single-stage-pipeline-with-resources.yml + template: /eng/pipelines/common/templates/pipeline-with-resources.yml parameters: - jobs: - # - # Evaluate paths - # - - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - - template: /eng/pipelines/common/evaluate-default-paths.yml - - # - # Build CoreCLR checked - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - # - Linux_x86 - - Linux_x64 - # - Linux_arm - # - Linux_arm64 - # - Linux_musl_arm - # - Linux_musl_arm64 - # - Linux_musl_x64 - # - OSX_arm64 - # - Tizen_armel - # - windows_x86 - # - windows_x64 - # - windows_arm - # - windows_arm64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # # - # # Build the whole product using GNU compiler toolchain - # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - Linux_x64 - # container: debian-11-gcc12-amd64-20220511124845-b7a6185 - # jobParameters: - # testGroup: innerloop - # compilerName: gcc - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build CoreCLR OSX_x64 checked - # # Only when CoreCLR or Libraries is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build CoreCLR release - # # Always as they are needed by Installer and we always build and test the Installer. - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: release - # platforms: - # - OSX_arm64 - # - OSX_x64 - # - Linux_x64 - # - Linux_arm - # - Linux_arm64 - # - Linux_musl_x64 - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # - windows_arm - # - windows_arm64 - # - FreeBSD_x64 - # jobParameters: - # testGroup: innerloop - # # Mono/runtimetests also need this, but skip for wasm - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build CoreCLR Formatting Job - # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # # both Rolling and PR builds). - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - # platforms: - # - Linux_x64 - # - windows_x64 - # jobParameters: - # condition: >- - # and( + stages: + - stage: Build + jobs: + # + # Evaluate paths + # + - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: + - template: /eng/pipelines/common/evaluate-default-paths.yml + + # + # Build CoreCLR checked + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + # - Linux_x86 + - Linux_x64 + # - Linux_arm + # - Linux_arm64 + # - Linux_musl_arm + # - Linux_musl_arm64 + # - Linux_musl_x64 + # - OSX_arm64 + # - Tizen_armel + # - windows_x86 + # - windows_x64 + # - windows_arm + # - windows_arm64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # # + # # Build the whole product using GNU compiler toolchain + # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - Linux_x64 + # container: debian-11-gcc12-amd64-20220511124845-b7a6185 + # jobParameters: + # testGroup: innerloop + # compilerName: gcc + # condition: >- # or( - # eq(variables['Build.SourceBranchName'], 'main'), - # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build CoreCLR OSX_x64 checked + # # Only when CoreCLR or Libraries is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - # eq(variables['isRollingBuild'], true))) - - # - # CoreCLR NativeAOT debug build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: debug - platforms: - - Linux_x64 - - windows_x64 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # - # CoreCLR NativeAOT checked build and smoke tests - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: checked - platforms: - - windows_x64 - jobParameters: - testGroup: innerloop - timeoutInMinutes: 120 - nameSuffix: NativeAOT - buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isFullMatrix'], true)) - - # # - # # CoreCLR NativeAOT release build and smoke tests - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - Linux_x64 - # - windows_x64 - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release - # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isFullMatrix'], true)) - - # # - # # CoreCLR NativeAOT release build and libraries tests - # # Only when CoreCLR or library is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # platforms: - # - windows_arm64 - # - Linux_arm64 - # - OSX_arm64 - # jobParameters: - # testGroup: innerloop - # isSingleFile: true - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isFullMatrix'], true)) - - # Build and test clr tools - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked - platforms: - - Linux_x64 - jobParameters: - testGroup: clrTools - timeoutInMinutes: 120 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # # Build Mono AOT offset headers once, for consumption elsewhere - # # Only when mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - # buildConfig: release - # platforms: - # - Android_x64 - # #- Browser_wasm - unused - # - tvOS_arm64 - # - iOS_arm64 - # - MacCatalyst_x64 - # jobParameters: - # isOfficialBuild: ${{ variables.isOfficialBuild }} - # # needed by crossaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # Build the whole product using Mono runtime - # # Only when libraries, mono or installer are changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - tvOSSimulator_x64 - # - iOSSimulator_x86 - # - Linux_arm - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - iOS_arm - # - Linux_musl_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # WebAssembly legs - # # - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # buildAndRunWasi: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - normal - # - WasmTestOnBrowser - - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - WasmTestOnBrowser - - # # EAT Library tests - only run on linux - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _EAT - # runAOT: false - # shouldRunSmokeOnly: false - # alwaysRun: ${{ variables.isRollingBuild }} - - # # AOT Library tests - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm_win - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - - # # Wasm.Build.Tests - # - template: /eng/pipelines/common/templates/wasm-build-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - - # # Wasm Debugger tests - # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - - # # Wasm runtime tests - # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # alwaysRun: ${{ variables.isRollingBuild }} - - # # BUILD ONLY - Wasm Threading Legs - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _Threading - # extraBuildArgs: /p:WasmEnableThreads=true - # alwaysRun: ${{ variables.isRollingBuild }} - - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _Threading_PerfTracing - # extraBuildArgs: /p:WasmEnablePerfTracing=true - # alwaysRun: ${{ variables.isRollingBuild }} - - # # - # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # # Build the whole product using Mono and run libraries tests - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - iOS_arm64 + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build CoreCLR release + # # Always as they are needed by Installer and we always build and test the Installer. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: release + # platforms: + # - OSX_arm64 + # - OSX_x64 + # - Linux_x64 + # - Linux_arm + # - Linux_arm64 + # - Linux_musl_x64 + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm + # - windows_arm64 + # - FreeBSD_x64 + # jobParameters: + # testGroup: innerloop + # # Mono/runtimetests also need this, but skip for wasm + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build CoreCLR Formatting Job + # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # # both Rolling and PR builds). + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + # platforms: + # - Linux_x64 + # - windows_x64 + # jobParameters: + # condition: >- + # and( + # or( + # eq(variables['Build.SourceBranchName'], 'main'), + # eq(variables['System.PullRequest.TargetBranch'], 'main')), + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + # eq(variables['isRollingBuild'], true))) + + # # + # # CoreCLR NativeAOT debug build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: debug + # platforms: + # - Linux_x64 + # - windows_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT checked build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: checked + # platforms: + # - windows_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT release build and smoke tests + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # platforms: + # - Linux_x64 + # - windows_x64 + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # timeoutInMinutes: 120 + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs -rc $(_BuildConfig) -lc Release + # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # + # # CoreCLR NativeAOT release build and libraries tests + # # Only when CoreCLR or library is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # platforms: + # - windows_arm64 + # - Linux_arm64 + # - OSX_arm64 + # jobParameters: + # testGroup: innerloop + # isSingleFile: true + # nameSuffix: NativeAOT + # buildArgs: -s clr.aot+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isFullMatrix'], true)) + + # # Build and test clr tools + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + # buildConfig: checked + # platforms: + # - Linux_x64 + # jobParameters: + # testGroup: clrTools + # timeoutInMinutes: 120 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # Build Mono AOT offset headers once, for consumption elsewhere + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + # buildConfig: release + # platforms: + # - Android_x64 + # #- Browser_wasm - unused # - tvOS_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # - iOS_arm64 + # - MacCatalyst_x64 + # jobParameters: + # isOfficialBuild: ${{ variables.isOfficialBuild }} + # # needed by crossaot # condition: >- # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # MacCatalyst interp - requires AOT Compilation and Interp flags - # # Build the whole product using Mono and run libraries tests - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - MacCatalyst_x64 - # - ${{ if eq(variables['isRollingBuild'], true) }}: - # - MacCatalyst_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # Build the whole product using Mono runtime + # # Only when libraries, mono or installer are changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - tvOSSimulator_x64 + # - iOSSimulator_x86 + # - Linux_arm + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) # condition: >- # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - iOS_arm + # - Linux_musl_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # WebAssembly legs + # # + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # buildAndRunWasi: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # # EAT Library tests - only run on linux + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _EAT + # runAOT: false + # shouldRunSmokeOnly: false + # alwaysRun: ${{ variables.isRollingBuild }} + + # # AOT Library tests + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - Browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/wasm-build-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # - Browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - Browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + + # # BUILD ONLY - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _Threading + # extraBuildArgs: /p:WasmEnableThreads=true + # alwaysRun: ${{ variables.isRollingBuild }} + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - Browser_wasm + # nameSuffix: _Threading_PerfTracing + # extraBuildArgs: /p:WasmEnablePerfTracing=true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - iOS_arm64 + # - tvOS_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( # eq(variables['librariesContainsChange'], true), # eq(variables['monoContainsChange'], true), # eq(variables['isRollingBuild'], true)) - # # - # # Build Mono and Installer on LLVMJIT mode - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono and Installer on LLVMAOT mode - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono debug - # # Only when mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: debug - # platforms: - # - OSX_x64 - # - OSX_arm64 - # - Linux_x64 - # - Linux_arm64 - # # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release AOT cross-compilers - # # Only when mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # # - Linux_arm64 - # # - Linux_musl_arm64 - # - Windows_x64 - # # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # #- mono_browser_offsets - unused - # monoCrossAOTTargetOS: - # - Android - # #- Browser - unused - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - OSX_x64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # #- mono_browser_offsets - unused - # - mono_tvos_offsets - # - mono_ios_offsets - # - mono_maccatalyst_offsets - # monoCrossAOTTargetOS: - # - Android - # #- Browser - unused - # - tvOS - # - iOS - # - MacCatalyst - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release - # # Only when libraries or mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release - # # Only when libraries, mono, or the runtime tests changed - # # Currently only these architectures are needed for the runtime tests. - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - OSX_x64 - # - Linux_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release with LLVM AOT - # # Only when mono, or the runtime tests changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # runtimeVariant: llvmaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build libraries using live CoreLib - # # These set of libraries are built always no matter what changed - # # The reason for that is because Corelib and Installer needs it and - # # These are part of the test matrix for Libraries changes. - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - Linux_arm - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_arm - # - windows_arm64 - # - windows_x86 - # jobParameters: - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - platforms: - # - Linux_arm64 - # - Linux_musl_x64 - - Linux_x64 - # - OSX_arm64 - # - OSX_x64 - # - windows_x64 - # - FreeBSD_x64 - jobParameters: - testScope: innerloop - condition: - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # Libraries debug build that only runs when coreclr is changed - # Only do this on PR builds since we use the Release builds for these test runs in CI - # and those are already built above - # - - ${{ if eq(variables['isRollingBuild'], false) }}: + # # + # # MacCatalyst interp - requires AOT Compilation and Interp flags + # # Build the whole product using Mono and run libraries tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - MacCatalyst_x64 + # - ${{ if eq(variables['isRollingBuild'], true) }}: + # - MacCatalyst_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: monoContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono + # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # extraStepsTemplate: /eng/pipelines/libraries/helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono and Installer on LLVMJIT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMJIT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono and Installer on LLVMAOT mode + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAOT + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono debug + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: debug + # platforms: + # - OSX_x64 + # - OSX_arm64 + # - Linux_x64 + # - Linux_arm64 + # # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release AOT cross-compilers + # # Only when mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # # - Linux_arm64 + # # - Linux_musl_arm64 + # - Windows_x64 + # # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # #- mono_browser_offsets - unused + # monoCrossAOTTargetOS: + # - Android + # #- Browser - unused + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - OSX_x64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # #- mono_browser_offsets - unused + # - mono_tvos_offsets + # - mono_ios_offsets + # - mono_maccatalyst_offsets + # monoCrossAOTTargetOS: + # - Android + # #- Browser - unused + # - tvOS + # - iOS + # - MacCatalyst + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # # - windows_arm + # # - windows_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release + # # Only when libraries, mono, or the runtime tests changed + # # Currently only these architectures are needed for the runtime tests. + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - OSX_x64 + # - Linux_arm64 + # jobParameters: + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build Mono release with LLVM AOT + # # Only when mono, or the runtime tests changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/mono/templates/build-job.yml + # runtimeFlavor: mono + # buildConfig: release + # platforms: + # - Linux_x64 + # - Linux_arm64 + # jobParameters: + # runtimeVariant: llvmaot + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build libraries using live CoreLib + # # These set of libraries are built always no matter what changed + # # The reason for that is because Corelib and Installer needs it and + # # These are part of the test matrix for Libraries changes. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - Linux_arm + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_arm + # - windows_arm64 + # - windows_x86 + # jobParameters: + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Debug + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: - - windows_x86 + # - Linux_arm64 + # - Linux_musl_x64 + - Linux_x64 + # - OSX_arm64 + # - OSX_x64 + # - windows_x64 + # - FreeBSD_x64 jobParameters: + testScope: innerloop + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries debug build that only runs when coreclr is changed + # Only do this on PR builds since we use the Release builds for these test runs in CI + # and those are already built above + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Debug + platforms: + - windows_x86 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # + # Libraries release build that only runs when coreclr is changed in PRs + # We need these for checked coreclr + release libraries tests runs. + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - Linux_x64 + # - windows_x64 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # framework: net48 + # runTests: true + # testScope: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 + # jobParameters: + # framework: allConfigurations + # runTests: true + # useHelix: false + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Installer Build and Test + # # These are always built since they only take like 15 minutes + # # we expect these to be done before we finish libraries or coreclr testing. + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - Linux_musl_arm + # - Linux_musl_arm64 + # - windows_x86 + # - windows_arm + # - windows_arm64 + # - Linux_arm + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: Release + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + # buildConfig: Release + # platforms: + # - OSX_arm64 + # - OSX_x64 + # - Linux_x64 + # - Linux_arm64 + # - Linux_musl_x64 + # - windows_x64 + # - FreeBSD_x64 + # jobParameters: + # liveRuntimeBuildConfig: release + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # runOnlyIfDependenciesSucceeded: true + # condition: + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # CoreCLR Test builds using live libraries release build + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + buildConfig: checked + platforms: + - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 + jobParameters: + testGroup: innerloop condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # # + # # CoreCLR Test executions using live libraries + # # Only when CoreCLR is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: + # - Linux_arm + # - windows_x86 + # - windows_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: Release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # - # Libraries release build that only runs when coreclr is changed in PRs - # We need these for checked coreclr + release libraries tests runs. - # - - ${{ if eq(variables['isRollingBuild'], false) }}: - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked platforms: + # - OSX_x64 - Linux_x64 + # - Linux_arm64 # - windows_x64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # framework: net48 - # runTests: true - # testScope: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - windows_x64 - # jobParameters: - # framework: allConfigurations - # runTests: true - # useHelix: false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Installer Build and Test - # # These are always built since they only take like 15 minutes - # # we expect these to be done before we finish libraries or coreclr testing. - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_x86 - # - windows_arm - # - windows_arm64 - # - Linux_arm - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: Release - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: Release - # platforms: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: checked + # platforms: # - OSX_arm64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Mono Test builds with CoreCLR runtime tests using live libraries debug build + # # Only when Mono is changed + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 + # jobParameters: + # testGroup: innerloop + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - windows_x64 + # helixQueueGroup: pr + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # jobParameters: + # testGroup: innerloop + # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # liveRuntimeBuildConfig: release + # runtimeVariant: minijit + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Build the whole product using Mono and run runtime tests + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests + # runtimeVariant: minijit + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + + # # + # # Mono CoreCLR runtime Test executions using live libraries in interpreter mode + # # Only when Mono is changed + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - OSX_x64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests + # runtimeVariant: monointerpreter + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + # # + # # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT + # # Only when Mono is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation + # #- Linux_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests + # runtimeVariant: llvmaot + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + # timeoutInMinutes: 180 + + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + + # # + # # Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT + # # Only when Mono is changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # buildConfig: Release + # runtimeFlavor: mono + # platforms: + # - Linux_x64 + # - Linux_arm64 + # variables: + # - name: timeoutPerTestInMinutes + # value: 60 + # - name: timeoutPerTestCollectionInMinutes + # value: 180 + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests + # runtimeVariant: llvmfullaot + # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + # timeoutInMinutes: 300 + + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # extraStepsParameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + + # # + # # Libraries Release Test Execution against a release mono runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # - OSX_x64 + # - Linux_arm64 + # - Linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # runtimeDisplayName: mono + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Release Test Execution against a release mono interpreter runtime. + # # Only when libraries or mono changed + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # runtimeFlavor: mono + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # # - windows_x64 + # #- OSX_x64 + # - Linux_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # interpreter: true + # runtimeDisplayName: mono_interpreter + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Release Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: Release + # platforms: + # - windows_x86 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # Libraries Debug Test Execution against a release coreclr runtime + # # Only when the PR contains a libraries change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: + # - windows_x64 # - OSX_x64 # - Linux_x64 + # - Linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + # jobParameters: + # isOfficialBuild: false + # testScope: innerloop + # liveRuntimeBuildConfig: release + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # The next three jobs run checked coreclr + libraries tests. + # The matrix looks like the following, where the right columns specify which configurations + # the libraries tests are built in. + # ________________________________________ + # | Platform | PR | Rolling | + # | ---------------- | ------- | ------- | + # | linux-arm64 | Debug | Release | + # | windows-x86 | Debug | Release | + # | linux-musl-x64 | Debug | Release | + # | OSX-x64 | Debug | Release | + # | linux-musl-arm | Release | Release | + # | linux-musl-arm64 | Release | Release | + # | linux-x64 | Release | Release | + # | windows-x64 | Release | Release | + + # # + # # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime + # # Only when the PR contains a coreclr change + # # + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: # - Linux_arm64 + # - windows_x86 # - Linux_musl_x64 + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # + # Release Libraries Test Execution against a checked runtime + # Only if CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: Release + platforms: + # - Linux_musl_arm + # - Linux_musl_arm64 + - Linux_x64 # - windows_x64 - # - FreeBSD_x64 - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - # CoreCLR Test builds using live libraries release build - # Only when CoreCLR is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: checked - platforms: - - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # # - # # CoreCLR Test executions using live libraries - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - Linux_arm - # - windows_x86 - # - windows_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: Release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - # - OSX_x64 - - Linux_x64 - # - Linux_arm64 - # - windows_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - OSX_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Mono Test builds with CoreCLR runtime tests using live libraries debug build - # # Only when Mono is changed - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - windows_x64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # liveRuntimeBuildConfig: release - # runtimeVariant: minijit - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build the whole product using Mono and run runtime tests - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/libraries/run-test-job.yml + # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + # platforms: # - OSX_x64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests - # runtimeVariant: minijit - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + # helixQueueGroup: libraries + # jobParameters: + # testScope: innerloop + # liveRuntimeBuildConfig: checked + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(variables['isRollingBuild'], true)) - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - - # # - # # Mono CoreCLR runtime Test executions using live libraries in interpreter mode - # # Only when Mono is changed - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests - # runtimeVariant: monointerpreter - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # # - # # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT - # # Only when Mono is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation - # #- Linux_arm64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests - # runtimeVariant: llvmaot - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true - # timeoutInMinutes: 180 - - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - - # # - # # Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT - # # Only when Mono is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests - # runtimeVariant: llvmfullaot - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true - # timeoutInMinutes: 300 - - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - - # # - # # Libraries Release Test Execution against a release mono runtime. - # # Only when libraries or mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # - OSX_x64 - # - Linux_arm64 - # - Linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # runtimeDisplayName: mono - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Libraries Release Test Execution against a release mono interpreter runtime. - # # Only when libraries or mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # #- OSX_x64 - # - Linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # interpreter: true - # runtimeDisplayName: mono_interpreter - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Libraries Release Test Execution against a release coreclr runtime - # # Only when the PR contains a libraries change - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Libraries Debug Test Execution against a release coreclr runtime - # # Only when the PR contains a libraries change - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - windows_x64 - # - OSX_x64 - # - Linux_x64 - # - Linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # The next three jobs run checked coreclr + libraries tests. - # # The matrix looks like the following, where the right columns specify which configurations - # # the libraries tests are built in. - # # ________________________________________ - # # | Platform | PR | Rolling | - # # | ---------------- | ------- | ------- | - # # | linux-arm64 | Debug | Release | - # # | windows-x86 | Debug | Release | - # # | linux-musl-x64 | Debug | Release | - # # | OSX-x64 | Debug | Release | - # # | linux-musl-arm | Release | Release | - # # | linux-musl-arm64 | Release | Release | - # # | linux-x64 | Release | Release | - # # | windows-x64 | Release | Release | - - # # - # # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime - # # Only when the PR contains a coreclr change - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - Linux_arm64 - # - windows_x86 - # - Linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - # Release Libraries Test Execution against a checked runtime - # Only if CoreCLR or Libraries is changed - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - # - Linux_musl_arm - # - Linux_musl_arm64 - - Linux_x64 - # - windows_x64 - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - helixQueueGroup: libraries - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: checked - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - OSX_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Sourcebuild legs - # # We have 3 important legs for source-build: - # # - Centos.7 (ensures that RH keeps working) - # # - Linux-x64 portable (used for dependency flow and downstream PR verification) - # # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. - # # - # # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, - # # Run Linux-x64 in PR. - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # helixQueueGroup: pr - # platforms: - # - SourceBuild_Centos7_x64 - # jobParameters: - # nameSuffix: Centos7SourceBuild - # extraStepsParameters: - # name: SourceBuildPackages - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Debug - # helixQueueGroup: pr - # platforms: - # - SourceBuild_Banana24_x64 - # jobParameters: - # nameSuffix: Banana24SourceBuild - # extraStepsParameters: - # name: SourceBuildPackages - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) \ No newline at end of file + # # + # # Sourcebuild legs + # # We have 3 important legs for source-build: + # # - Centos.7 (ensures that RH keeps working) + # # - Linux-x64 portable (used for dependency flow and downstream PR verification) + # # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. + # # + # # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, + # # Run Linux-x64 in PR. + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Release + # helixQueueGroup: pr + # platforms: + # - SourceBuild_Centos7_x64 + # jobParameters: + # nameSuffix: Centos7SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) + + # - template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: Debug + # helixQueueGroup: pr + # platforms: + # - SourceBuild_Banana24_x64 + # jobParameters: + # nameSuffix: Banana24SourceBuild + # extraStepsParameters: + # name: SourceBuildPackages + # timeoutInMinutes: 95 + # condition: eq(variables['isRollingBuild'], true) \ No newline at end of file From a91b8a8d1ee2932da322a211f0a9f840c8aeae65 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Thu, 1 Dec 2022 21:23:52 -0800 Subject: [PATCH 35/49] add logging --- .../CoreclrTestWrapperLib.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 787f1b7728e6c..e857635f65c2a 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -459,11 +459,23 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream }; outputWriter.WriteLine($"Invoking {llvmSymbolizer.StartInfo.FileName} {llvmSymbolizer.StartInfo.Arguments}"); - llvmSymbolizer.Start(); + if(!llvmSymbolizer.Start()) + { + outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); + } using (var symbolizerWriter = llvmSymbolizer.StandardInput) { - symbolizerWriter.WriteLine(addrBuilder.ToString()); + outputWriter.WriteLine($"Sending input: {addrBuilder.ToString()}"); + try + { + symbolizerWriter.WriteLine(addrBuilder.ToString()); + } + catch (System.Exception ex) + { + outputWriter.WriteLine($"Got exception while sending input: {ex.ToString()}"); + throw; + } } if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) @@ -476,6 +488,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream else { symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); + outputWriter.WriteLine($"symbolizerOutput: {symbolizerOutput}"); } // Go through the output of llvm-symbolizer and strip all the markers we added initially. From fe39e5efd4aafa144014ca0eda87acad11b28f08 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Thu, 1 Dec 2022 23:27:27 -0800 Subject: [PATCH 36/49] Add llvm-symbolizer -h --- .../CoreclrTestWrapperLib.cs | 46 +++++++++++++++---- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index e857635f65c2a..7d2eab7388051 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -444,18 +444,46 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } } - string symbolizerOutput = null; - + outputWriter.WriteLine($"Invoking llvmSymbolizer -h"); Process llvmSymbolizer = new Process() { StartInfo = { - FileName = "llvm-symbolizer", - Arguments = $"-p", - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - RedirectStandardInput = true, + FileName = "llvm-symbolizer", + Arguments = $"-h", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + } + }; + + if(!llvmSymbolizer.Start()) + { + outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); + } + if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + outputWriter.WriteLine("Errors while running llvm-symbolizer -h"); + outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); + llvmSymbolizer.Kill(true); + return false; + } + else + { + outputWriter.WriteLine($"help output: {llvmSymbolizer.StandardOutput.ReadToEnd()}"); } + + string symbolizerOutput = null; + + llvmSymbolizer = new Process() + { + StartInfo = { + FileName = "llvm-symbolizer", + Arguments = $"-p", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + RedirectStandardInput = true, + } }; outputWriter.WriteLine($"Invoking {llvmSymbolizer.StartInfo.FileName} {llvmSymbolizer.StartInfo.Arguments}"); @@ -480,7 +508,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { - outputWriter.WriteLine("Errors while running llvm-symbolizer"); + outputWriter.WriteLine("Errors while running llvm-symbolizer -p"); outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); llvmSymbolizer.Kill(true); return false; From 547fa852d35270cbc4fd475811ac1799acfdf4ad Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Thu, 1 Dec 2022 23:30:46 -0800 Subject: [PATCH 37/49] Skip superpmi pipelines --- eng/pipelines/coreclr/superpmi-diffs.yml | 2 +- eng/pipelines/coreclr/superpmi-replay.yml | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/eng/pipelines/coreclr/superpmi-diffs.yml b/eng/pipelines/coreclr/superpmi-diffs.yml index 5d992b33a3bbb..a70ef9e488d24 100644 --- a/eng/pipelines/coreclr/superpmi-diffs.yml +++ b/eng/pipelines/coreclr/superpmi-diffs.yml @@ -10,7 +10,7 @@ pr: # If you are changing these and start including eng/common, adjust the Maestro subscriptions # so that this build can block dependency auto-updates (this build is currently ignored) include: - - src/coreclr/jit/* + - src/coreclr/jit/abc.txt variables: - template: /eng/pipelines/common/variables.yml diff --git a/eng/pipelines/coreclr/superpmi-replay.yml b/eng/pipelines/coreclr/superpmi-replay.yml index 88e575b37d72a..d72668fc02d3b 100644 --- a/eng/pipelines/coreclr/superpmi-replay.yml +++ b/eng/pipelines/coreclr/superpmi-replay.yml @@ -10,10 +10,7 @@ pr: - main paths: include: - - src/coreclr/jit/* - - src/coreclr/tools/superpmi/* - exclude: - - src/coreclr/inc/jiteeversionguid.h + - src/coreclr/jit/abc.txt variables: - template: /eng/pipelines/common/variables.yml From 58146408dc15bfbb7a833e799c29ac77a5ecafdf Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 2 Dec 2022 01:00:00 -0800 Subject: [PATCH 38/49] read contents before process exit --- .../Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 7d2eab7388051..762502999f199 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -460,17 +460,15 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream { outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); } - if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) + outputWriter.WriteLine($"help output: {llvmSymbolizer.StandardOutput.ReadToEnd()}"); + + if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { outputWriter.WriteLine("Errors while running llvm-symbolizer -h"); outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); llvmSymbolizer.Kill(true); return false; } - else - { - outputWriter.WriteLine($"help output: {llvmSymbolizer.StandardOutput.ReadToEnd()}"); - } string symbolizerOutput = null; @@ -506,6 +504,9 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } } + symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); + outputWriter.WriteLine($"symbolizerOutput: {symbolizerOutput}"); + if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { outputWriter.WriteLine("Errors while running llvm-symbolizer -p"); @@ -513,11 +514,6 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream llvmSymbolizer.Kill(true); return false; } - else - { - symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); - outputWriter.WriteLine($"symbolizerOutput: {symbolizerOutput}"); - } // Go through the output of llvm-symbolizer and strip all the markers we added initially. string[] contentsToSantize = symbolizerOutput.Split(Environment.NewLine); From c38743b63e046f84179c732dd4d3e40110edc240 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 2 Dec 2022 09:36:50 -0800 Subject: [PATCH 39/49] Add error output also --- src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 762502999f199..54ea8f0101c35 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -461,6 +461,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); } outputWriter.WriteLine($"help output: {llvmSymbolizer.StandardOutput.ReadToEnd()}"); + outputWriter.WriteLine($"help error : {llvmSymbolizer.StandardError.ReadToEnd()}"); if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { @@ -506,6 +507,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); outputWriter.WriteLine($"symbolizerOutput: {symbolizerOutput}"); + outputWriter.WriteLine($"symbolizerError : {llvmSymbolizer.StandardError.ReadToEnd()}"); if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { From b7258ec4a072287acc103ec8db62895611f77ef3 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 2 Dec 2022 12:43:32 -0800 Subject: [PATCH 40/49] fix some parameters for llvm-symbolizer --- .../CoreclrTestWrapperLib.cs | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 54ea8f0101c35..3150a45b9cfad 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -444,12 +444,39 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } } - outputWriter.WriteLine($"Invoking llvmSymbolizer -h"); + outputWriter.WriteLine($"Invoking llvmSymbolizer --version"); Process llvmSymbolizer = new Process() { StartInfo = { FileName = "llvm-symbolizer", - Arguments = $"-h", + Arguments = $"--version", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + } + }; + + if(!llvmSymbolizer.Start()) + { + outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); + } + outputWriter.WriteLine($"version output: {llvmSymbolizer.StandardOutput.ReadToEnd()}"); + outputWriter.WriteLine($"version error : {llvmSymbolizer.StandardError.ReadToEnd()}"); + + if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + outputWriter.WriteLine("Errors while running llvm-symbolizer --version"); + outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); + llvmSymbolizer.Kill(true); + return false; + } + + outputWriter.WriteLine($"Invoking llvmSymbolizer -help"); + llvmSymbolizer = new Process() + { + StartInfo = { + FileName = "llvm-symbolizer", + Arguments = $"-help", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, @@ -465,7 +492,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { - outputWriter.WriteLine("Errors while running llvm-symbolizer -h"); + outputWriter.WriteLine("Errors while running llvm-symbolizer -help"); outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); llvmSymbolizer.Kill(true); return false; @@ -477,7 +504,7 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream { StartInfo = { FileName = "llvm-symbolizer", - Arguments = $"-p", + Arguments = $"--pretty-print", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, From 54e4eab6d6a0705f5fad220e81e4d8c918da31ed Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 2 Dec 2022 14:36:23 -0800 Subject: [PATCH 41/49] Also enable OSX_x64 runs --- eng/pipelines/runtime.yml | 72 +++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 30c024cda0573..5e3f7b7e6a5e6 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -116,24 +116,24 @@ extends: # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), # eq(variables['isRollingBuild'], true)) - # # - # # Build CoreCLR OSX_x64 checked - # # Only when CoreCLR or Libraries is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Build CoreCLR OSX_x64 checked + # Only when CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - OSX_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) # # # # Build CoreCLR release @@ -806,7 +806,7 @@ extends: # - Linux_musl_x64 - Linux_x64 # - OSX_arm64 - # - OSX_x64 + - OSX_x64 # - windows_x64 # - FreeBSD_x64 jobParameters: @@ -975,7 +975,7 @@ extends: jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml buildConfig: checked platforms: - # - OSX_x64 + - OSX_x64 - Linux_x64 # - Linux_arm64 # - windows_x64 @@ -1335,22 +1335,22 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - OSX_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - OSX_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) # # # # Sourcebuild legs From 45f737fa7596b86ff3b0c7d13ef79e231f4da28c Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Fri, 2 Dec 2022 14:46:00 -0800 Subject: [PATCH 42/49] Remove the debugging code: --- .../CoreclrTestWrapperLib.cs | 147 ++++-------------- 1 file changed, 28 insertions(+), 119 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 3150a45b9cfad..bfadab167ad7c 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -270,28 +270,34 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter static bool RunProcess(string fileName, string arguments) { - Process chownProcess = new Process(); + Process proc = new Process(); - chownProcess.StartInfo.FileName = fileName; - chownProcess.StartInfo.Arguments = arguments; - chownProcess.StartInfo.UseShellExecute = false; - chownProcess.StartInfo.RedirectStandardOutput = true; - chownProcess.StartInfo.RedirectStandardError = true; + proc.StartInfo.FileName = fileName; + proc.StartInfo.Arguments = arguments; + proc.StartInfo.UseShellExecute = false; + proc.StartInfo.RedirectStandardOutput = true; + proc.StartInfo.RedirectStandardError = true; - Console.WriteLine($"Invoking: {chownProcess.StartInfo.FileName} {chownProcess.StartInfo.Arguments}"); - chownProcess.Start(); - if (!chownProcess.WaitForExit(DEFAULT_TIMEOUT_MS)) + Console.WriteLine($"Invoking: {proc.StartInfo.FileName} {proc.StartInfo.Arguments}"); + proc.Start(); + string stdout = proc.StandardOutput.ReadToEnd(); + if (!string.IsNullOrEmpty(stdout) ) { - Console.WriteLine("stderr:"); - Console.WriteLine(chownProcess.StandardError.ReadToEnd()); - chownProcess.Kill(true); - Console.WriteLine($"Failed to run '{fileName} {arguments}"); + Console.WriteLine($"stdout: {stdout}"); + } + string stderr = proc.StandardError.ReadToEnd(); + if (!string.IsNullOrEmpty(stderr) ) + { + Console.WriteLine($"stderr: {stderr}"); + } + + if (!proc.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + proc.Kill(true); + Console.WriteLine($"Timedout: '{fileName} {arguments}"); return false; } - Console.WriteLine("stdout:"); - Console.WriteLine(chownProcess.StandardOutput.ReadToEnd()); - Console.WriteLine("stderr:"); - Console.WriteLine(chownProcess.StandardError.ReadToEnd()); + return true; } @@ -304,10 +310,6 @@ static bool RunProcess(string fileName, string arguments) /// true, if we can print the stack trace, otherwise false. static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, StreamWriter outputWriter) { - Console.WriteLine($"Running TryPrintStackTraceFromCrashReport() for {crashReportJsonFile}"); - Console.WriteLine($"Set the permission to make sure {crashReportJsonFile} can be read."); - - if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) { if (!RunProcess("sudo", $"ls -l {crashReportJsonFile}")) @@ -338,45 +340,17 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } } - try + if (!File.Exists(crashReportJsonFile)) { - if (!File.Exists(crashReportJsonFile)) - { - return false; - } - } catch (Exception ex) - { - Console.WriteLine($"Got exception when trying to check existance of {crashReportJsonFile}"); - Console.WriteLine(ex.ToString()); return false; } - Console.WriteLine($"Printing stacktrace from '{crashReportJsonFile}'"); outputWriter.WriteLine($"Printing stacktrace from '{crashReportJsonFile}'"); - try - { - Console.WriteLine($"Checking permission of '{crashReportJsonFile}'"); - // File.Open also returns FileStream - // there are also two "shortcut" methods: File.OpenRead, File.OpenWrite - using (var fs = File.Open(crashReportJsonFile, FileMode.Open)) { - var canRead = fs.CanRead; - var canWrite = fs.CanWrite; - Console.WriteLine($"Permission: canRead: {canRead}, canWrite: {canWrite}."); - } - } catch (Exception ex) - { - Console.WriteLine($"Got exception while checking the permission '{ex.ToString()}'"); - } - - string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); - - Console.WriteLine($"Reading file'{crashReportJsonFile}'"); string contents = File.ReadAllText(crashReportJsonFile); - Console.WriteLine($"File read '{crashReportJsonFile}'"); - dynamic crashReport = JsonSerializer.Deserialize(contents); var threads = crashReport["payload"]["threads"]; StringBuilder addrBuilder = new StringBuilder(); + string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); foreach (var thread in threads) { @@ -444,63 +418,9 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream } } - outputWriter.WriteLine($"Invoking llvmSymbolizer --version"); - Process llvmSymbolizer = new Process() - { - StartInfo = { - FileName = "llvm-symbolizer", - Arguments = $"--version", - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - } - }; - - if(!llvmSymbolizer.Start()) - { - outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); - } - outputWriter.WriteLine($"version output: {llvmSymbolizer.StandardOutput.ReadToEnd()}"); - outputWriter.WriteLine($"version error : {llvmSymbolizer.StandardError.ReadToEnd()}"); - - if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) - { - outputWriter.WriteLine("Errors while running llvm-symbolizer --version"); - outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); - llvmSymbolizer.Kill(true); - return false; - } - - outputWriter.WriteLine($"Invoking llvmSymbolizer -help"); - llvmSymbolizer = new Process() - { - StartInfo = { - FileName = "llvm-symbolizer", - Arguments = $"-help", - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - } - }; - - if(!llvmSymbolizer.Start()) - { - outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); - } - outputWriter.WriteLine($"help output: {llvmSymbolizer.StandardOutput.ReadToEnd()}"); - outputWriter.WriteLine($"help error : {llvmSymbolizer.StandardError.ReadToEnd()}"); - - if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) - { - outputWriter.WriteLine("Errors while running llvm-symbolizer -help"); - outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); - llvmSymbolizer.Kill(true); - return false; - } - string symbolizerOutput = null; - llvmSymbolizer = new Process() + Process llvmSymbolizer = new Process() { StartInfo = { FileName = "llvm-symbolizer", @@ -520,25 +440,14 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream using (var symbolizerWriter = llvmSymbolizer.StandardInput) { - outputWriter.WriteLine($"Sending input: {addrBuilder.ToString()}"); - try - { - symbolizerWriter.WriteLine(addrBuilder.ToString()); - } - catch (System.Exception ex) - { - outputWriter.WriteLine($"Got exception while sending input: {ex.ToString()}"); - throw; - } + symbolizerWriter.WriteLine(addrBuilder.ToString()); } symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); - outputWriter.WriteLine($"symbolizerOutput: {symbolizerOutput}"); - outputWriter.WriteLine($"symbolizerError : {llvmSymbolizer.StandardError.ReadToEnd()}"); if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) { - outputWriter.WriteLine("Errors while running llvm-symbolizer -p"); + outputWriter.WriteLine("Errors while running llvm-symbolizer --pretty-print"); outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); llvmSymbolizer.Kill(true); return false; From afc62a1600c90fc13365a8c463cc6ed9124fbc8f Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 6 Dec 2022 06:45:35 -0800 Subject: [PATCH 43/49] Revert "Revert "Set DNER for all local fields (#77341)"" This reverts commit 5cfff119dbd8dd7a925a5db6fdb33f4f6487cb3a. --- src/coreclr/jit/morph.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/coreclr/jit/morph.cpp b/src/coreclr/jit/morph.cpp index 7e93f231bf1c1..fc21a67489b6c 100644 --- a/src/coreclr/jit/morph.cpp +++ b/src/coreclr/jit/morph.cpp @@ -15107,10 +15107,6 @@ void Compiler::fgMorphLocalField(GenTree* tree, GenTree* parent) } else { - // There is no existing field that has all the parts that we need - // So we must ensure that the struct lives in memory. - lvaSetVarDoNotEnregister(lclNum DEBUGARG(DoNotEnregisterReason::LocalField)); - #ifdef DEBUG // We can't convert this guy to a float because he really does have his // address taken.. @@ -15119,6 +15115,12 @@ void Compiler::fgMorphLocalField(GenTree* tree, GenTree* parent) } } } + + // If we haven't replaced the field, make sure to set DNER on the local. + if (tree->OperIs(GT_LCL_FLD)) + { + lvaSetVarDoNotEnregister(lclNum DEBUGARG(DoNotEnregisterReason::LocalField)); + } } //------------------------------------------------------------------------ From fb3931fefd43b501fb547e1b9835c1742a1ecd2e Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 6 Dec 2022 06:46:08 -0800 Subject: [PATCH 44/49] Undo JIT changes to trigger assert --- src/coreclr/jit/compiler.cpp | 7 +----- src/coreclr/jit/gentree.cpp | 37 ------------------------------- src/coreclr/jit/jitconfigvalues.h | 4 ++-- src/coreclr/jit/lsra.cpp | 4 ---- 4 files changed, 3 insertions(+), 49 deletions(-) diff --git a/src/coreclr/jit/compiler.cpp b/src/coreclr/jit/compiler.cpp index a32ba753ad09a..68483414fb7f7 100644 --- a/src/coreclr/jit/compiler.cpp +++ b/src/coreclr/jit/compiler.cpp @@ -1759,7 +1759,6 @@ void Compiler::compInit(ArenaAllocator* pAlloc, InlineInfo* inlineInfo) { assert(pAlloc); - opts = {}; compArenaAllocator = pAlloc; // Inlinee Compile object will only be allocated when needed for the 1st time. @@ -3475,11 +3474,7 @@ bool Compiler::compStressCompileHelper(compStressArea stressArea, unsigned weigh // 0: No stress (Except when explicitly set in complus_JitStressModeNames) // !=2: Vary stress. Performance will be slightly/moderately degraded // 2: Check-all stress. Performance will be REALLY horrible - int stressLevel = getJitStressLevel(); - if ((opts.jitFlags != nullptr) && opts.IsReadyToRun()) - { - stressLevel = 0; - } + const int stressLevel = getJitStressLevel(); assert(weight <= MAX_STRESS_WEIGHT); diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index b1ed26f301830..45ede8a98c226 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -24425,43 +24425,6 @@ uint16_t GenTreeLclVarCommon::GetLclOffs() const // ClassLayout* GenTreeLclVarCommon::GetLayout(Compiler* compiler) const { -#ifdef DEBUG - if (!compiler->opts.IsReadyToRun()) - { - DWORD64 timestamp = __rdtsc(); - if ((timestamp % 10000) == 0) - { - int whichError = (timestamp / 10000) % 10; - - switch (whichError) - { - case 0: - case 1: - case 2: - assert(!"Error 0~2"); - break; - case 3: - case 4: - case 5: - assert(!"Error 3~5"); - break; - case 6: - case 7: - case 8: - assert(!"Error 6~8"); - break; - case 9: - while (true) - { - } - break; - default: - assert(!"shouldn't reach here."); - break; - } - } - } -#endif assert(varTypeIsStruct(TypeGet())); if (OperIs(GT_LCL_VAR, GT_STORE_LCL_VAR)) diff --git a/src/coreclr/jit/jitconfigvalues.h b/src/coreclr/jit/jitconfigvalues.h index dc0aaaa02edf4..c00f066ffefcb 100644 --- a/src/coreclr/jit/jitconfigvalues.h +++ b/src/coreclr/jit/jitconfigvalues.h @@ -159,7 +159,7 @@ CONFIG_INTEGER(JitSplitFunctionSize, W("JitSplitFunctionSize"), 0) // On ARM, us CONFIG_INTEGER(JitSsaStress, W("JitSsaStress"), 0) // Perturb order of processing of blocks in SSA; 0 = no stress; 1 = // use method hash; * = supplied value as random hash CONFIG_INTEGER(JitStackChecks, W("JitStackChecks"), 0) -CONFIG_INTEGER(JitStress, W("JitStress"), 2) // Internal Jit stress mode: 0 = no stress, 2 = all stress, other = vary +CONFIG_INTEGER(JitStress, W("JitStress"), 0) // Internal Jit stress mode: 0 = no stress, 2 = all stress, other = vary // stress based on a hash of the method and this value CONFIG_INTEGER(JitStressBBProf, W("JitStressBBProf"), 0) // Internal Jit stress mode CONFIG_INTEGER(JitStressBiasedCSE, W("JitStressBiasedCSE"), 0x101) // Internal Jit stress mode: decimal bias value @@ -171,7 +171,7 @@ CONFIG_INTEGER(JitStressModeNamesOnly, W("JitStressModeNamesOnly"), 0) // Intern CONFIG_INTEGER(JitStressProcedureSplitting, W("JitStressProcedureSplitting"), 0) // Always split after the first basic // block. Skips functions with EH // for simplicity. -CONFIG_INTEGER(JitStressRegs, W("JitStressRegs"), 3) +CONFIG_INTEGER(JitStressRegs, W("JitStressRegs"), 0) CONFIG_STRING(JitStressRegsRange, W("JitStressRegsRange")) // Only apply JitStressRegs to methods in this hash range CONFIG_INTEGER(JitVNMapSelLimit, W("JitVNMapSelLimit"), 0) // If non-zero, assert if # of VNF_MapSelect applications diff --git a/src/coreclr/jit/lsra.cpp b/src/coreclr/jit/lsra.cpp index d2a295d1bc277..1203485793fa6 100644 --- a/src/coreclr/jit/lsra.cpp +++ b/src/coreclr/jit/lsra.cpp @@ -635,10 +635,6 @@ LinearScan::LinearScan(Compiler* theCompiler) currBuildNode = nullptr; lsraStressMask = JitConfig.JitStressRegs(); - if ((compiler->opts.jitFlags != nullptr) && compiler->opts.IsReadyToRun()) - { - lsraStressMask = 0; - } if (lsraStressMask != 0) { From a8170d34af5fb66e5ab8a6281a1b5e18554bad40 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 6 Dec 2022 06:49:30 -0800 Subject: [PATCH 45/49] Undo some yml changes --- eng/pipelines/coreclr/superpmi-diffs.yml | 2 +- eng/pipelines/coreclr/superpmi-replay.yml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/coreclr/superpmi-diffs.yml b/eng/pipelines/coreclr/superpmi-diffs.yml index a70ef9e488d24..5d992b33a3bbb 100644 --- a/eng/pipelines/coreclr/superpmi-diffs.yml +++ b/eng/pipelines/coreclr/superpmi-diffs.yml @@ -10,7 +10,7 @@ pr: # If you are changing these and start including eng/common, adjust the Maestro subscriptions # so that this build can block dependency auto-updates (this build is currently ignored) include: - - src/coreclr/jit/abc.txt + - src/coreclr/jit/* variables: - template: /eng/pipelines/common/variables.yml diff --git a/eng/pipelines/coreclr/superpmi-replay.yml b/eng/pipelines/coreclr/superpmi-replay.yml index d72668fc02d3b..88e575b37d72a 100644 --- a/eng/pipelines/coreclr/superpmi-replay.yml +++ b/eng/pipelines/coreclr/superpmi-replay.yml @@ -10,7 +10,10 @@ pr: - main paths: include: - - src/coreclr/jit/abc.txt + - src/coreclr/jit/* + - src/coreclr/tools/superpmi/* + exclude: + - src/coreclr/inc/jiteeversionguid.h variables: - template: /eng/pipelines/common/variables.yml From e115e6bca28732013bb53f6aeb3373f2b986950e Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 6 Dec 2022 06:51:09 -0800 Subject: [PATCH 46/49] Review feedback --- .../CoreCLRTestLibrary.csproj | 1 - .../CoreclrTestWrapperLib.cs | 32 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj b/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj index 95fd4c3e54d1e..04496ab0b05cf 100644 --- a/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj +++ b/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj @@ -26,6 +26,5 @@ - diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index bfadab167ad7c..e180036fe4943 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -433,23 +433,31 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream }; outputWriter.WriteLine($"Invoking {llvmSymbolizer.StartInfo.FileName} {llvmSymbolizer.StartInfo.Arguments}"); - if(!llvmSymbolizer.Start()) - { - outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); - } - using (var symbolizerWriter = llvmSymbolizer.StandardInput) + try { - symbolizerWriter.WriteLine(addrBuilder.ToString()); - } + if (!llvmSymbolizer.Start()) + { + outputWriter.WriteLine($"Unable to start {llvmSymbolizer.StartInfo.FileName}"); + } - symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); + using (var symbolizerWriter = llvmSymbolizer.StandardInput) + { + symbolizerWriter.WriteLine(addrBuilder.ToString()); + } - if(!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) - { + symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); + + if (!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) + { + outputWriter.WriteLine("Errors while running llvm-symbolizer --pretty-print"); + outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); + llvmSymbolizer.Kill(true); + return false; + } + } catch (Exception e) { outputWriter.WriteLine("Errors while running llvm-symbolizer --pretty-print"); - outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); - llvmSymbolizer.Kill(true); + outputWriter.WriteLine(e.ToString()); return false; } From d9127cde53b7d910c0f9d2c06a588cdf184862f5 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 6 Dec 2022 06:53:04 -0800 Subject: [PATCH 47/49] Undo runtime.yml changes --- eng/pipelines/runtime.yml | 2400 ++++++++++++++++++------------------- 1 file changed, 1200 insertions(+), 1200 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index db60a04ac049e..b420eb3c9f520 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -72,1208 +72,1208 @@ extends: jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml buildConfig: checked platforms: - # - Linux_x86 + - Linux_x86 + - Linux_x64 + - Linux_arm + - Linux_arm64 + - Linux_musl_arm + - Linux_musl_arm64 + - Linux_musl_x64 + - OSX_arm64 + - Tizen_armel + - windows_x86 + - windows_x64 + - windows_arm + - windows_arm64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build the whole product using GNU compiler toolchain + # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - Linux_x64 + container: debian-11-gcc12-amd64-20220511124845-b7a6185 + jobParameters: + testGroup: innerloop + compilerName: gcc + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR OSX_x64 checked + # Only when CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - OSX_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR release + # Always as they are needed by Installer and we always build and test the Installer. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: release + platforms: + - OSX_arm64 + - OSX_x64 + - Linux_x64 + - Linux_arm + - Linux_arm64 + - Linux_musl_x64 + - Linux_musl_arm + - Linux_musl_arm64 + - windows_x64 + - windows_x86 + - windows_arm + - windows_arm64 + - FreeBSD_x64 + jobParameters: + testGroup: innerloop + # Mono/runtimetests also need this, but skip for wasm + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR Formatting Job + # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # both Rolling and PR builds). + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + platforms: + - Linux_x64 + - windows_x64 + jobParameters: + condition: >- + and( + or( + eq(variables['Build.SourceBranchName'], 'main'), + eq(variables['System.PullRequest.TargetBranch'], 'main')), + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + eq(variables['isRollingBuild'], true))) + + # + # CoreCLR NativeAOT debug build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: debug + platforms: + - Linux_x64 + - windows_x64 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.runtime+clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # + # CoreCLR NativeAOT checked build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: checked + platforms: + - windows_x64 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.runtime+clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # + # CoreCLR NativeAOT release build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + platforms: + - Linux_x64 + - windows_x64 + - OSX_x64 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.runtime+clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # + # CoreCLR NativeAOT release build and libraries tests + # Only when CoreCLR or library is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + platforms: + - windows_arm64 + - Linux_arm64 + - OSX_arm64 + jobParameters: + testGroup: innerloop + isSingleFile: true + nameSuffix: NativeAOT + buildArgs: -s clr.runtime+clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isFullMatrix'], true)) + + # Build and test clr tools + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - Linux_x64 + jobParameters: + testGroup: clrTools + timeoutInMinutes: 120 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # Build Mono AOT offset headers once, for consumption elsewhere + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + buildConfig: release + platforms: + - Android_x64 + #- Browser_wasm - unused + - tvOS_arm64 + - iOS_arm64 + - MacCatalyst_x64 + jobParameters: + isOfficialBuild: ${{ variables.isOfficialBuild }} + # needed by crossaot + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # Build the whole product using Mono runtime + # Only when libraries, mono or installer are changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - tvOSSimulator_x64 + - iOSSimulator_x86 + - Linux_arm + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - iOS_arm + - Linux_musl_x64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # WebAssembly legs + # + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - Browser_wasm + buildAndRunWasi: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - normal + - WasmTestOnBrowser + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - Browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - WasmTestOnBrowser + + # EAT Library tests - only run on linux + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - Browser_wasm + nameSuffix: _EAT + runAOT: false + shouldRunSmokeOnly: false + alwaysRun: ${{ variables.isRollingBuild }} + + # AOT Library tests + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - Browser_wasm + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - Browser_wasm_win + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + + # Wasm.Build.Tests + - template: /eng/pipelines/common/templates/wasm-build-tests.yml + parameters: + platforms: + - Browser_wasm + - Browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + + # Wasm Debugger tests + - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + parameters: + platforms: + - Browser_wasm + - Browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + + # Wasm runtime tests + - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + parameters: + platforms: + - Browser_wasm + alwaysRun: ${{ variables.isRollingBuild }} + + # BUILD ONLY - Wasm Threading Legs + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - Browser_wasm + nameSuffix: _Threading + extraBuildArgs: /p:WasmEnableThreads=true + alwaysRun: ${{ variables.isRollingBuild }} + + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - Browser_wasm + nameSuffix: _Threading_PerfTracing + extraBuildArgs: /p:WasmEnablePerfTracing=true + alwaysRun: ${{ variables.isRollingBuild }} + + # + # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # Build the whole product using Mono and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - iOS_arm64 + - tvOS_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # MacCatalyst interp - requires AOT Compilation and Interp flags + # Build the whole product using Mono and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - MacCatalyst_x64 + - ${{ if eq(variables['isRollingBuild'], true) }}: + - MacCatalyst_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono and Installer on LLVMJIT mode + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - OSX_x64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMJIT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - Linux_x64 + - Linux_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMJIT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono and Installer on LLVMAOT mode + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Linux_x64 + - Linux_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAOT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - OSX_x64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAOT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono debug + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: debug + platforms: + - OSX_x64 + - OSX_arm64 + - Linux_x64 + - Linux_arm64 + # - Linux_musl_arm64 + - windows_x64 + - windows_x86 + # - windows_arm + # - windows_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release AOT cross-compilers + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: - Linux_x64 - # - Linux_arm # - Linux_arm64 - # - Linux_musl_arm # - Linux_musl_arm64 - # - Linux_musl_x64 - # - OSX_arm64 - # - Tizen_armel + - Windows_x64 # - windows_x86 - # - windows_x64 # - windows_arm # - windows_arm64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + #- mono_browser_offsets - unused + monoCrossAOTTargetOS: + - Android + #- Browser - unused + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - OSX_x64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + #- mono_browser_offsets - unused + - mono_tvos_offsets + - mono_ios_offsets + - mono_maccatalyst_offsets + monoCrossAOTTargetOS: + - Android + #- Browser - unused + - tvOS + - iOS + - MacCatalyst + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - Linux_x64 + # - Linux_musl_arm64 + - windows_x64 + - windows_x86 + # - windows_arm + # - windows_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release + # Only when libraries, mono, or the runtime tests changed + # Currently only these architectures are needed for the runtime tests. + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - OSX_x64 + - Linux_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release with LLVM AOT + # Only when mono, or the runtime tests changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - Linux_x64 + - Linux_arm64 + jobParameters: + runtimeVariant: llvmaot + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build libraries using live CoreLib + # These set of libraries are built always no matter what changed + # The reason for that is because Corelib and Installer needs it and + # These are part of the test matrix for Libraries changes. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - Linux_arm + - Linux_musl_arm + - Linux_musl_arm64 + - windows_arm + - windows_arm64 + - windows_x86 + jobParameters: + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - Linux_arm64 + - Linux_musl_x64 + - Linux_x64 + - OSX_arm64 + - OSX_x64 + - windows_x64 + - FreeBSD_x64 + jobParameters: + testScope: innerloop + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries debug build that only runs when coreclr is changed + # Only do this on PR builds since we use the Release builds for these test runs in CI + # and those are already built above + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Debug + platforms: + - windows_x86 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # + # Libraries release build that only runs when coreclr is changed in PRs + # We need these for checked coreclr + release libraries tests runs. + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - Linux_x64 + - windows_x64 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - windows_x86 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + framework: net48 + runTests: true + testScope: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - windows_x64 + jobParameters: + framework: allConfigurations + runTests: true + useHelix: false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Installer Build and Test + # These are always built since they only take like 15 minutes + # we expect these to be done before we finish libraries or coreclr testing. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - Linux_musl_arm + - Linux_musl_arm64 + - windows_x86 + - windows_arm + - windows_arm64 + - Linux_arm + jobParameters: + liveRuntimeBuildConfig: release + liveLibrariesBuildConfig: Release + runOnlyIfDependenciesSucceeded: true + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + buildConfig: Release + platforms: + - OSX_arm64 + - OSX_x64 + - Linux_x64 + - Linux_arm64 + - Linux_musl_x64 + - windows_x64 + - FreeBSD_x64 + jobParameters: + liveRuntimeBuildConfig: release + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runOnlyIfDependenciesSucceeded: true + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR Test builds using live libraries release build + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + buildConfig: checked + platforms: + - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR Test executions using live libraries + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - Linux_arm + - windows_x86 + - windows_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - OSX_x64 + - Linux_x64 + - Linux_arm64 + - windows_x64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml jobParameters: testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} condition: >- or( eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) - # # - # # Build the whole product using GNU compiler toolchain - # # When CoreCLR, Mono, Libraries, Installer and src/tests are changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - Linux_x64 - # container: debian-11-gcc12-amd64-20220511124845-b7a6185 - # jobParameters: - # testGroup: innerloop - # compilerName: gcc - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - OSX_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + eq(variables['isRollingBuild'], true)) # - # Build CoreCLR OSX_x64 checked - # Only when CoreCLR or Libraries is changed - # + # Mono Test builds with CoreCLR runtime tests using live libraries debug build + # Only when Mono is changed - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: checked + jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + buildConfig: release + runtimeFlavor: mono platforms: - - OSX_x64 + - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 jobParameters: testGroup: innerloop condition: >- or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) - # # - # # Build CoreCLR release - # # Always as they are needed by Installer and we always build and test the Installer. - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: release - # platforms: - # - OSX_arm64 - # - OSX_x64 - # - Linux_x64 - # - Linux_arm - # - Linux_arm64 - # - Linux_musl_x64 - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # - windows_arm - # - windows_arm64 - # - FreeBSD_x64 - # jobParameters: - # testGroup: innerloop - # # Mono/runtimetests also need this, but skip for wasm - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build CoreCLR Formatting Job - # # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - # # both Rolling and PR builds). - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - # platforms: - # - Linux_x64 - # - windows_x64 - # jobParameters: - # condition: >- - # and( - # or( - # eq(variables['Build.SourceBranchName'], 'main'), - # eq(variables['System.PullRequest.TargetBranch'], 'main')), - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - # eq(variables['isRollingBuild'], true))) - - # # - # # CoreCLR NativeAOT debug build and smoke tests - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: debug - # platforms: - # - Linux_x64 - # - windows_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - buildArgs: -s clr.runtime+clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isFullMatrix'], true)) - - # # - # # CoreCLR NativeAOT checked build and smoke tests - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: checked - # platforms: - # - windows_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - buildArgs: -s clr.runtime+clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isFullMatrix'], true)) - - # # - # # CoreCLR NativeAOT release build and smoke tests - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - Linux_x64 - # - windows_x64 - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - buildArgs: -s clr.runtime+clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - # extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isFullMatrix'], true)) - - # # - # # CoreCLR NativeAOT release build and libraries tests - # # Only when CoreCLR or library is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # platforms: - # - windows_arm64 - # - Linux_arm64 - # - OSX_arm64 - # jobParameters: - # testGroup: innerloop - # isSingleFile: true - # nameSuffix: NativeAOT - buildArgs: -s clr.runtime+clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isFullMatrix'], true)) - - # # Build and test clr tools - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - Linux_x64 - # jobParameters: - # testGroup: clrTools - # timeoutInMinutes: 120 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # Build Mono AOT offset headers once, for consumption elsewhere - # # Only when mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - # buildConfig: release - # platforms: - # - Android_x64 - # #- Browser_wasm - unused - # - tvOS_arm64 - # - iOS_arm64 - # - MacCatalyst_x64 - # jobParameters: - # isOfficialBuild: ${{ variables.isOfficialBuild }} - # # needed by crossaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # Build the whole product using Mono runtime - # # Only when libraries, mono or installer are changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - tvOSSimulator_x64 - # - iOSSimulator_x86 - # - Linux_arm - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - iOS_arm - # - Linux_musl_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # WebAssembly legs - # # - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # buildAndRunWasi: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - normal - # - WasmTestOnBrowser - - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - WasmTestOnBrowser - - # # EAT Library tests - only run on linux - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _EAT - # runAOT: false - # shouldRunSmokeOnly: false - # alwaysRun: ${{ variables.isRollingBuild }} - - # # AOT Library tests - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - Browser_wasm_win - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - - # # Wasm.Build.Tests - # - template: /eng/pipelines/common/templates/wasm-build-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - - # # Wasm Debugger tests - # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # - Browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - - # # Wasm runtime tests - # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - # parameters: - # platforms: - # - Browser_wasm - # alwaysRun: ${{ variables.isRollingBuild }} - - # # BUILD ONLY - Wasm Threading Legs - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _Threading - # extraBuildArgs: /p:WasmEnableThreads=true - # alwaysRun: ${{ variables.isRollingBuild }} - - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - Browser_wasm - # nameSuffix: _Threading_PerfTracing - # extraBuildArgs: /p:WasmEnablePerfTracing=true - # alwaysRun: ${{ variables.isRollingBuild }} - - # # - # # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - # # Build the whole product using Mono and run libraries tests - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - iOS_arm64 - # - tvOS_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # MacCatalyst interp - requires AOT Compilation and Interp flags - # # Build the whole product using Mono and run libraries tests - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - MacCatalyst_x64 - # - ${{ if eq(variables['isRollingBuild'], true) }}: - # - MacCatalyst_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # extraStepsTemplate: /eng/pipelines/libraries/helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono and Installer on LLVMJIT mode - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono and Installer on LLVMAOT mode - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono debug - # # Only when mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: debug - # platforms: - # - OSX_x64 - # - OSX_arm64 - # - Linux_x64 - # - Linux_arm64 - # # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release AOT cross-compilers - # # Only when mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # # - Linux_arm64 - # # - Linux_musl_arm64 - # - Windows_x64 - # # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # #- mono_browser_offsets - unused - # monoCrossAOTTargetOS: - # - Android - # #- Browser - unused - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - OSX_x64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # #- mono_browser_offsets - unused - # - mono_tvos_offsets - # - mono_ios_offsets - # - mono_maccatalyst_offsets - # monoCrossAOTTargetOS: - # - Android - # #- Browser - unused - # - tvOS - # - iOS - # - MacCatalyst - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release - # # Only when libraries or mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # # - Linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release - # # Only when libraries, mono, or the runtime tests changed - # # Currently only these architectures are needed for the runtime tests. - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - OSX_x64 - # - Linux_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build Mono release with LLVM AOT - # # Only when mono, or the runtime tests changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - Linux_x64 - # - Linux_arm64 - # jobParameters: - # runtimeVariant: llvmaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build libraries using live CoreLib - # # These set of libraries are built always no matter what changed - # # The reason for that is because Corelib and Installer needs it and - # # These are part of the test matrix for Libraries changes. - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - Linux_arm - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_arm - # - windows_arm64 - # - windows_x86 - # jobParameters: - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: release + runtimeFlavor: mono platforms: - # - Linux_arm64 - # - Linux_musl_x64 - - Linux_x64 - # - OSX_arm64 - - OSX_x64 - # - windows_x64 - # - FreeBSD_x64 + - windows_x64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml jobParameters: - testScope: innerloop - condition: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + liveRuntimeBuildConfig: release + runtimeVariant: minijit + condition: >- or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) # - # Libraries debug build that only runs when coreclr is changed - # Only do this on PR builds since we use the Release builds for these test runs in CI - # and those are already built above + # Build the whole product using Mono and run runtime tests # - - ${{ if eq(variables['isRollingBuild'], false) }}: - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Debug - platforms: - - windows_x86 - jobParameters: - condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - OSX_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests + runtimeVariant: minijit + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release # - # Libraries release build that only runs when coreclr is changed in PRs - # We need these for checked coreclr + release libraries tests runs. + # Mono CoreCLR runtime Test executions using live libraries in interpreter mode + # Only when Mono is changed + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - OSX_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests + runtimeVariant: monointerpreter + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release # - - ${{ if eq(variables['isRollingBuild'], false) }}: - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: + # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT + # Only when Mono is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: - Linux_x64 - # - windows_x64 - jobParameters: - condition: >- - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation + #- Linux_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests + runtimeVariant: llvmaot + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + timeoutInMinutes: 180 + + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # framework: net48 - # runTests: true - # testScope: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - windows_x64 - # jobParameters: - # framework: allConfigurations - # runTests: true - # useHelix: false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Installer Build and Test - # # These are always built since they only take like 15 minutes - # # we expect these to be done before we finish libraries or coreclr testing. - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - Linux_musl_arm - # - Linux_musl_arm64 - # - windows_x86 - # - windows_arm - # - windows_arm64 - # - Linux_arm - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: Release - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: Release - # platforms: - # - OSX_arm64 - # - OSX_x64 - # - Linux_x64 - # - Linux_arm64 - # - Linux_musl_x64 - # - windows_x64 - # - FreeBSD_x64 - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # CoreCLR Test builds using live libraries release build - # Only when CoreCLR is changed + # + # Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT + # Only when Mono is changed # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: checked + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono platforms: - - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 + - Linux_x64 + - Linux_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 jobParameters: testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests + runtimeVariant: llvmfullaot + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + timeoutInMinutes: 300 + condition: >- or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isRollingBuild'], true)) + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release - # # - # # CoreCLR Test executions using live libraries - # # Only when CoreCLR is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - Linux_arm - # - windows_x86 - # - windows_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: Release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - + # + # Libraries Release Test Execution against a release mono runtime. + # Only when libraries or mono changed + # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + runtimeFlavor: mono + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: + # - windows_x64 - OSX_x64 + - Linux_arm64 - Linux_x64 - # - Linux_arm64 - # - windows_x64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + isOfficialBuild: false + runtimeDisplayName: mono + testScope: innerloop + liveRuntimeBuildConfig: release condition: >- or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), eq(variables['isRollingBuild'], true)) - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - OSX_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Mono Test builds with CoreCLR runtime tests using live libraries debug build - # # Only when Mono is changed - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - windows_x64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # liveRuntimeBuildConfig: release - # runtimeVariant: minijit - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Build the whole product using Mono and run runtime tests - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests - # runtimeVariant: minijit - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - - # # - # # Mono CoreCLR runtime Test executions using live libraries in interpreter mode - # # Only when Mono is changed - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - OSX_x64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests - # runtimeVariant: monointerpreter - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # # - # # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT - # # Only when Mono is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation - # #- Linux_arm64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests - # runtimeVariant: llvmaot - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true - # timeoutInMinutes: 180 - - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - - # # - # # Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT - # # Only when Mono is changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - Linux_x64 - # - Linux_arm64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests - # runtimeVariant: llvmfullaot - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true - # timeoutInMinutes: 300 - - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # extraStepsParameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - - # # - # # Libraries Release Test Execution against a release mono runtime. - # # Only when libraries or mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # - OSX_x64 - # - Linux_arm64 - # - Linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # runtimeDisplayName: mono - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Libraries Release Test Execution against a release mono interpreter runtime. - # # Only when libraries or mono changed - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # #- OSX_x64 - # - Linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # interpreter: true - # runtimeDisplayName: mono_interpreter - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Libraries Release Test Execution against a release coreclr runtime - # # Only when the PR contains a libraries change - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # Libraries Debug Test Execution against a release coreclr runtime - # # Only when the PR contains a libraries change - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: + # + # Libraries Release Test Execution against a release mono interpreter runtime. + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + runtimeFlavor: mono + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: # - windows_x64 - # - OSX_x64 - # - Linux_x64 - # - Linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + #- OSX_x64 + - Linux_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + interpreter: true + runtimeDisplayName: mono_interpreter + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Release Test Execution against a release coreclr runtime + # Only when the PR contains a libraries change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: Release + platforms: + - windows_x86 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Debug Test Execution against a release coreclr runtime + # Only when the PR contains a libraries change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - windows_x64 + - OSX_x64 + - Linux_x64 + - Linux_musl_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) # The next three jobs run checked coreclr + libraries tests. # The matrix looks like the following, where the right columns specify which configurations @@ -1290,27 +1290,27 @@ extends: # | linux-x64 | Release | Release | # | windows-x64 | Release | Release | - # # - # # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime - # # Only when the PR contains a coreclr change - # # - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - Linux_arm64 - # - windows_x86 - # - Linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) + # + # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime + # Only when the PR contains a coreclr change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - Linux_arm64 + - windows_x86 + - Linux_musl_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) # # Release Libraries Test Execution against a checked runtime @@ -1321,10 +1321,10 @@ extends: jobTemplate: /eng/pipelines/libraries/run-test-job.yml buildConfig: Release platforms: - # - Linux_musl_arm - # - Linux_musl_arm64 + - Linux_musl_arm + - Linux_musl_arm64 - Linux_x64 - # - windows_x64 + - windows_x64 helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml helixQueueGroup: libraries jobParameters: @@ -1352,40 +1352,40 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), eq(variables['isRollingBuild'], true)) - # # - # # Sourcebuild legs - # # We have 3 important legs for source-build: - # # - Centos.7 (ensures that RH keeps working) - # # - Linux-x64 portable (used for dependency flow and downstream PR verification) - # # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. - # # - # # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, - # # Run Linux-x64 in PR. - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # helixQueueGroup: pr - # platforms: - # - SourceBuild_Centos7_x64 - # jobParameters: - # nameSuffix: Centos7SourceBuild - # extraStepsParameters: - # name: SourceBuildPackages - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) - - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Debug - # helixQueueGroup: pr - # platforms: - # - SourceBuild_Banana24_x64 - # jobParameters: - # nameSuffix: Banana24SourceBuild - # extraStepsParameters: - # name: SourceBuildPackages - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) \ No newline at end of file + # + # Sourcebuild legs + # We have 3 important legs for source-build: + # - Centos.7 (ensures that RH keeps working) + # - Linux-x64 portable (used for dependency flow and downstream PR verification) + # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. + # + # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.7 in rolling CI, + # Run Linux-x64 in PR. + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + helixQueueGroup: pr + platforms: + - SourceBuild_Centos7_x64 + jobParameters: + nameSuffix: Centos7SourceBuild + extraStepsParameters: + name: SourceBuildPackages + timeoutInMinutes: 95 + condition: eq(variables['isRollingBuild'], true) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Debug + helixQueueGroup: pr + platforms: + - SourceBuild_Banana24_x64 + jobParameters: + nameSuffix: Banana24SourceBuild + extraStepsParameters: + name: SourceBuildPackages + timeoutInMinutes: 95 + condition: eq(variables['isRollingBuild'], true) From f75986ceb7066657de8dc47dd6f8f5d683473f4d Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Tue, 6 Dec 2022 07:10:02 -0800 Subject: [PATCH 48/49] Add some comments --- .../Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index e180036fe4943..f2951e645a84e 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -349,6 +349,16 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream string contents = File.ReadAllText(crashReportJsonFile); dynamic crashReport = JsonSerializer.Deserialize(contents); var threads = crashReport["payload"]["threads"]; + + // The logic happens in 3 steps: + // 1. Read the crashReport.json file, locate all the addresses of interest and then build + // a string that will be passed to llvm-symbolizer. It is populated so that each address + // is in its separate line along with the file name, etc. Some TAGS are added in the + // string that is used in step 2. + // 2. llvm-symbolizer is ran and above string is passed as input. + // 3. After llvm-symbolizer completes, TAGS are used to format its output to print it in + // the way it will be printed by sos. + StringBuilder addrBuilder = new StringBuilder(); string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); foreach (var thread in threads) From 63a07b7cecbb7f8b6a5a421c8985e81baa5b00c8 Mon Sep 17 00:00:00 2001 From: Kunal Pathak Date: Wed, 14 Dec 2022 19:05:33 -0800 Subject: [PATCH 49/49] Address review feedback --- .../CoreclrTestWrapperLib.cs | 67 ++++++++++++------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index f2951e645a84e..51af242ae5f4f 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -223,8 +223,7 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) { createdump.StartInfo.FileName = "sudo"; - createdump.StartInfo.Arguments = $"{createdumpPath} --crashreport " + arguments; - createdump.StartInfo.EnvironmentVariables.Add("DOTNET_DbgEnableElfDumpOnMacOS", "1"); + createdump.StartInfo.Arguments = $"{createdumpPath} --crashreport {arguments}"; crashReportPresent = true; } @@ -270,34 +269,41 @@ static bool CollectCrashDump(Process process, string crashDumpPath, StreamWriter static bool RunProcess(string fileName, string arguments) { - Process proc = new Process(); - - proc.StartInfo.FileName = fileName; - proc.StartInfo.Arguments = arguments; - proc.StartInfo.UseShellExecute = false; - proc.StartInfo.RedirectStandardOutput = true; - proc.StartInfo.RedirectStandardError = true; + Process proc = new Process() + { + StartInfo = new ProcessStartInfo() + { + FileName = fileName, + Arguments = arguments, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + } + }; Console.WriteLine($"Invoking: {proc.StartInfo.FileName} {proc.StartInfo.Arguments}"); proc.Start(); - string stdout = proc.StandardOutput.ReadToEnd(); - if (!string.IsNullOrEmpty(stdout) ) - { - Console.WriteLine($"stdout: {stdout}"); - } - string stderr = proc.StandardError.ReadToEnd(); - if (!string.IsNullOrEmpty(stderr) ) - { - Console.WriteLine($"stderr: {stderr}"); - } - if (!proc.WaitForExit(DEFAULT_TIMEOUT_MS)) + Task stdOut = proc.StandardOutput.ReadToEndAsync(); + Task stdErr = proc.StandardError.ReadToEndAsync(); + if(!proc.WaitForExit(DEFAULT_TIMEOUT_MS)) { proc.Kill(true); Console.WriteLine($"Timedout: '{fileName} {arguments}"); return false; } + Task.WaitAll(stdOut, stdErr); + string output = stdOut.Result; + string error = stdErr.Result; + if (!string.IsNullOrWhiteSpace(output)) + { + Console.WriteLine($"stdout: {output}"); + } + if (!string.IsNullOrWhiteSpace(error)) + { + Console.WriteLine($"stderr: {error}"); + } return true; } @@ -456,15 +462,30 @@ static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, Stream symbolizerWriter.WriteLine(addrBuilder.ToString()); } - symbolizerOutput = llvmSymbolizer.StandardOutput.ReadToEnd(); + Task stdout = llvmSymbolizer.StandardOutput.ReadToEndAsync(); + Task stderr = llvmSymbolizer.StandardError.ReadToEndAsync(); + bool fSuccess = llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS); + + Task.WaitAll(stdout, stderr); - if (!llvmSymbolizer.WaitForExit(DEFAULT_TIMEOUT_MS)) + if (!fSuccess) { outputWriter.WriteLine("Errors while running llvm-symbolizer --pretty-print"); - outputWriter.WriteLine(llvmSymbolizer.StandardError.ReadToEnd()); + string output = stdout.Result; + string error = stderr.Result; + + Console.WriteLine("llvm-symbolizer stdout:"); + Console.WriteLine(output); + Console.WriteLine("llvm-symbolizer stderr:"); + Console.WriteLine(error); + llvmSymbolizer.Kill(true); + return false; } + + symbolizerOutput = stdout.Result; + } catch (Exception e) { outputWriter.WriteLine("Errors while running llvm-symbolizer --pretty-print"); outputWriter.WriteLine(e.ToString());