From 2d1eafc27bab0c79647aade2e926fb13cafcec14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:02:29 -0800 Subject: [PATCH 01/63] [DO NOT MERGE | REVERT] - Forced AV in brotli native code. Disable unused helix legs temporarily. --- eng/pipelines/runtime.yml | 1592 +++++++++++------------ src/native/external/brotli/dec/decode.c | 1 + 2 files changed, 797 insertions(+), 796 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 21568cd53c8ab3..d2a4f7e267ad7b 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -431,603 +431,603 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.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 - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: false - # 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 - - 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: - - linux_musl_x64 - - linux_riscv64 - 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 - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - scenarios: - - normal - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - 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 }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # 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 }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # For Wasm.Build.Tests - runtime pack builds - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - nameSuffix: SingleThreaded - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - publishArtifactsForWorkload: true - publishWBT: true - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - nameSuffix: MultiThreaded - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - publishArtifactsForWorkload: true - publishWBT: false - - # Browser Wasm.Build.Tests - - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # # 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 + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: false + # # 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 + # - 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: + # - linux_musl_x64 + # - linux_riscv64 + # 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 + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # scenarios: + # - normal + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # 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 }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # 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 }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # For Wasm.Build.Tests - runtime pack builds + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + # nameSuffix: SingleThreaded + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # publishArtifactsForWorkload: true + # publishWBT: true + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + # nameSuffix: MultiThreaded + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # publishArtifactsForWorkload: true + # publishWBT: false + + # # Browser Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - # WASI/WASM - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - alwaysRun: ${{ variables.isRollingBuild }} - - # - # Android devices - # 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: - - android_arm - - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true - timeoutInMinutes: 480 - 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 - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # 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: 480 - 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 - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # iOS/tvOS devices - # Build the whole product using Native AOT 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: coreclr - platforms: - - ios_arm64 - - tvos_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: coreclrContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_NativeAOT - buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['coreclrContainsChange'], 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 - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 - - linux_arm64 - - linux_musl_arm64 - - windows_arm64 - - windows_x64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - monoCrossAOTTargetOS: - - android - - browser - 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 - - osx_arm64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_tvos_offsets - - mono_ios_offsets - - mono_maccatalyst_offsets - monoCrossAOTTargetOS: - - android - - browser - - tvos - - ios - - maccatalyst - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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)) + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # Android devices + # # 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: + # - android_arm + # - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true + # timeoutInMinutes: 480 + # 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 + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # 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: 480 + # 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 + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # iOS/tvOS devices + # # Build the whole product using Native AOT 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: coreclr + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: coreclrContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_NativeAOT + # buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['coreclrContainsChange'], 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 + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 + # - linux_arm64 + # - linux_musl_arm64 + # - windows_arm64 + # - windows_x64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # 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 + # - osx_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # - mono_tvos_offsets + # - mono_ios_offsets + # - mono_maccatalyst_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # - tvos + # - ios + # - maccatalyst + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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 @@ -1277,207 +1277,207 @@ extends: 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 - - linux_arm64 - 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)) - - postBuildSteps: - - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # - # 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)) - postBuildSteps: - - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # - # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) - postBuildSteps: - - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - parameters: - creator: dotnet-bot - llvmAotStepContainer: linux_x64_llvmaot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # - # 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)) + # # + # # 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 + # - linux_arm64 + # 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)) + + # postBuildSteps: + # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # # + # # 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)) + # postBuildSteps: + # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # # + # # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) + # postBuildSteps: + # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # parameters: + # creator: dotnet-bot + # llvmAotStepContainer: linux_x64_llvmaot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # # + # # 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 diff --git a/src/native/external/brotli/dec/decode.c b/src/native/external/brotli/dec/decode.c index ae5a3d3fa359e5..69a4250a376d7b 100644 --- a/src/native/external/brotli/dec/decode.c +++ b/src/native/external/brotli/dec/decode.c @@ -2035,6 +2035,7 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands( BrotliDecoderResult BrotliDecoderDecompress( size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size, uint8_t* decoded_buffer) { + *(int*)4242424 = 42; BrotliDecoderState s; BrotliDecoderResult result; size_t total_out = 0; From 5242ff3d8beb3dc64b9da57b33febf86f797bfbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:03:04 -0800 Subject: [PATCH 02/63] gen-debug-dump-docs.py: More meaningful messages --- eng/testing/gen-debug-dump-docs.py | 35 +++++++++++++++++------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/eng/testing/gen-debug-dump-docs.py b/eng/testing/gen-debug-dump-docs.py index 04f860b031452c..788e382ae16e29 100644 --- a/eng/testing/gen-debug-dump-docs.py +++ b/eng/testing/gen-debug-dump-docs.py @@ -2,6 +2,11 @@ import sys import platform +scriptname = os.path.basename(__file__) + +def print_detail(str): + print(f"{scriptname}: {str}") + build_id = '' job_id = '' workitem = '' @@ -16,7 +21,7 @@ idx += 1 if arg == '-buildid': if idx >= args_len or sys.argv[idx].startswith('-'): - print("Must specify a value for -buildid") + print_detail("Must specify a value for -buildid") exit(1) build_id = sys.argv[idx] @@ -24,7 +29,7 @@ if arg == '-jobid': if idx >= args_len or sys.argv[idx].startswith('-'): - print("Must specify a value for -jobid") + print_detail("Must specify a value for -jobid") exit(1) job_id = sys.argv[idx] @@ -32,7 +37,7 @@ if arg == '-workitem': if idx >= args_len or sys.argv[idx].startswith('-'): - print("Must specify a value for -workitem") + print_detail("Must specify a value for -workitem") exit(1) workitem = sys.argv[idx] @@ -40,7 +45,7 @@ if arg == '-templatedir': if idx >= args_len or sys.argv[idx].startswith('-'): - print("Must specify a value for -templatedir") + print_detail("Must specify a value for -templatedir") exit(1) template_dir = sys.argv[idx] @@ -48,7 +53,7 @@ if arg == '-outdir': if idx >= args_len or sys.argv[idx].startswith('-'): - print("Must specify a value for -outdir") + print_detail("Must specify a value for -outdir") exit(1) out_dir = sys.argv[idx] @@ -56,7 +61,7 @@ if arg == '-dumpdir': if idx >= args_len or sys.argv[idx].startswith('-'): - print("Must specify a value for -dumpdir") + print_detail("Must specify a value for -dumpdir") exit(1) dump_dir = sys.argv[idx] @@ -64,7 +69,7 @@ if arg == '-productver': if idx >= args_len or sys.argv[idx].startswith('-'): - print("Must specify a value for -productver") + print_detail("Must specify a value for -productver") exit(1) product_ver = sys.argv[idx] @@ -77,23 +82,23 @@ dump_names.append(filename) if len(dump_names) == 0: - print("Did not find dumps, skipping dump docs generation.") + print_detail("Did not find dumps, skipping dump docs generation.") exit(0) if build_id == '': - print("ERROR: unespecified required argument -buildid") + print_detail("ERROR: unespecified required argument -buildid") exit(1) if workitem == '': - print("ERROR: unespecified required argument -workitem") + print_detail("ERROR: unespecified required argument -workitem") exit(1) if job_id == '': - print("ERROR: unespecified required argument -jobid") + print_detail("ERROR: unespecified required argument -jobid") exit(1) if product_ver == '': - print("ERROR: unespecified required argument -productver") + print_detail("ERROR: unespecified required argument -productver") exit(1) replace_string = '' @@ -104,7 +109,7 @@ with open(source_file, 'r') as f: file_text = f.read() - print('read file: ' + source_file) + print_detail('read file: ' + source_file) replace_string = file_text.replace('%JOBID%', job_id) replace_string = replace_string.replace('%WORKITEM%', workitem) @@ -115,7 +120,7 @@ output_file = out_dir + dir_separator + 'how-to-debug-dump.md' with open(output_file, 'w+') as output: - print('writing output file: ' + output_file) + print_detail('writing output file: ' + output_file) lines = replace_string.split(os.linesep) lin_dump_dir= workitem + "/workitems/" + workitem + "/" @@ -133,4 +138,4 @@ else: output.write(line + os.linesep) -print('done writing debug dump information') +print_detail('done writing debug dump information') From 070fd630d77400da0051ea36e86568e0478b4849 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:03:16 -0800 Subject: [PATCH 03/63] XUnitLogChecker.cs: Minor fixes --- src/tests/Common/XUnitLogChecker/XUnitLogChecker.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/tests/Common/XUnitLogChecker/XUnitLogChecker.cs b/src/tests/Common/XUnitLogChecker/XUnitLogChecker.cs index be47532493dc7e..b1524eaf93cc45 100644 --- a/src/tests/Common/XUnitLogChecker/XUnitLogChecker.cs +++ b/src/tests/Common/XUnitLogChecker/XUnitLogChecker.cs @@ -489,15 +489,14 @@ static void PrintStackTracesFromDumps(string testLogPath) ); dumpsFound = Directory - .GetFiles(s_configuration.DumpsPath, "*coredump*.dmp") + .GetFiles(s_configuration.DumpsPath, "*.dmp") .Where(dmp => DateTime.Compare(File.GetCreationTime(dmp), testRunDateTime) >= 0); } else { - dumpsFound = Directory.GetFiles(s_configuration.DumpsPath, - "*coredump*.dmp"); + dumpsFound = Directory.GetFiles(s_configuration.DumpsPath, "*.dmp"); } if (dumpsFound.Count() == 0) @@ -510,7 +509,7 @@ static void PrintStackTracesFromDumps(string testLogPath) { if (OperatingSystem.IsWindows()) { - WriteLineTimestamp("Reading crash dump '{dumpPath}'..."); + WriteLineTimestamp($"Reading crash dump '{dumpPath}'..."); WriteLineTimestamp("Stack Trace Found:\n"); CoreclrTestWrapperLib.TryPrintStackTraceFromDmp(dumpPath, @@ -527,7 +526,7 @@ static void PrintStackTracesFromDumps(string testLogPath) continue; } - WriteLineTimestamp("Reading crash report '{crashReportPath}'..."); + WriteLineTimestamp($"Reading crash report '{crashReportPath}'..."); WriteLineTimestamp("Stack Trace Found:\n"); CoreclrTestWrapperLib.TryPrintStackTraceFromCrashReport(crashReportPath, From c178f37ee9c08a43cbb0553664f239a0266ee8a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:04:06 -0800 Subject: [PATCH 04/63] CoreclrTestWrapperLib.cs: Avoid passing null coreRoot string to Path.Combine in AppendAddress. --- src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 6b55dbaf77652f..69f3a302f1d4ad 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -424,7 +424,7 @@ public static bool TryPrintStackTraceFromCrashReport(string crashReportJsonFile, // the way it will be printed by sos. StringBuilder addrBuilder = new StringBuilder(); - string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); + string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT") ?? string.Empty; foreach (var thread in threads) { From ce72a2a4fbda1c719a13ab3819656cfe5eafaa8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:04:31 -0800 Subject: [PATCH 05/63] RunnerTemplate.cmd: Invoke XUnitLogChecker --- eng/testing/RunnerTemplate.cmd | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd index 4f4646a72315d6..833497f3560b43 100644 --- a/eng/testing/RunnerTemplate.cmd +++ b/eng/testing/RunnerTemplate.cmd @@ -92,6 +92,13 @@ if %_exit_code%==1 ( ) ) ) + +echo ----- start =============== XUnitLogChecker Output ===================================================== +%RUNTIME_PATH%\dotnet.exe --roll-forward Major %HELIX_CORRELATION_PAYLOAD%\XUnitLogChecker.dll --dumps-path %HELIX_DUMP_FOLDER% +set xunitlogchecker_exit_code=%ERRORLEVEL% +if %xunitlogchecker_exit_code% NEQ 0 set _exit_code=%xunitlogchecker_exit_code% +echo ----- end =============== XUnitLogChecker Output - exit code %xunitlogchecker_exit_code% =============== + exit /b %_exit_code% :: ========================= END Test Execution ================================= From a57ced6f38571498e76bc3ef9614e3006266e03e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:04:37 -0800 Subject: [PATCH 06/63] RunnerTemplate.sh: Invoke XUnitLogChecker --- eng/testing/RunnerTemplate.sh | 123 ++++++++++++++-------------------- 1 file changed, 52 insertions(+), 71 deletions(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 9252c30576ed96..2ca0b0a39adf36 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -54,76 +54,24 @@ exitcode_list[131]="SIGQUIT Ctrl-\ occurred. Core dumped." exitcode_list[132]="SIGILL Illegal Instruction. Core dumped. Likely codegen issue." exitcode_list[133]="SIGTRAP Breakpoint hit. Core dumped." exitcode_list[134]="SIGABRT Abort. Managed or native assert, or runtime check such as heap corruption, caused call to abort(). Core dumped." -exitcode_list[135]="IGBUS Unaligned memory access. Core dumped." +exitcode_list[135]="IGBUS Unaligned memory access. Core dumped." exitcode_list[136]="SIGFPE Bad floating point arguments. Core dumped." exitcode_list[137]="SIGKILL Killed eg by kill" exitcode_list[139]="SIGSEGV Illegal memory access. Deref invalid pointer, overrunning buffer, stack overflow etc. Core dumped." exitcode_list[143]="SIGTERM Terminated. Usually before SIGKILL." exitcode_list[159]="SIGSYS Bad System Call." -function print_info_from_core_file_using_lldb { +function move_core_file_to_temp_location { local core_file_name=$1 - local executable_name=$2 - local plugin_path_name="$RUNTIME_PATH/shared/Microsoft.NETCore.App/9.9.9/libsosplugin.so" - # check for existence of lldb on the path - hash lldb 2>/dev/null || { echo >&2 "lldb was not found. Unable to print core file."; return; } + # Append the dmp extension to ensure XUnitLogChecker finds it + local new_location=$HELIX_DUMP_FOLDER/core.$RANDOM.dmp - # pe, clrstack, and dumpasync are defined in libsosplugin.so - if [ ! -f $plugin_path_name ]; then - echo $plugin_path_name cannot be found. - return - fi - - echo ----- start =============== lldb Output ===================================================== - echo Printing managed exceptions, managed call stacks, and async state machines. - lldb -O "settings set target.exec-search-paths $RUNTIME_PATH" -o "plugin load $plugin_path_name" -o "clrthreads -managedexception" -o "pe -nested" -o "clrstack -all -a -f" -o "dumpasync -fields -stacks -roots" -o "quit" --core $core_file_name $executable_name - echo ----- end =============== lldb Output ======================================================= -} - -function print_info_from_core_file_using_gdb { - local core_file_name=$1 - local executable_name=$2 - - # Check for the existence of GDB on the path - hash gdb 2>/dev/null || { echo >&2 "GDB was not found. Unable to print core file."; return; } - - echo ----- start =============== GDB Output ===================================================== - # Open the dump in GDB and print the stack from each thread. We can add more - # commands here if desired. - echo printing native stack. - gdb --batch -ex "thread apply all bt full" -ex "quit" $executable_name $core_file_name - echo ----- end =============== GDB Output ======================================================= -} - -function print_info_from_core_file { - local core_file_name=$1 - local executable_name=$RUNTIME_PATH/$2 - - if ! [ -e $executable_name ]; then - echo "Unable to find executable $executable_name" - return - elif ! [ -e $core_file_name ]; then - echo "Unable to find core file $core_file_name" - return - fi - echo "Printing info from core file $core_file_name" - print_info_from_core_file_using_gdb $core_file_name $executable_name - print_info_from_core_file_using_lldb $core_file_name $executable_name -} - -function copy_core_file_to_temp_location { - local core_file_name=$1 - - local storage_location="/tmp/coredumps" - - # Create the directory (this shouldn't fail even if it already exists). - mkdir -p $storage_location - - local new_location=$storage_location/core.$RANDOM - - echo "Copying core file $core_file_name to $new_location in case you need it." + echo "Copying dump file '$core_file_name' to '$new_location'" cp $core_file_name $new_location + + # Delete the old one + rm $core_file_name } # ========================= BEGIN Core File Setup ============================ @@ -155,6 +103,10 @@ elif [[ "$(uname -s)" == "Linux" ]]; then ulimit -c unlimited fi + +export DOTNET_DbgEnableMiniDump=1 +export DOTNET_EnableCrashReport=1 +export DOTNET_DbgMiniDumpName=$HELIX_DUMP_FOLDER/coredump.%d.dmp # ========================= END Core File Setup ============================== # ========================= BEGIN support for SuperPMI collection ============================== @@ -230,7 +182,7 @@ if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then have_sleep=$(which sleep) if [ -x "$have_sleep" ]; then - echo Waiting a few seconds for any dump to be written.. + echo Waiting a few seconds for any dump to be written... sleep 10s fi fi @@ -239,7 +191,7 @@ if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then echo cat /proc/sys/kernel/core_uses_pid: $(cat /proc/sys/kernel/core_uses_pid) echo cat /proc/sys/kernel/coredump_filter: $(cat /proc/sys/kernel/coredump_filter) - echo Looking around for any Linux dump.. + echo Looking around for any Linux dumps... # Depending on distro/configuration, the core files may either be named "core" # or "core." by default. We read /proc/sys/kernel/core_uses_pid to @@ -252,18 +204,47 @@ if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then if [[ "$core_name_uses_pid" == "1" ]]; then # We don't know what the PID of the process was, so let's look at all core # files whose name matches core.NUMBER - echo Looking for files matching core.* ... - for f in core.*; do - [[ $f =~ core.[0-9]+ ]] && print_info_from_core_file "$f" "dotnet" && copy_core_file_to_temp_location "$f" && rm "$f" + echo "Looking for files matching core.*" + for f in $(find . -name "core.*"); do + [[ $f =~ core.[0-9]+ ]] && move_core_file_to_temp_location "$f" done - elif [ -f core ]; then - echo found a dump named core in $EXECUTION_DIR ! - print_info_from_core_file "core" "dotnet" - copy_core_file_to_temp_location "core" - rm "core" + fi + + if [ -f core ]; then + move_core_file_to_temp_location "core" + fi + + total_dumps=$(find $HELIX_DUMP_FOLDER -name "*.dmp" | wc -l) + + echo ----- start =============== XUnitLogChecker Output ===================================================== + xunitlogchecker_exit_code=0 + if [ $total_dumps -gt 0 ]; then + + echo "Total dumps found in $HELIX_DUMP_FOLDER: $total_dumps" + xunitlogchecker_file_name="$HELIX_CORRELATION_PAYLOAD/XUnitLogChecker.dll" + dotnet_file_name="$RUNTIME_PATH/dotnet" + + if [ ! -f $dotnet_file_name ]; then + echo "'$dotnet_file_name' was not found. Unable to run XUnitLogChecker." + xunitlogchecker_exit_code=1 + elif [ ! -f $xunitlogchecker_file_name ]; then + echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." + xunitlogchecker_exit_code=2 + else + cmd="$dotnet_file_name --roll-forward Major $xunitlogchecker_file_name --dumps-path $HELIX_DUMP_FOLDER" + echo "$cmd" + $cmd + xunitlogchecker_exit_code=$? + fi else - echo ... found no dump in $PWD + echo "No dumps found." fi + + if [ $xunitlogchecker_exit_code -ne 0 ]; then + test_exitcode = $xunitlogchecker_exit_code + fi + echo ----- end =============== XUnitLogChecker Output - exit code $xunitlogchecker_exit_code =========================== + fi popd >/dev/null # ======================== END Core File Inspection ========================== From 6d04923346bd599ccea3e972e7808e691ab3a560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:05:11 -0800 Subject: [PATCH 07/63] sendtohelix.proj: Set __TestArchitecture and build XUnitLogChecker --- src/libraries/sendtohelixhelp.proj | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 700a08bdf30bd3..144a13df993d74 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -175,7 +175,6 @@ - @@ -233,6 +232,35 @@ + + true + + + + + + $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)tests/Common/XUnitLogChecker')) + + + + + + + + + + + + + $(HelixPreCommands); + set __TestArchitecture=$(TargetArchitecture) + + + $(HelixPreCommands); + export __TestArchitecture=$(TargetArchitecture) + + + + true $(WASMTIME_PATH) $([MSBuild]::NormalizeDirectory($(ArtifactsObjDir), 'wasmtime')) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index f04addcc43559e..5e457fd1369151 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -233,7 +233,6 @@ - true $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 2a3e353dd7ac11..42fb563a5341ac 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -705,7 +705,6 @@ - true $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)XUnitLogChecker')) From fb616c5ae977ca24f6d86c0116d3cd7a2d9b502c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Wed, 8 Nov 2023 11:10:19 -0800 Subject: [PATCH 12/63] Simplify project reference in tests.proj --- src/libraries/tests.proj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 42fb563a5341ac..a086084d80dc54 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -709,10 +709,9 @@ - - Date: Wed, 8 Nov 2023 11:13:10 -0800 Subject: [PATCH 13/63] Remove coredump_filter and ulimit configuration, since helix machines already enable that. --- eng/testing/RunnerTemplate.sh | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 4cd732d791f453..3e558d0e9cf2e7 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -89,21 +89,6 @@ if [[ "$(uname -s)" == "Darwin" ]]; then ulimit -c 0 fi -elif [[ "$(uname -s)" == "Linux" ]]; then - # On Linux, we'll enable core file generation unconditionally, and if a dump - # is generated, we will print some useful information from it and delete the - # dump immediately. - - if [ -e /proc/self/coredump_filter ]; then - # Include memory in private and shared file-backed mappings in the dump. - # This ensures that we can see disassembly from our shared libraries when - # inspecting the contents of the dump. See 'man core' for details. - echo -n 0x3F > /proc/self/coredump_filter - fi - - ulimit -c unlimited -fi - export DOTNET_DbgEnableMiniDump=1 export DOTNET_EnableCrashReport=1 export DOTNET_DbgMiniDumpName=$HELIX_DUMP_FOLDER/coredump.%d.dmp From 044cb20903b7dff6adedb28373b8f991f36f72ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 10:07:09 -0800 Subject: [PATCH 14/63] Rename IsTargetOSSupportedByXUnitLogChecker to IsXUnitLogCheckerSupported because it also checks for framework and flavor. Move it after Subsets.props to have RuntimeFlavor available. Add XUnitLogCheckerLibraryOutputDirectory property with the path where theproject should be built and also get the zip created. --- Directory.Build.props | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 410530a9d77983..be78bd1169dc44 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -181,9 +181,6 @@ $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'coreclr', '$(TargetOS).$(TargetArchitecture).$(RuntimeConfiguration)')) $(CoreCLRToolPath) - - true - $(WASMTIME_PATH) $([MSBuild]::NormalizeDirectory($(ArtifactsObjDir), 'wasmtime')) true @@ -335,6 +332,13 @@ true + + + false + true + + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'helix', 'XUnitLogChecker')) + From 2732b61aa1d26983718f6f67ffa30b28068415e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 10:08:57 -0800 Subject: [PATCH 15/63] Skip XUnitLogChecker execution in Net48 libraries test runs. --- eng/testing/RunnerTemplate.cmd | 9 +++++++++ src/libraries/sendtohelixhelp.proj | 9 +++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd index d8c1b53979293d..2bd11fb94d0207 100644 --- a/eng/testing/RunnerTemplate.cmd +++ b/eng/testing/RunnerTemplate.cmd @@ -93,6 +93,13 @@ if %_exit_code%==1 ( ) ) +if NOT DEFINED __TestTargetFrameworkIdentifier ( + GOTO SKIP_XUNITLOGCHECKER +) +if NOT %__TestTargetFrameworkIdentifier% == ".NETCoreApp" ( + GOTO SKIP_XUNITLOGCHECKER +) + echo ----- start =============== XUnitLogChecker Output ===================================================== set DOTNET_EXE=%RUNTIME_PATH%\dotnet.exe @@ -120,6 +127,8 @@ if %XUNITLOGCHECKER_EXIT_CODE% NEQ 0 ( echo ----- end =============== XUnitLogChecker Output - exit code %XUNITLOGCHECKER_EXIT_CODE% =============== +:SKIP_XUNITLOGCHECKER + exit /b %_exit_code% :: ========================= END Test Execution ================================= diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 5e457fd1369151..0ef87042f0a466 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -232,12 +232,13 @@ - - + + $(HelixPreCommands); - set __TestArchitecture=$(TargetArchitecture) + set __TestArchitecture=$(TargetArchitecture); + set __TestTargetFrameworkIdentifier=$(TargetFrameworkIdentifier) - + $(HelixPreCommands); export __TestArchitecture=$(TargetArchitecture) From e07e28b7a603d533a9f57398107e4fb1b838c6dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 10:09:22 -0800 Subject: [PATCH 16/63] Re-add the accidentally removed HelixCorrelationPayload, but with the zip file path now. --- src/libraries/sendtohelixhelp.proj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 0ef87042f0a466..4830c7504ef8a1 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -244,6 +244,10 @@ + + + + + + + + + + + + From b047c8c5abc64655e26fd4a64b4b4890e007a12a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 10:44:17 -0800 Subject: [PATCH 19/63] Condition the custom ZipTestArchive inside XUnitLogChecker.csproj --- src/tests/Common/XUnitLogChecker/XUnitLogChecker.csproj | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/tests/Common/XUnitLogChecker/XUnitLogChecker.csproj b/src/tests/Common/XUnitLogChecker/XUnitLogChecker.csproj index 83903a125d41be..9c4ed31c153f92 100644 --- a/src/tests/Common/XUnitLogChecker/XUnitLogChecker.csproj +++ b/src/tests/Common/XUnitLogChecker/XUnitLogChecker.csproj @@ -5,7 +5,6 @@ $(NetCoreAppToolCurrent) true true - $(XUnitLogCheckerLibrariesOutputDirectory) @@ -23,13 +22,13 @@ and then consume the same payload in both the coreclr and libraries tests. --> - + - + From 8189449d8e812227d6cce5cf3d26e1e1a1e8e0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 11:44:27 -0800 Subject: [PATCH 20/63] Separate framework check from IsXUnitLogCheckerSupported, the value is different depending on where it is checked. --- Directory.Build.props | 4 ++-- src/libraries/sendtohelixhelp.proj | 4 ++-- src/libraries/tests.proj | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index be78bd1169dc44..65000c1d72ced9 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -335,9 +335,9 @@ false - true + true - $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'helix', 'XUnitLogChecker')) + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'helix', 'XUnitLogChecker')) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 4830c7504ef8a1..3aeed0613db46e 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -232,7 +232,7 @@ - + $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture); @@ -244,7 +244,7 @@ - + diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 5e50b503815dbd..ea9271dfdd40a0 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -704,7 +704,7 @@ BuildInParallel="$(Samples_BuildInParallel)" /> - + From 3bd400f8313dfa480df241e7bc9fa47c4859080c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 11:45:08 -0800 Subject: [PATCH 21/63] Change cmd env var to int --- eng/testing/RunnerTemplate.cmd | 4 ++-- src/libraries/sendtohelixhelp.proj | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd index 2bd11fb94d0207..d559f1055829f8 100644 --- a/eng/testing/RunnerTemplate.cmd +++ b/eng/testing/RunnerTemplate.cmd @@ -93,10 +93,10 @@ if %_exit_code%==1 ( ) ) -if NOT DEFINED __TestTargetFrameworkIdentifier ( +if NOT DEFINED __IsXUnitLogCheckerSupported ( GOTO SKIP_XUNITLOGCHECKER ) -if NOT %__TestTargetFrameworkIdentifier% == ".NETCoreApp" ( +if NOT %__IsXUnitLogCheckerSupported%==1 ( GOTO SKIP_XUNITLOGCHECKER ) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 3aeed0613db46e..56a51c7633e356 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -233,10 +233,12 @@ + <_IsXUnitLogCheckerSupported Condition="$(TargetFrameworkIdentifier) == '.NETCoreApp'">1 + <_IsXUnitLogCheckerSupported Condition="$(TargetFrameworkIdentifier) != '.NETCoreApp'">0 $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture); - set __TestTargetFrameworkIdentifier=$(TargetFrameworkIdentifier) + set __IsXUnitLogCheckerSupported=$(_IsXUnitLogCheckerSupported) $(HelixPreCommands); From 0b5bd2adb2ed23090592833de9e78a230f247671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 12:12:45 -0800 Subject: [PATCH 22/63] typo typo typo --- Directory.Build.props | 2 +- src/libraries/sendtohelixhelp.proj | 4 ++-- src/libraries/tests.proj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 65000c1d72ced9..6ee05a6c1b88cd 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -337,7 +337,7 @@ false true - $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'helix', 'XUnitLogChecker')) + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'helix', 'XUnitLogChecker')) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 56a51c7633e356..19718011967f5a 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -232,7 +232,7 @@ - + <_IsXUnitLogCheckerSupported Condition="$(TargetFrameworkIdentifier) == '.NETCoreApp'">1 <_IsXUnitLogCheckerSupported Condition="$(TargetFrameworkIdentifier) != '.NETCoreApp'">0 @@ -246,7 +246,7 @@ - + diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index ea9271dfdd40a0..33b1865801ae12 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -704,7 +704,7 @@ BuildInParallel="$(Samples_BuildInParallel)" /> - + From 7123d0f48d32dd8e1d6ddc1e7538d95b4dd2881c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 14:50:52 -0800 Subject: [PATCH 23/63] Separate the directory paths into two, they have different purposes. --- Directory.Build.props | 8 +++----- src/libraries/sendtohelixhelp.proj | 2 +- src/tests/Common/XUnitLogChecker/XUnitLogChecker.csproj | 7 +++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 6ee05a6c1b88cd..08706580254cc9 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -179,8 +179,7 @@ $([MSBuild]::NormalizePath('$(MonoTargetsTasksDir)', 'MonoTargetsTasks.dll')) $([MSBuild]::NormalizePath('$(TestExclusionListTasksDir)', 'TestExclusionListTasks.dll')) $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'coreclr', '$(TargetOS).$(TargetArchitecture).$(RuntimeConfiguration)')) - $(CoreCLRToolPath) - + $(CoreCLRToolPath) $(WASMTIME_PATH) $([MSBuild]::NormalizeDirectory($(ArtifactsObjDir), 'wasmtime')) true @@ -336,9 +335,8 @@ false true - - $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'helix', 'XUnitLogChecker')) - + + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'XUnitLogChecker')) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 19718011967f5a..2a7d9c8679824c 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -247,7 +247,7 @@ - + - + + + From 384fdf515ac050c181d5bc26ce741ccdf02f3d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 15:30:01 -0800 Subject: [PATCH 24/63] Fix helix path --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 2a7d9c8679824c..e2627bd5c79286 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -247,7 +247,7 @@ - + false - true + true $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'XUnitLogChecker')) From 93e33c20228dc6f1652bfac16af28726ecd4d25e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 18:56:54 -0800 Subject: [PATCH 27/63] Always set the value of _IsXUnitLogCheckerSupported in the cmd and sh scripts. Only set it to true if XUnitLogChecker is available. --- src/libraries/sendtohelixhelp.proj | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 48af676c3bdab1..72a90cdc2d7456 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -232,13 +232,15 @@ + + <_IsXUnitLogCheckerSupported>0 + + <_IsXUnitLogCheckerSupported Condition="$(TargetFrameworkIdentifier) == '.NETCoreApp'">1 - <_IsXUnitLogCheckerSupported Condition="$(TargetFrameworkIdentifier) != '.NETCoreApp'">0 $(HelixPreCommands); - set __TestArchitecture=$(TargetArchitecture); - set __IsXUnitLogCheckerSupported=$(_IsXUnitLogCheckerSupported) + set __TestArchitecture=$(TargetArchitecture) $(HelixPreCommands); @@ -246,6 +248,18 @@ + + + + $(HelixPreCommands); + set __IsXUnitLogCheckerSupported=$(_IsXUnitLogCheckerSupported) + + + $(HelixPreCommands); + export __IsXUnitLogCheckerSupported=$(_IsXUnitLogCheckerSupported) + + + From d3fe8fa5a2266fa6d11b54d04aca1d3336611cdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 19:05:30 -0800 Subject: [PATCH 28/63] Add verbose messages for IsXUnitLogCeckerSupported possible values, and fix the output folder, zip extraction is done in the root. --- eng/testing/RunnerTemplate.cmd | 4 ++- eng/testing/RunnerTemplate.sh | 61 +++++++++++++++++++--------------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd index d559f1055829f8..42ccffbc4a0ce0 100644 --- a/eng/testing/RunnerTemplate.cmd +++ b/eng/testing/RunnerTemplate.cmd @@ -94,16 +94,18 @@ if %_exit_code%==1 ( ) if NOT DEFINED __IsXUnitLogCheckerSupported ( + echo The '__IsXUnitLogCheckerSupported' env var is not set. GOTO SKIP_XUNITLOGCHECKER ) if NOT %__IsXUnitLogCheckerSupported%==1 ( + echo XUnitLogChecker not supported for this test case. Skipping. GOTO SKIP_XUNITLOGCHECKER ) echo ----- start =============== XUnitLogChecker Output ===================================================== set DOTNET_EXE=%RUNTIME_PATH%\dotnet.exe -set XUNITLOGCHECKER_DLL=%HELIX_CORRELATION_PAYLOAD%\XUnitLogChecker\XUnitLogChecker.dll +set XUNITLOGCHECKER_DLL=%HELIX_CORRELATION_PAYLOAD%\XUnitLogChecker.dll set XUNITLOGCHECKER_COMMAND=%DOTNET_EXE% --roll-forward Major %XUNITLOGCHECKER_DLL% --dumps-path %HELIX_DUMP_FOLDER% set XUNITLOGCHECKER_EXIT_CODE=1 diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 3e558d0e9cf2e7..ecd062621bfa5d 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -199,37 +199,44 @@ if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then move_core_file_to_temp_location "core" fi - total_dumps=$(find $HELIX_DUMP_FOLDER -name "*.dmp" | wc -l) - - echo ----- start =============== XUnitLogChecker Output ===================================================== - xunitlogchecker_exit_code=0 - if [[ $total_dumps > 0 ]]; then - echo "Total dumps found in $HELIX_DUMP_FOLDER: $total_dumps" - xunitlogchecker_file_name="$HELIX_CORRELATION_PAYLOAD/XUnitLogChecker/XUnitLogChecker.dll" - dotnet_file_name="$RUNTIME_PATH/dotnet" - - if [[ ! -f $dotnet_file_name ]]; then - echo "'$dotnet_file_name' was not found. Unable to run XUnitLogChecker." - xunitlogchecker_exit_code=1 - elif [[ ! -f $xunitlogchecker_file_name ]]; then - echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." - xunitlogchecker_exit_code=2 + if [[ -z "$__IsXUnitLogCheckerSupported" ]]; then + echo "The '__IsXUnitLogCheckerSupported' env var is not set." + elif [[ "$__IsXUnitLogCheckerSupported" != "1" ]]; then + echo "XUnitLogChecker not supported for this test case. Skipping." + else + + total_dumps=$(find $HELIX_DUMP_FOLDER -name "*.dmp" | wc -l) + + echo ----- start =============== XUnitLogChecker Output ===================================================== + xunitlogchecker_exit_code=0 + if [[ $total_dumps > 0 ]]; then + echo "Total dumps found in $HELIX_DUMP_FOLDER: $total_dumps" + xunitlogchecker_file_name="$HELIX_CORRELATION_PAYLOAD/XUnitLogChecker.dll" + dotnet_file_name="$RUNTIME_PATH/dotnet" + + if [[ ! -f $dotnet_file_name ]]; then + echo "'$dotnet_file_name' was not found. Unable to run XUnitLogChecker." + xunitlogchecker_exit_code=1 + elif [[ ! -f $xunitlogchecker_file_name ]]; then + echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." + xunitlogchecker_exit_code=2 + else + echo "Executing XUnitLogChecker..." + cmd="$dotnet_file_name --roll-forward Major $xunitlogchecker_file_name --dumps-path $HELIX_DUMP_FOLDER" + echo "$cmd" + $cmd + xunitlogchecker_exit_code=$? + fi else - echo "Executing XUnitLogChecker..." - cmd="$dotnet_file_name --roll-forward Major $xunitlogchecker_file_name --dumps-path $HELIX_DUMP_FOLDER" - echo "$cmd" - $cmd - xunitlogchecker_exit_code=$? + echo "No dumps found." fi - else - echo "No dumps found." - fi - if [[ $xunitlogchecker_exit_code -ne 0 ]]; then - test_exitcode=$xunitlogchecker_exit_code - fi - echo ----- end =============== XUnitLogChecker Output - exit code $xunitlogchecker_exit_code =========================== + if [[ $xunitlogchecker_exit_code -ne 0 ]]; then + test_exitcode=$xunitlogchecker_exit_code + fi + echo ----- end =============== XUnitLogChecker Output - exit code $xunitlogchecker_exit_code =========================== + fi fi popd >/dev/null # ======================== END Core File Inspection ========================== From 01541fc9f5eaef2f2ff227021ff67c4ead4496a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 19:45:13 -0800 Subject: [PATCH 29/63] Try disabling using TestNativeAot instead --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 16071bf5bc8b31..86d01e081a1154 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -334,7 +334,7 @@ false - true + true $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'XUnitLogChecker')) From cda54c158faac37e04d4027a62ebfe952c342ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 20:04:43 -0800 Subject: [PATCH 30/63] Do not attempt to run libs.tests on XUnitLogChecker --- eng/testing/tests.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index f4bf46cd298cb0..9b4fda719ec1dc 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -156,7 +156,7 @@ TEST_ARCH=$(_AndroidArchitecture) - + "$(RunScriptOutputPath)" - - From 2c9ec704e6746e3a1f79828e9475b86b763b36cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 21:20:18 -0800 Subject: [PATCH 32/63] Better name for internal property in sendtohelix.proj --- src/libraries/sendtohelixhelp.proj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 72a90cdc2d7456..8e96b3693973cd 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -233,11 +233,11 @@ - <_IsXUnitLogCheckerSupported>0 + <_ShouldSetXUnitLogCheckerEnvVar>0 - - <_IsXUnitLogCheckerSupported Condition="$(TargetFrameworkIdentifier) == '.NETCoreApp'">1 + + <_ShouldSetXUnitLogCheckerEnvVar Condition="$(TargetFrameworkIdentifier) == '.NETCoreApp'">1 $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture) @@ -252,11 +252,11 @@ $(HelixPreCommands); - set __IsXUnitLogCheckerSupported=$(_IsXUnitLogCheckerSupported) + set __IsXUnitLogCheckerSupported=$(_ShouldSetXUnitLogCheckerEnvVar) $(HelixPreCommands); - export __IsXUnitLogCheckerSupported=$(_IsXUnitLogCheckerSupported) + export __IsXUnitLogCheckerSupported=$(_ShouldSetXUnitLogCheckerEnvVar) From 11fa84ab9dfa60304e38ad44d2b415d532d757a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 22:06:01 -0800 Subject: [PATCH 33/63] Temp var that prints literal value of IsXUnitLogCheckerSupported --- Directory.Build.props | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 86d01e081a1154..a005c71fb45ec0 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -334,9 +334,8 @@ false - true - - $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'XUnitLogChecker')) + true + '$(RuntimeFlavor)' == 'CoreCLR' and '$(TestNativeAot)' != 'true' and '$(TestRunNamePrefixSuffix)' != 'NativeAOT_Release' and '$(TargetOS)' != 'browser' and '$(TargetOS)' != 'wasi' and '$(TargetOS)' != 'ios' and '$(TargetOS)' != 'iossimulator' and '$(TargetOS)' != 'tvos' and '$(TargetOS)' != 'tvossimulator' and '$(TargetOS)' != 'maccatalyst' and '$(TargetOS)' != 'android' From c955c5ee293e15a841759ba7a61045214136cc30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Thu, 9 Nov 2023 22:06:38 -0800 Subject: [PATCH 34/63] Move the MSBuildProjectName condition to the RunTests target itself --- eng/testing/tests.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index 9b4fda719ec1dc..3411ec89167d2c 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -155,8 +155,8 @@ TEST_ARCH=$(_AndroidArchitecture) - - + + "$(RunScriptOutputPath)" - - - - false true - '$(RuntimeFlavor)' == 'CoreCLR' and '$(TestNativeAot)' != 'true' and '$(TestRunNamePrefixSuffix)' != 'NativeAOT_Release' and '$(TargetOS)' != 'browser' and '$(TargetOS)' != 'wasi' and '$(TargetOS)' != 'ios' and '$(TargetOS)' != 'iossimulator' and '$(TargetOS)' != 'tvos' and '$(TargetOS)' != 'tvossimulator' and '$(TargetOS)' != 'maccatalyst' and '$(TargetOS)' != 'android' diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 8e96b3693973cd..7d62b9483dcb07 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -271,6 +271,7 @@ such as the HelixWorkItem item group) before Helix "Test" target is invoked (as a normal target). --> + From 4c9a8ff7739179c168c21ed903f566242a29098a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 08:52:21 -0800 Subject: [PATCH 38/63] Put output directory somewhere else so we dont assume XUnitLogChecker is a test assembly. Also, helix can zip the output folder for us. --- Directory.Build.props | 1 + eng/testing/tests.targets | 2 +- src/libraries/sendtohelixhelp.proj | 2 +- src/libraries/tests.proj | 2 +- .../Common/XUnitLogChecker/XUnitLogChecker.csproj | 11 ----------- 5 files changed, 4 insertions(+), 14 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index a8a3049f7c45ca..20b88487a1ad3f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -335,6 +335,7 @@ false true + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'XUnitLogChecker')) diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index 3411ec89167d2c..f4bf46cd298cb0 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -155,7 +155,7 @@ TEST_ARCH=$(_AndroidArchitecture) - + "$(RunScriptOutputPath)" diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 7d62b9483dcb07..51dd4faf225075 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -261,7 +261,7 @@ - + - - - From 6f609e961a087b7f81290160c597685160ecbdc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 08:52:35 -0800 Subject: [PATCH 39/63] Remove the undefined env var check in the cmd. --- eng/testing/RunnerTemplate.cmd | 4 ---- 1 file changed, 4 deletions(-) diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd index 42ccffbc4a0ce0..1f362457a5f733 100644 --- a/eng/testing/RunnerTemplate.cmd +++ b/eng/testing/RunnerTemplate.cmd @@ -93,10 +93,6 @@ if %_exit_code%==1 ( ) ) -if NOT DEFINED __IsXUnitLogCheckerSupported ( - echo The '__IsXUnitLogCheckerSupported' env var is not set. - GOTO SKIP_XUNITLOGCHECKER -) if NOT %__IsXUnitLogCheckerSupported%==1 ( echo XUnitLogChecker not supported for this test case. Skipping. GOTO SKIP_XUNITLOGCHECKER From bf9680177111e115ba951aebe6471d767e1326bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 09:11:27 -0800 Subject: [PATCH 40/63] Use BuildTargetFramework to set the env var in sendtohelixhelp.proj --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 51dd4faf225075..543aa3ea6cce28 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -237,7 +237,7 @@ - <_ShouldSetXUnitLogCheckerEnvVar Condition="$(TargetFrameworkIdentifier) == '.NETCoreApp'">1 + <_ShouldSetXUnitLogCheckerEnvVar Condition="$(BuildTargetFramework) == '.NETCoreApp'">1 $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture) From ca3522ea4ba88ec1c9579498c85eef17df58ffdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 09:13:33 -0800 Subject: [PATCH 41/63] Use NetCoreAppCurrent --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 543aa3ea6cce28..286a216dca0349 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -237,7 +237,7 @@ - <_ShouldSetXUnitLogCheckerEnvVar Condition="$(BuildTargetFramework) == '.NETCoreApp'">1 + <_ShouldSetXUnitLogCheckerEnvVar Condition="$(BuildTargetFramework) == '$(NetCoreAppCurrent)'">1 $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture) From 03454245c744a0729aa8743d51298e91dee44e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 09:27:13 -0800 Subject: [PATCH 42/63] Fix temp conflict with base --- eng/pipelines/runtime.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index d2a4f7e267ad7b..f9d43eb5cccb9e 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -596,7 +596,7 @@ extends: # alwaysRun: ${{ variables.isRollingBuild }} # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # Build and Smoke Tests only - Wasm Threading Legs + # # Build and Smoke Tests only - Wasm Threading Legs # - template: /eng/pipelines/common/templates/wasm-library-tests.yml # parameters: # platforms: From 3ca551a8ce81c8ddd40fce8acaf72388a30a7ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 11:12:02 -0800 Subject: [PATCH 43/63] The Libraries Build leg needs to also publish the artifacts/bin/XUnitLogChecker folder. --- eng/pipelines/libraries/prepare-for-bin-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/pipelines/libraries/prepare-for-bin-publish.yml b/eng/pipelines/libraries/prepare-for-bin-publish.yml index fbdb90f18716b3..7ea6630fa51cdc 100644 --- a/eng/pipelines/libraries/prepare-for-bin-publish.yml +++ b/eng/pipelines/libraries/prepare-for-bin-publish.yml @@ -14,6 +14,7 @@ steps: ref/** runtime/** testhost/** + XUnitLogChecker/** - task: CopyFiles@2 displayName: Prepare bin folders to publish From c417c254ed6da9f270ef69cac38507bf0c321b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 11:12:10 -0800 Subject: [PATCH 44/63] Extra spacing --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 20b88487a1ad3f..518a538f777672 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -179,7 +179,7 @@ $([MSBuild]::NormalizePath('$(MonoTargetsTasksDir)', 'MonoTargetsTasks.dll')) $([MSBuild]::NormalizePath('$(TestExclusionListTasksDir)', 'TestExclusionListTasks.dll')) $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'coreclr', '$(TargetOS).$(TargetArchitecture).$(RuntimeConfiguration)')) - $(CoreCLRToolPath) + $(CoreCLRToolPath) $(WASMTIME_PATH) $([MSBuild]::NormalizeDirectory($(ArtifactsObjDir), 'wasmtime')) true From 5c46f37bcf501a83bccdb7119360f87e05b4d77b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 11:12:24 -0800 Subject: [PATCH 45/63] Only set envvars inside the condition --- src/libraries/sendtohelixhelp.proj | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 286a216dca0349..4c332f77dffe60 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -241,21 +241,11 @@ $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture) - - - $(HelixPreCommands); - export __TestArchitecture=$(TargetArchitecture) - - - - - - - $(HelixPreCommands); set __IsXUnitLogCheckerSupported=$(_ShouldSetXUnitLogCheckerEnvVar) $(HelixPreCommands); + export __TestArchitecture=$(TargetArchitecture) export __IsXUnitLogCheckerSupported=$(_ShouldSetXUnitLogCheckerEnvVar) From c2243dcf583963921b969ad4b07c907811cc5afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:19:53 -0800 Subject: [PATCH 46/63] The cmd condition does not work unless double quoted --- eng/testing/RunnerTemplate.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd index 1f362457a5f733..fb877e215bb0f3 100644 --- a/eng/testing/RunnerTemplate.cmd +++ b/eng/testing/RunnerTemplate.cmd @@ -93,7 +93,7 @@ if %_exit_code%==1 ( ) ) -if NOT %__IsXUnitLogCheckerSupported%==1 ( +if NOT "%__IsXUnitLogCheckerSupported%"=="1" ( echo XUnitLogChecker not supported for this test case. Skipping. GOTO SKIP_XUNITLOGCHECKER ) From d94e151cf8f57b2ff9fa036549ad5411b953e23c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:20:09 -0800 Subject: [PATCH 47/63] TMP: Printed final value --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 4c332f77dffe60..9952f52890afde 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -261,7 +261,7 @@ such as the HelixWorkItem item group) before Helix "Test" target is invoked (as a normal target). --> - + From 75a4033549ec4ed4631ff5502594c8d8586bcc2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 14:35:48 -0800 Subject: [PATCH 48/63] Add fi accidentally removed --- eng/testing/RunnerTemplate.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index ecd062621bfa5d..06ba93170c6e8a 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -88,6 +88,7 @@ if [[ "$(uname -s)" == "Darwin" ]]; then # https://github.com/dotnet/core-eng/issues/15597 ulimit -c 0 fi +fi export DOTNET_DbgEnableMiniDump=1 export DOTNET_EnableCrashReport=1 From d6da591967ce16b1ed7f400d5b35ff8426aece77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 14:36:23 -0800 Subject: [PATCH 49/63] Move the Linux-only code to its own if, and everything else should run in both Linux and OSX --- eng/testing/RunnerTemplate.sh | 99 +++++++++++++++++------------------ 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 06ba93170c6e8a..c5f93800362f5e 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -159,26 +159,10 @@ if [[ $test_exitcode -ne 0 ]]; then fi if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then - if [ -n "$HELIX_WORKITEM_PAYLOAD" ]; then - - # For abrupt failures, in Helix, dump some of the kernel log, in case there is a hint - if [[ $test_exitcode -ne 1 ]]; then - dmesg | tail -50 - fi - - have_sleep=$(which sleep) - if [ -x "$have_sleep" ]; then - echo Waiting a few seconds for any dump to be written... - sleep 10s - fi - fi - echo cat /proc/sys/kernel/core_pattern: $(cat /proc/sys/kernel/core_pattern) echo cat /proc/sys/kernel/core_uses_pid: $(cat /proc/sys/kernel/core_uses_pid) echo cat /proc/sys/kernel/coredump_filter: $(cat /proc/sys/kernel/coredump_filter) - echo Looking around for any Linux dumps... - # Depending on distro/configuration, the core files may either be named "core" # or "core." by default. We read /proc/sys/kernel/core_uses_pid to # determine which it is. @@ -186,11 +170,14 @@ if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then if [[ -e /proc/sys/kernel/core_uses_pid && "1" == $(cat /proc/sys/kernel/core_uses_pid) ]]; then core_name_uses_pid=1 fi + + # The osx dumps are too large to egress the machine + echo Looking around for any Linux dumps... if [[ "$core_name_uses_pid" == "1" ]]; then # We don't know what the PID of the process was, so let's look at all core # files whose name matches core.NUMBER - echo "Looking for files matching core.*" + echo "Looking for files matching core.* ..." for f in $(find . -name "core.*"); do [[ $f =~ core.[0-9]+ ]] && move_core_file_to_temp_location "$f" done @@ -199,46 +186,58 @@ if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then if [ -f core ]; then move_core_file_to_temp_location "core" fi +fi - if [[ -z "$__IsXUnitLogCheckerSupported" ]]; then - echo "The '__IsXUnitLogCheckerSupported' env var is not set." - elif [[ "$__IsXUnitLogCheckerSupported" != "1" ]]; then - echo "XUnitLogChecker not supported for this test case. Skipping." - else +if [ -n "$HELIX_WORKITEM_PAYLOAD" ]; then + # For abrupt failures, in Helix, dump some of the kernel log, in case there is a hint + if [[ $test_exitcode -ne 1 ]]; then + dmesg | tail -50 + fi - total_dumps=$(find $HELIX_DUMP_FOLDER -name "*.dmp" | wc -l) - - echo ----- start =============== XUnitLogChecker Output ===================================================== - xunitlogchecker_exit_code=0 - if [[ $total_dumps > 0 ]]; then - echo "Total dumps found in $HELIX_DUMP_FOLDER: $total_dumps" - xunitlogchecker_file_name="$HELIX_CORRELATION_PAYLOAD/XUnitLogChecker.dll" - dotnet_file_name="$RUNTIME_PATH/dotnet" - - if [[ ! -f $dotnet_file_name ]]; then - echo "'$dotnet_file_name' was not found. Unable to run XUnitLogChecker." - xunitlogchecker_exit_code=1 - elif [[ ! -f $xunitlogchecker_file_name ]]; then - echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." - xunitlogchecker_exit_code=2 - else - echo "Executing XUnitLogChecker..." - cmd="$dotnet_file_name --roll-forward Major $xunitlogchecker_file_name --dumps-path $HELIX_DUMP_FOLDER" - echo "$cmd" - $cmd - xunitlogchecker_exit_code=$? - fi - else - echo "No dumps found." - fi + have_sleep=$(which sleep) + if [ -x "$have_sleep" ]; then + echo Waiting a few seconds for any dump to be written... + sleep 10s + fi +fi - if [[ $xunitlogchecker_exit_code -ne 0 ]]; then - test_exitcode=$xunitlogchecker_exit_code +if [[ -z "$__IsXUnitLogCheckerSupported" ]]; then + echo "The '__IsXUnitLogCheckerSupported' env var is not set." +elif [[ "$__IsXUnitLogCheckerSupported" != "1" ]]; then + echo "XUnitLogChecker not supported for this test case. Skipping." +else + total_dumps=$(find $HELIX_DUMP_FOLDER -name "*.dmp" | wc -l) + + echo ----- start =============== XUnitLogChecker Output ===================================================== + xunitlogchecker_exit_code=0 + if [[ $total_dumps > 0 ]]; then + echo "Total dumps found in $HELIX_DUMP_FOLDER: $total_dumps" + xunitlogchecker_file_name="$HELIX_CORRELATION_PAYLOAD/XUnitLogChecker.dll" + dotnet_file_name="$RUNTIME_PATH/dotnet" + + if [[ ! -f $dotnet_file_name ]]; then + echo "'$dotnet_file_name' was not found. Unable to run XUnitLogChecker." + xunitlogchecker_exit_code=1 + elif [[ ! -f $xunitlogchecker_file_name ]]; then + echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." + xunitlogchecker_exit_code=2 + else + echo "Executing XUnitLogChecker..." + cmd="$dotnet_file_name --roll-forward Major $xunitlogchecker_file_name --dumps-path $HELIX_DUMP_FOLDER" + echo "$cmd" + $cmd + xunitlogchecker_exit_code=$? fi - echo ----- end =============== XUnitLogChecker Output - exit code $xunitlogchecker_exit_code =========================== + else + echo "No dumps found." + fi + if [[ $xunitlogchecker_exit_code -ne 0 ]]; then + test_exitcode=$xunitlogchecker_exit_code fi + echo ----- end =============== XUnitLogChecker Output - exit code $xunitlogchecker_exit_code =========================== fi + popd >/dev/null # ======================== END Core File Inspection ========================== # The helix work item should not exit with non-zero if tests ran and produced results From 65682937cac96fb1bdb77ae9ca9a7eb0003c10b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:49:12 -0800 Subject: [PATCH 50/63] Ensure the OSX core folder is also visited. --- eng/testing/RunnerTemplate.sh | 65 +++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index c5f93800362f5e..8f6e5e3c2a87a2 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -74,8 +74,40 @@ function move_core_file_to_temp_location { rm $core_file_name } +xunitlogchecker_exit_code=0 +function invoke_xunitlogchecker { + local dump_folder=$1 + + total_dumps=$(find $dump_folder -name "*.dmp" | wc -l) + + if [[ $total_dumps > 0 ]]; then + echo "Total dumps found in $dump_folder: $total_dumps" + xunitlogchecker_file_name="$HELIX_CORRELATION_PAYLOAD/XUnitLogChecker.dll" + dotnet_file_name="$RUNTIME_PATH/dotnet" + + if [[ ! -f $dotnet_file_name ]]; then + echo "'$dotnet_file_name' was not found. Unable to run XUnitLogChecker." + xunitlogchecker_exit_code=1 + elif [[ ! -f $xunitlogchecker_file_name ]]; then + echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." + xunitlogchecker_exit_code=2 + elif [[ ! -d dump_folder ]]; then + echo "The dump directory '$dump_folder' does not exist." + else + echo "Executing XUnitLogChecker in $dump_folder..." + cmd="$dotnet_file_name --roll-forward Major $xunitlogchecker_file_name --dumps-path $dump_folder" + echo "$cmd" + $cmd + xunitlogchecker_exit_code=$? + fi + else + echo "No dumps found in $dump_folder." + fi +} + # ========================= BEGIN Core File Setup ============================ -if [[ "$(uname -s)" == "Darwin" ]]; then +system_name="$(uname -s)" +if [[ $system_name == "Darwin" ]]; then # On OS X, we will enable core dump generation only if there are no core # files already in /cores/ at this point. This is being done to prevent # inadvertently flooding the CI machines with dumps. @@ -109,7 +141,7 @@ if [ ! -z $spmi_enable_collection ]; then fi mkdir -p $spmi_collect_dir export spmi_file_extension=so - if [[ "$(uname -s)" == "Darwin" ]]; then + if [[ $system_name == "Darwin" ]]; then export spmi_file_extension=dylib fi export SuperPMIShimLogPath=$spmi_collect_dir @@ -158,7 +190,7 @@ if [[ $test_exitcode -ne 0 ]]; then echo ulimit -c value: $(ulimit -c) fi -if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then +if [[ $system_name == "Linux" && $test_exitcode -ne 0 ]]; then echo cat /proc/sys/kernel/core_pattern: $(cat /proc/sys/kernel/core_pattern) echo cat /proc/sys/kernel/core_uses_pid: $(cat /proc/sys/kernel/core_uses_pid) echo cat /proc/sys/kernel/coredump_filter: $(cat /proc/sys/kernel/coredump_filter) @@ -206,30 +238,13 @@ if [[ -z "$__IsXUnitLogCheckerSupported" ]]; then elif [[ "$__IsXUnitLogCheckerSupported" != "1" ]]; then echo "XUnitLogChecker not supported for this test case. Skipping." else - total_dumps=$(find $HELIX_DUMP_FOLDER -name "*.dmp" | wc -l) - echo ----- start =============== XUnitLogChecker Output ===================================================== - xunitlogchecker_exit_code=0 - if [[ $total_dumps > 0 ]]; then - echo "Total dumps found in $HELIX_DUMP_FOLDER: $total_dumps" - xunitlogchecker_file_name="$HELIX_CORRELATION_PAYLOAD/XUnitLogChecker.dll" - dotnet_file_name="$RUNTIME_PATH/dotnet" + + invoke_xunitlogchecker "$HELIX_DUMP_FOLDER" - if [[ ! -f $dotnet_file_name ]]; then - echo "'$dotnet_file_name' was not found. Unable to run XUnitLogChecker." - xunitlogchecker_exit_code=1 - elif [[ ! -f $xunitlogchecker_file_name ]]; then - echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." - xunitlogchecker_exit_code=2 - else - echo "Executing XUnitLogChecker..." - cmd="$dotnet_file_name --roll-forward Major $xunitlogchecker_file_name --dumps-path $HELIX_DUMP_FOLDER" - echo "$cmd" - $cmd - xunitlogchecker_exit_code=$? - fi - else - echo "No dumps found." + # osx stores giant dumps in a separate folder + if [[ $system_name == "Darwin" ]]; then + invoke_xunitlogchecker "/cores" fi if [[ $xunitlogchecker_exit_code -ne 0 ]]; then From 85b5e0b22a9b8eb4336bae0a916ca4c90e681627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:56:02 -0800 Subject: [PATCH 51/63] Revert temporary changes --- eng/pipelines/runtime.yml | 1596 +++++++++++------------ src/libraries/sendtohelixhelp.proj | 2 - src/native/external/brotli/dec/decode.c | 1 - 3 files changed, 798 insertions(+), 801 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index f9d43eb5cccb9e..21568cd53c8ab3 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -431,603 +431,603 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.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 - # - tvos_arm64 - # - ios_arm64 - # - maccatalyst_x64 - # jobParameters: - # isOfficialBuild: false - # # 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 - # - 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: - # - linux_musl_x64 - # - linux_riscv64 - # 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 - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # scenarios: - # - normal - # - WasmTestOnBrowser - - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # 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 }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # 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 }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - browser_wasm_win - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - - # # For Wasm.Build.Tests - runtime pack builds - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - # nameSuffix: SingleThreaded - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # publishArtifactsForWorkload: true - # publishWBT: true - - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - # nameSuffix: MultiThreaded - # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # publishArtifactsForWorkload: true - # publishWBT: false - - # # Browser Wasm.Build.Tests - # - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # Wasm Debugger tests - # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # Wasm runtime tests - # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - # parameters: - # platforms: - # - browser_wasm - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # Build and Smoke Tests only - Wasm Threading Legs - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - browser_wasm - # nameSuffix: _Threading_Smoke - # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - WasmTestOnBrowser - - # # WASI/WASM - - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - wasi_wasm - # - wasi_wasm_win - # nameSuffix: '_Smoke' - # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - normal - - # - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml - # parameters: - # platforms: - # - wasi_wasm - # - wasi_wasm_win - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # alwaysRun: ${{ variables.isRollingBuild }} - - # # - # # Android devices - # # 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: - # - android_arm - # - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true - # timeoutInMinutes: 480 - # 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 - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # 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: 480 - # 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 - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # iOS/tvOS devices - # # Build the whole product using Native AOT 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: coreclr - # platforms: - # - ios_arm64 - # - tvos_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: coreclrContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_NativeAOT - # buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['coreclrContainsChange'], 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 - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 - # - linux_arm64 - # - linux_musl_arm64 - # - windows_arm64 - # - windows_x64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # - mono_browser_offsets - # monoCrossAOTTargetOS: - # - android - # - browser - # 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 - # - osx_arm64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # - mono_browser_offsets - # - mono_tvos_offsets - # - mono_ios_offsets - # - mono_maccatalyst_offsets - # monoCrossAOTTargetOS: - # - android - # - browser - # - tvos - # - ios - # - maccatalyst - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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 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 + - tvos_arm64 + - ios_arm64 + - maccatalyst_x64 + jobParameters: + isOfficialBuild: false + # 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 + - 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: + - linux_musl_x64 + - linux_riscv64 + 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 + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + scenarios: + - normal + - WasmTestOnBrowser + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + 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 }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # 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 }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm_win + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + + # For Wasm.Build.Tests - runtime pack builds + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + nameSuffix: SingleThreaded + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + publishArtifactsForWorkload: true + publishWBT: true + + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + nameSuffix: MultiThreaded + extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + publishArtifactsForWorkload: true + publishWBT: false + + # Browser Wasm.Build.Tests + - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm Debugger tests + - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm runtime tests + - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + parameters: + platforms: + - browser_wasm + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Build and Smoke Tests only - Wasm Threading Legs + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _Threading_Smoke + extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - WasmTestOnBrowser + + # WASI/WASM + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + nameSuffix: '_Smoke' + extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - normal + + - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + alwaysRun: ${{ variables.isRollingBuild }} + + # + # Android devices + # 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: + - android_arm + - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true + timeoutInMinutes: 480 + 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 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # 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: 480 + 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 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # iOS/tvOS devices + # Build the whole product using Native AOT 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: coreclr + platforms: + - ios_arm64 + - tvos_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: coreclrContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_NativeAOT + buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['coreclrContainsChange'], 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 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 + - linux_arm64 + - linux_musl_arm64 + - windows_arm64 + - windows_x64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + monoCrossAOTTargetOS: + - android + - browser + 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 + - osx_arm64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + - mono_tvos_offsets + - mono_ios_offsets + - mono_maccatalyst_offsets + monoCrossAOTTargetOS: + - android + - browser + - tvos + - ios + - maccatalyst + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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 @@ -1277,207 +1277,207 @@ extends: 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 - # - linux_arm64 - # 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)) - - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # # - # # 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)) - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # # - # # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # llvmAotStepContainer: linux_x64_llvmaot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # # - # # 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)) + # + # 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 + - linux_arm64 + 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)) + + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # 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)) + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # + # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + llvmAotStepContainer: linux_x64_llvmaot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # 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 diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 9952f52890afde..cd36cd99b247be 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -261,8 +261,6 @@ such as the HelixWorkItem item group) before Helix "Test" target is invoked (as a normal target). --> - - diff --git a/src/native/external/brotli/dec/decode.c b/src/native/external/brotli/dec/decode.c index 69a4250a376d7b..ae5a3d3fa359e5 100644 --- a/src/native/external/brotli/dec/decode.c +++ b/src/native/external/brotli/dec/decode.c @@ -2035,7 +2035,6 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands( BrotliDecoderResult BrotliDecoderDecompress( size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size, uint8_t* decoded_buffer) { - *(int*)4242424 = 42; BrotliDecoderState s; BrotliDecoderResult result; size_t total_out = 0; From 25f6a705d374c969a3fc912df24d2ec70c8e803c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Mon, 13 Nov 2023 15:59:18 -0800 Subject: [PATCH 52/63] [DO NOT MERGE | REVERT] Cause a crash and disable unrelated CI legs --- eng/pipelines/runtime.yml | 1596 +++++++++++------------ src/libraries/sendtohelixhelp.proj | 2 + src/native/external/brotli/dec/decode.c | 1 + 3 files changed, 801 insertions(+), 798 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 21568cd53c8ab3..f9d43eb5cccb9e 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -431,603 +431,603 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.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 - - tvos_arm64 - - ios_arm64 - - maccatalyst_x64 - jobParameters: - isOfficialBuild: false - # 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 - - 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: - - linux_musl_x64 - - linux_riscv64 - 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 - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - scenarios: - - normal - - WasmTestOnBrowser - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - 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 }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # 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 }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - parameters: - platforms: - - browser_wasm_win - nameSuffix: _AOT - runAOT: true - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - - # For Wasm.Build.Tests - runtime pack builds - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - nameSuffix: SingleThreaded - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - publishArtifactsForWorkload: true - publishWBT: true - - - template: /eng/pipelines/common/templates/wasm-build-only.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - nameSuffix: MultiThreaded - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - publishArtifactsForWorkload: true - publishWBT: false - - # Browser Wasm.Build.Tests - - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # Wasm Debugger tests - - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - parameters: - platforms: - - browser_wasm - - browser_wasm_win - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # Wasm runtime tests - - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - parameters: - platforms: - - browser_wasm - alwaysRun: ${{ variables.isRollingBuild }} - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # Build and Smoke Tests only - Wasm Threading Legs - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - browser_wasm - nameSuffix: _Threading_Smoke - extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - WasmTestOnBrowser - - # WASI/WASM - - - template: /eng/pipelines/common/templates/wasm-library-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - nameSuffix: '_Smoke' - extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - shouldRunSmokeOnly: true - alwaysRun: ${{ variables.isRollingBuild }} - scenarios: - - normal - - - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml - parameters: - platforms: - - wasi_wasm - - wasi_wasm_win - extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - alwaysRun: ${{ variables.isRollingBuild }} - - # - # Android devices - # 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: - - android_arm - - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true - timeoutInMinutes: 480 - 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 - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # 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: 480 - 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 - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - - # - # iOS/tvOS devices - # Build the whole product using Native AOT 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: coreclr - platforms: - - ios_arm64 - - tvos_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: coreclrContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_NativeAOT - buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['coreclrContainsChange'], 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 - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 - - linux_arm64 - - linux_musl_arm64 - - windows_arm64 - - windows_x64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - monoCrossAOTTargetOS: - - android - - browser - 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 - - osx_arm64 - jobParameters: - runtimeVariant: crossaot - dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_tvos_offsets - - mono_ios_offsets - - mono_maccatalyst_offsets - monoCrossAOTTargetOS: - - android - - browser - - tvos - - ios - - maccatalyst - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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 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 + # - tvos_arm64 + # - ios_arm64 + # - maccatalyst_x64 + # jobParameters: + # isOfficialBuild: false + # # 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 + # - 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: + # - linux_musl_x64 + # - linux_riscv64 + # 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 + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # scenarios: + # - normal + # - WasmTestOnBrowser + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # 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 }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # 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 }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm_win + # nameSuffix: _AOT + # runAOT: true + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + + # # For Wasm.Build.Tests - runtime pack builds + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + # nameSuffix: SingleThreaded + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # publishArtifactsForWorkload: true + # publishWBT: true + + # - template: /eng/pipelines/common/templates/wasm-build-only.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + # nameSuffix: MultiThreaded + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # publishArtifactsForWorkload: true + # publishWBT: false + + # # Browser Wasm.Build.Tests + # - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # Wasm Debugger tests + # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # Wasm runtime tests + # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + # parameters: + # platforms: + # - browser_wasm + # alwaysRun: ${{ variables.isRollingBuild }} + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # # Build and Smoke Tests only - Wasm Threading Legs + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - browser_wasm + # nameSuffix: _Threading_Smoke + # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - WasmTestOnBrowser + + # # WASI/WASM + + # - template: /eng/pipelines/common/templates/wasm-library-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # nameSuffix: '_Smoke' + # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # shouldRunSmokeOnly: true + # alwaysRun: ${{ variables.isRollingBuild }} + # scenarios: + # - normal + + # - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml + # parameters: + # platforms: + # - wasi_wasm + # - wasi_wasm_win + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + # alwaysRun: ${{ variables.isRollingBuild }} + + # # + # # Android devices + # # 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: + # - android_arm + # - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true + # timeoutInMinutes: 480 + # 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 + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # 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: 480 + # 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 + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['monoContainsChange'], true), + # eq(variables['isRollingBuild'], true)) + + # # + # # iOS/tvOS devices + # # Build the whole product using Native AOT 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: coreclr + # platforms: + # - ios_arm64 + # - tvos_arm64 + # variables: + # # map dependencies variables to local variables + # - name: librariesContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + # - name: coreclrContainsChange + # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] + # jobParameters: + # testGroup: innerloop + # nameSuffix: AllSubsets_NativeAOT + # buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true + # timeoutInMinutes: 180 + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + # eq(variables['isRollingBuild'], true)) + # # extra steps, run tests + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + # condition: >- + # or( + # eq(variables['librariesContainsChange'], true), + # eq(variables['coreclrContainsChange'], 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 + # postBuildSteps: + # - template: /eng/pipelines/libraries/helix.yml + # parameters: + # 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 + # - linux_arm64 + # - linux_musl_arm64 + # - windows_arm64 + # - windows_x64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # 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 + # - osx_arm64 + # jobParameters: + # runtimeVariant: crossaot + # dependsOn: + # - mono_android_offsets + # - mono_browser_offsets + # - mono_tvos_offsets + # - mono_ios_offsets + # - mono_maccatalyst_offsets + # monoCrossAOTTargetOS: + # - android + # - browser + # - tvos + # - ios + # - maccatalyst + # condition: >- + # or( + # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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 @@ -1277,207 +1277,207 @@ extends: 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 - - linux_arm64 - 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)) - - postBuildSteps: - - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # - # 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)) - postBuildSteps: - - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # - # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) - postBuildSteps: - - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - parameters: - creator: dotnet-bot - llvmAotStepContainer: linux_x64_llvmaot - testRunNamePrefixSuffix: Mono_Release - extraVariablesTemplates: - - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # - # 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)) + # # + # # 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 + # - linux_arm64 + # 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)) + + # postBuildSteps: + # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # # + # # 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)) + # postBuildSteps: + # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # parameters: + # creator: dotnet-bot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # # + # # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) + # postBuildSteps: + # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + # parameters: + # creator: dotnet-bot + # llvmAotStepContainer: linux_x64_llvmaot + # testRunNamePrefixSuffix: Mono_Release + # extraVariablesTemplates: + # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # # + # # 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 diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index cd36cd99b247be..9952f52890afde 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -261,6 +261,8 @@ such as the HelixWorkItem item group) before Helix "Test" target is invoked (as a normal target). --> + + diff --git a/src/native/external/brotli/dec/decode.c b/src/native/external/brotli/dec/decode.c index ae5a3d3fa359e5..69a4250a376d7b 100644 --- a/src/native/external/brotli/dec/decode.c +++ b/src/native/external/brotli/dec/decode.c @@ -2035,6 +2035,7 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands( BrotliDecoderResult BrotliDecoderDecompress( size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size, uint8_t* decoded_buffer) { + *(int*)4242424 = 42; BrotliDecoderState s; BrotliDecoderResult result; size_t total_out = 0; From f7d7e509285365208a8387c9142af3dcc0e35ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:01:44 -0800 Subject: [PATCH 53/63] Simplify envvar condition in sendtohelixhelp.proj --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 9952f52890afde..de46a5f9431439 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -250,7 +250,7 @@ - + From b926291df2759faef874b98436d6df9123520837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:03:39 -0800 Subject: [PATCH 54/63] Move build target framework check up to the property group. --- src/libraries/sendtohelixhelp.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index de46a5f9431439..7155c2ee459a7e 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -236,8 +236,8 @@ <_ShouldSetXUnitLogCheckerEnvVar>0 - - <_ShouldSetXUnitLogCheckerEnvVar Condition="$(BuildTargetFramework) == '$(NetCoreAppCurrent)'">1 + + <_ShouldSetXUnitLogCheckerEnvVar>1 $(HelixPreCommands); set __TestArchitecture=$(TargetArchitecture) From 69df4b6357d0e5fe6d167bd15a40d9936d1f765f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:14:25 -0800 Subject: [PATCH 55/63] Missed a sh variable $ --- eng/testing/RunnerTemplate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 8f6e5e3c2a87a2..2eb52614c54af0 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -91,7 +91,7 @@ function invoke_xunitlogchecker { elif [[ ! -f $xunitlogchecker_file_name ]]; then echo "'$xunitlogchecker_file_name' was not found. Unable to print dump file contents." xunitlogchecker_exit_code=2 - elif [[ ! -d dump_folder ]]; then + elif [[ ! -d $dump_folder ]]; then echo "The dump directory '$dump_folder' does not exist." else echo "Executing XUnitLogChecker in $dump_folder..." From bb772ddfcfdafe3cca73c2a96207cffa4ff5aa58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 09:35:13 -0800 Subject: [PATCH 56/63] Remove should set variable from outside the condition, it's unused --- src/libraries/sendtohelixhelp.proj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 7155c2ee459a7e..dce0a24964e5b3 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -232,10 +232,6 @@ - - <_ShouldSetXUnitLogCheckerEnvVar>0 - - <_ShouldSetXUnitLogCheckerEnvVar>1 From 3686646d35f04b3baec4bdc70eac06915cb379fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:43:53 -0800 Subject: [PATCH 57/63] In OSX, $HELIX_DUMP_FOLDER is passed as `/cores`, so we don't need to special case Darwin --- eng/testing/RunnerTemplate.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 2eb52614c54af0..0188fbcf012b41 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -242,11 +242,6 @@ else invoke_xunitlogchecker "$HELIX_DUMP_FOLDER" - # osx stores giant dumps in a separate folder - if [[ $system_name == "Darwin" ]]; then - invoke_xunitlogchecker "/cores" - fi - if [[ $xunitlogchecker_exit_code -ne 0 ]]; then test_exitcode=$xunitlogchecker_exit_code fi From 87f70558d90d8b46175f3658414c944e61fd433f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:44:56 -0800 Subject: [PATCH 58/63] Missed a ; --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index dce0a24964e5b3..a4e695a940dd64 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -236,7 +236,7 @@ <_ShouldSetXUnitLogCheckerEnvVar>1 $(HelixPreCommands); - set __TestArchitecture=$(TargetArchitecture) + set __TestArchitecture=$(TargetArchitecture); set __IsXUnitLogCheckerSupported=$(_ShouldSetXUnitLogCheckerEnvVar) From 3da51fb47437787fb3f6a6c4d969489923faeaf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:45:42 -0800 Subject: [PATCH 59/63] Another missed ; --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index a4e695a940dd64..6837d4aed70908 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -241,7 +241,7 @@ $(HelixPreCommands); - export __TestArchitecture=$(TargetArchitecture) + export __TestArchitecture=$(TargetArchitecture); export __IsXUnitLogCheckerSupported=$(_ShouldSetXUnitLogCheckerEnvVar) From 0d15bf84f5d9222b20f049c8c86aa7eb3321e4f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:47:58 -0800 Subject: [PATCH 60/63] Use the $core_file_name when renaming the dmp --- eng/testing/RunnerTemplate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 0188fbcf012b41..8c87464a673e3d 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -65,7 +65,7 @@ function move_core_file_to_temp_location { local core_file_name=$1 # Append the dmp extension to ensure XUnitLogChecker finds it - local new_location=$HELIX_DUMP_FOLDER/core.$RANDOM.dmp + local new_location=$HELIX_DUMP_FOLDER/$core_file_name.$RANDOM.dmp echo "Copying dump file '$core_file_name' to '$new_location'" cp $core_file_name $new_location From bcd2acf781c7aa4c8812fdc03e1f0ee7e55d45a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:49:02 -0800 Subject: [PATCH 61/63] Remove sleep --- eng/testing/RunnerTemplate.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 8c87464a673e3d..57426758846ab5 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -226,11 +226,6 @@ if [ -n "$HELIX_WORKITEM_PAYLOAD" ]; then dmesg | tail -50 fi - have_sleep=$(which sleep) - if [ -x "$have_sleep" ]; then - echo Waiting a few seconds for any dump to be written... - sleep 10s - fi fi if [[ -z "$__IsXUnitLogCheckerSupported" ]]; then From 7857f36d719e3d2c1c1b635f39f1c0f4593e7556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 16:02:10 -0800 Subject: [PATCH 62/63] Remove $RANDOM --- eng/testing/RunnerTemplate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh index 57426758846ab5..ef19d6c95c0744 100644 --- a/eng/testing/RunnerTemplate.sh +++ b/eng/testing/RunnerTemplate.sh @@ -65,7 +65,7 @@ function move_core_file_to_temp_location { local core_file_name=$1 # Append the dmp extension to ensure XUnitLogChecker finds it - local new_location=$HELIX_DUMP_FOLDER/$core_file_name.$RANDOM.dmp + local new_location=$HELIX_DUMP_FOLDER/$core_file_name.dmp echo "Copying dump file '$core_file_name' to '$new_location'" cp $core_file_name $new_location From fab34497db2e268aef285ebd1048ca6e6089d367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 14 Nov 2023 16:02:15 -0800 Subject: [PATCH 63/63] Revert the temporary crash and the disabled CI legs. --- eng/pipelines/runtime.yml | 1596 +++++++++++------------ src/libraries/sendtohelixhelp.proj | 2 - src/native/external/brotli/dec/decode.c | 1 - 3 files changed, 798 insertions(+), 801 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index f9d43eb5cccb9e..21568cd53c8ab3 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -431,603 +431,603 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.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 - # - tvos_arm64 - # - ios_arm64 - # - maccatalyst_x64 - # jobParameters: - # isOfficialBuild: false - # # 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 - # - 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: - # - linux_musl_x64 - # - linux_riscv64 - # 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 - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # scenarios: - # - normal - # - WasmTestOnBrowser - - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # 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 }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # 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 }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - browser_wasm_win - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - - # # For Wasm.Build.Tests - runtime pack builds - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - # nameSuffix: SingleThreaded - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # publishArtifactsForWorkload: true - # publishWBT: true - - # - template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - # nameSuffix: MultiThreaded - # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # publishArtifactsForWorkload: true - # publishWBT: false - - # # Browser Wasm.Build.Tests - # - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # Wasm Debugger tests - # - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # Wasm runtime tests - # - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - # parameters: - # platforms: - # - browser_wasm - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - # # Build and Smoke Tests only - Wasm Threading Legs - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - browser_wasm - # nameSuffix: _Threading_Smoke - # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - WasmTestOnBrowser - - # # WASI/WASM - - # - template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - wasi_wasm - # - wasi_wasm_win - # nameSuffix: '_Smoke' - # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - normal - - # - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml - # parameters: - # platforms: - # - wasi_wasm - # - wasi_wasm_win - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # alwaysRun: ${{ variables.isRollingBuild }} - - # # - # # Android devices - # # 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: - # - android_arm - # - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true - # timeoutInMinutes: 480 - # 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 - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # 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: 480 - # 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 - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # # - # # iOS/tvOS devices - # # Build the whole product using Native AOT 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: coreclr - # platforms: - # - ios_arm64 - # - tvos_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: coreclrContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_NativeAOT - # buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['coreclrContainsChange'], 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 - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 - # - linux_arm64 - # - linux_musl_arm64 - # - windows_arm64 - # - windows_x64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # - mono_browser_offsets - # monoCrossAOTTargetOS: - # - android - # - browser - # 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 - # - osx_arm64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # - mono_browser_offsets - # - mono_tvos_offsets - # - mono_ios_offsets - # - mono_maccatalyst_offsets - # monoCrossAOTTargetOS: - # - android - # - browser - # - tvos - # - ios - # - maccatalyst - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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 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 + - tvos_arm64 + - ios_arm64 + - maccatalyst_x64 + jobParameters: + isOfficialBuild: false + # 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 + - 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: + - linux_musl_x64 + - linux_riscv64 + 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 + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + scenarios: + - normal + - WasmTestOnBrowser + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + 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 }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # 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 }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm_win + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + + # For Wasm.Build.Tests - runtime pack builds + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + nameSuffix: SingleThreaded + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + publishArtifactsForWorkload: true + publishWBT: true + + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + nameSuffix: MultiThreaded + extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + publishArtifactsForWorkload: true + publishWBT: false + + # Browser Wasm.Build.Tests + - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm Debugger tests + - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm runtime tests + - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + parameters: + platforms: + - browser_wasm + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Build and Smoke Tests only - Wasm Threading Legs + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _Threading_Smoke + extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - WasmTestOnBrowser + + # WASI/WASM + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + nameSuffix: '_Smoke' + extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - normal + + - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + alwaysRun: ${{ variables.isRollingBuild }} + + # + # Android devices + # 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: + - android_arm + - android_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:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true + timeoutInMinutes: 480 + 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 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # 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: 480 + 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 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # iOS/tvOS devices + # Build the whole product using Native AOT 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: coreclr + platforms: + - ios_arm64 + - tvos_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: coreclrContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_NativeAOT + buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['coreclrContainsChange'], 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 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + 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:MonoAOTEnableLLVM=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:MonoAOTEnableLLVM=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_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_musl_x64 + - linux_arm64 + - linux_musl_arm64 + - windows_arm64 + - windows_x64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + monoCrossAOTTargetOS: + - android + - browser + 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 + - osx_arm64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + - mono_tvos_offsets + - mono_ios_offsets + - mono_maccatalyst_offsets + monoCrossAOTTargetOS: + - android + - browser + - tvos + - ios + - maccatalyst + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.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_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 @@ -1277,207 +1277,207 @@ extends: 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 - # - linux_arm64 - # 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)) - - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # # - # # 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)) - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # # - # # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # llvmAotStepContainer: linux_x64_llvmaot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - # # - # # 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)) + # + # 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 + - linux_arm64 + 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)) + + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # 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)) + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # + # 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:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=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)) + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + llvmAotStepContainer: linux_x64_llvmaot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # 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 diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 6837d4aed70908..08022b485977e5 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -257,8 +257,6 @@ such as the HelixWorkItem item group) before Helix "Test" target is invoked (as a normal target). --> - - diff --git a/src/native/external/brotli/dec/decode.c b/src/native/external/brotli/dec/decode.c index 69a4250a376d7b..ae5a3d3fa359e5 100644 --- a/src/native/external/brotli/dec/decode.c +++ b/src/native/external/brotli/dec/decode.c @@ -2035,7 +2035,6 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands( BrotliDecoderResult BrotliDecoderDecompress( size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size, uint8_t* decoded_buffer) { - *(int*)4242424 = 42; BrotliDecoderState s; BrotliDecoderResult result; size_t total_out = 0;