From 4344f902e3081f00421972ab0c91c028e92b90e5 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 9 Jan 2026 14:52:46 +0100 Subject: [PATCH 01/19] Run full test suite on Apple mobile platforms --- .../runtime-extra-platforms-ioslike.yml | 9 +++++---- .../runtime-extra-platforms-ioslikesimulator.yml | 11 ++++++----- .../runtime-extra-platforms-maccatalyst.yml | 8 +++++--- eng/pipelines/runtime.yml | 5 +++-- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index 9b400f09b0bf8a..b167902a9aa183 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -206,9 +206,9 @@ jobs: - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml parameters: creator: dotnet-bot - testBuildArgs: tree baseservices /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=false + testBuildArgs: /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=false + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true # # Build the whole product using CoreCLR R2R and run library tests @@ -234,8 +234,8 @@ jobs: value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'] ] jobParameters: testGroup: innerloop - nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true + nameSuffix: AllSubsets_CoreCLR + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true timeoutInMinutes: 120 # extra steps, run tests postBuildSteps: @@ -243,3 +243,4 @@ jobs: parameters: creator: dotnet-bot testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml index 6a55be22171566..0d666fd79a8b20 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml @@ -174,12 +174,12 @@ jobs: - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml parameters: creator: dotnet-bot - testBuildArgs: tree baseservices /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=false + testBuildArgs: /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=false + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true # -# Build the whole product using CoreCLR R2R and run library tests +# Build the whole product using CoreCLR R2R and run libraries tests # - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -203,8 +203,8 @@ jobs: value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'] ] jobParameters: testGroup: innerloop - nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true + nameSuffix: AllSubsets_CoreCLR + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false timeoutInMinutes: 120 # extra steps, run tests postBuildSteps: @@ -212,3 +212,4 @@ jobs: parameters: creator: dotnet-bot testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml index 233f0788532667..f68f87baf9a289 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml @@ -243,11 +243,12 @@ jobs: - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml parameters: creator: dotnet-bot - testBuildArgs: tree baseservices /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=false + testBuildArgs: /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true # -# Build the whole product using CoreCLR R2R and run library tests +# Build the whole product using CoreCLR R2R and run libraries tests # - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -271,7 +272,7 @@ jobs: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=false /p:UsePortableRuntimePack=false timeoutInMinutes: 120 # extra steps, run tests postBuildSteps: @@ -279,3 +280,4 @@ jobs: parameters: creator: dotnet-bot testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index d96fe5cd30fb18..bfe9182c32cb99 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1071,7 +1071,7 @@ extends: eq(variables['isRollingBuild'], true)) # - # Build the whole product using CoreCLR and run functional tests + # Build the whole product using CoreCLR and run libraries tests # - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -1093,7 +1093,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true timeoutInMinutes: 120 condition: >- or( @@ -1107,6 +1107,7 @@ extends: parameters: creator: dotnet-bot testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true condition: >- or( eq(variables['librariesContainsChange'], true), From 17008b726239fc7ca2f9355a63a2fa72895cb5af Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 9 Jan 2026 17:03:42 +0100 Subject: [PATCH 02/19] Test run --- 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 bfe9182c32cb99..6b2afecab1fd0a 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1093,7 +1093,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true timeoutInMinutes: 120 condition: >- or( From 0d941ebfbd09dff1fee593b72d6c19ace5facf15 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 13 Jan 2026 11:17:58 +0100 Subject: [PATCH 03/19] Move AfterMicrosoftNETSdkTargets to tests.ioslike.targets --- eng/testing/tests.ioslike.targets | 11 ++++++++++- src/mono/msbuild/apple/build/AppleBuild.props | 9 --------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 0f3302bae3ce2b..22d5879300a7fa 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -16,7 +16,7 @@ <_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration) - <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) + <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) /p:UseMonoRuntime=$(UseMonoRuntime) <_AOTBuildCommand Condition="'$(NativeLib)' != ''">$(_AOTBuildCommand) /p:NativeLib=$(NativeLib) /p:BundlesResources=$(BundlesResources) /p:ForceLibraryModeGenerateAppBundle=$(ForceLibraryModeGenerateAppBundle) <_AOTBuildCommand>$(_AOTBuildCommand) @@ -38,6 +38,15 @@ $(_AOTBuildCommand) $(_AfterBuildCommands) + + + + $(AfterMicrosoftNETSdkTargets);$(Crossgen2SdkOverrideTargetsPath) + $(AfterMicrosoftNETSdkTargets);$(MonoProjectRoot)\msbuild\apple\build\AppleBuild.ReadyToRun.targets + + $([MSBuild]::NormalizeDirectory($(MSBuildThisFileDirectory), '..', '..', 'common')) - - - - $(AfterMicrosoftNETSdkTargets);$(Crossgen2SdkOverrideTargetsPath) - $(AfterMicrosoftNETSdkTargets);$(MonoProjectRoot)\msbuild\apple\build\AppleBuild.ReadyToRun.targets - - From 352054f96288db08500e0591258b04a02725d27d Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 14 Jan 2026 15:47:20 +0100 Subject: [PATCH 04/19] Fix assemblies path for intree crossgen2 --- eng/pipelines/runtime.yml | 2 +- eng/testing/tests.mobile.targets | 21 +++++++++++++++++++ .../apple/build/AppleBuild.ReadyToRun.targets | 6 ++++++ src/mono/msbuild/apple/build/AppleBuild.props | 6 ------ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 6b2afecab1fd0a..a2e29516932382 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1093,7 +1093,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false timeoutInMinutes: 120 condition: >- or( diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets index b5e2692bc45fa9..b4d584eac7ff09 100644 --- a/eng/testing/tests.mobile.targets +++ b/eng/testing/tests.mobile.targets @@ -143,6 +143,27 @@ + + + <_LocalFrameworkAssemblies Include="@(RuntimeFiles);@(LibrariesRuntimeFiles)" + Condition="'%(Extension)' == '.dll'" /> + + + + + + + true + true + macho + + $([MSBuild]::NormalizePath('$(Crossgen2InBuildDir)', 'crossgen2$(ExeSuffix)')) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index dbb2451e0b1eae..c31474a6e2ef06 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -9,12 +9,6 @@ true - - true - true - macho - - From 05157adae21d540f070811b8936f30c8aaf87b94 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 15 Jan 2026 20:55:37 +0100 Subject: [PATCH 05/19] Revert changes --- eng/pipelines/runtime.yml | 3 +-- eng/testing/tests.ioslike.targets | 11 +--------- eng/testing/tests.mobile.targets | 21 ------------------- .../apple/build/AppleBuild.ReadyToRun.targets | 6 ------ src/mono/msbuild/apple/build/AppleBuild.props | 15 +++++++++++++ 5 files changed, 17 insertions(+), 39 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index a2e29516932382..05b992d515c483 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1093,7 +1093,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=false /p:BuildTestsOnHelix=false timeoutInMinutes: 120 condition: >- or( @@ -1107,7 +1107,6 @@ extends: parameters: creator: dotnet-bot testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true condition: >- or( eq(variables['librariesContainsChange'], true), diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 22d5879300a7fa..0f3302bae3ce2b 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -16,7 +16,7 @@ <_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration) - <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) /p:UseMonoRuntime=$(UseMonoRuntime) + <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) <_AOTBuildCommand Condition="'$(NativeLib)' != ''">$(_AOTBuildCommand) /p:NativeLib=$(NativeLib) /p:BundlesResources=$(BundlesResources) /p:ForceLibraryModeGenerateAppBundle=$(ForceLibraryModeGenerateAppBundle) <_AOTBuildCommand>$(_AOTBuildCommand) @@ -38,15 +38,6 @@ $(_AOTBuildCommand) $(_AfterBuildCommands) - - - - $(AfterMicrosoftNETSdkTargets);$(Crossgen2SdkOverrideTargetsPath) - $(AfterMicrosoftNETSdkTargets);$(MonoProjectRoot)\msbuild\apple\build\AppleBuild.ReadyToRun.targets - - - - - <_LocalFrameworkAssemblies Include="@(RuntimeFiles);@(LibrariesRuntimeFiles)" - Condition="'%(Extension)' == '.dll'" /> - - - - - - - true - true - macho - - $([MSBuild]::NormalizePath('$(Crossgen2InBuildDir)', 'crossgen2$(ExeSuffix)')) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index c31474a6e2ef06..476ba4770472ab 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -9,6 +9,12 @@ true + + true + true + macho + + @@ -50,6 +56,15 @@ <_CommonTargetsDir Condition="'$(_CommonTargetsDir)' == ''">$([MSBuild]::NormalizeDirectory($(MSBuildThisFileDirectory), '..', '..', 'common')) + + + + $(AfterMicrosoftNETSdkTargets);$(Crossgen2SdkOverrideTargetsPath) + $(AfterMicrosoftNETSdkTargets);$(MonoProjectRoot)\msbuild\apple\build\AppleBuild.ReadyToRun.targets + + From 6bfcef195d3e1eac07781e7ae0c5722c8636ed63 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 15 Jan 2026 20:56:11 +0100 Subject: [PATCH 06/19] Fix indentation in AppleBuild.props for clarity --- src/mono/msbuild/apple/build/AppleBuild.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index 476ba4770472ab..f3edc755c1959e 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -9,7 +9,7 @@ true - + true true macho From 21447722db98b1b3e031df318e6124dd95bebcb2 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 16 Jan 2026 14:22:26 +0100 Subject: [PATCH 07/19] Enable helix builds --- eng/pipelines/runtime.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 05b992d515c483..a2e29516932382 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1093,7 +1093,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=false /p:BuildTestsOnHelix=false + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false timeoutInMinutes: 120 condition: >- or( @@ -1107,6 +1107,7 @@ extends: parameters: creator: dotnet-bot testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true condition: >- or( eq(variables['librariesContainsChange'], true), From f8bc27dbb6e2493169bb515fa77d4bc37b418cc7 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 16 Jan 2026 16:55:01 +0100 Subject: [PATCH 08/19] Import crossgen2 from intree --- eng/testing/tests.ioslike.targets | 6 ++---- .../msbuild/apple/build/AppleBuild.ReadyToRun.targets | 9 ++++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 0f3302bae3ce2b..28d6db89b2552f 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -38,10 +38,8 @@ $(_AOTBuildCommand) $(_AfterBuildCommands) - - + + diff --git a/src/mono/msbuild/apple/build/AppleBuild.ReadyToRun.targets b/src/mono/msbuild/apple/build/AppleBuild.ReadyToRun.targets index 1bfe6b140f2ca5..41e1df00034ddb 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.ReadyToRun.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.ReadyToRun.targets @@ -2,7 +2,7 @@ - + $([MSBuild]::NormalizePath('$(Crossgen2InBuildDir)', 'crossgen2$(ExeSuffix)')) @@ -13,5 +13,12 @@ TargetOS="$(TargetOS)" PerfmapFormatVersion="$(PublishReadyToRunPerfmapFormatVersion)"/> + + + + <_ReadyToRunImplementationAssemblies Include="@(RuntimeFiles)" Condition="'%(RuntimeFiles.Extension)' == '.dll'" ReferenceOnly="true" /> + <_ReadyToRunImplementationAssemblies Include="@(LibrariesRuntimeFiles)" Condition="'%(LibrariesRuntimeFiles.Extension)' == '.dll'" ReferenceOnly="true" /> + From 903f53767b8940f04b8e2efce8a34576d7be1601 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 26 Jan 2026 17:31:51 +0100 Subject: [PATCH 09/19] Add condition to _MonoReadAvailableComponentsManifest target --- src/mono/msbuild/common/RuntimeComponentManifest.targets | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mono/msbuild/common/RuntimeComponentManifest.targets b/src/mono/msbuild/common/RuntimeComponentManifest.targets index fcf1ff70d9a8f5..267df0c44c980b 100644 --- a/src/mono/msbuild/common/RuntimeComponentManifest.targets +++ b/src/mono/msbuild/common/RuntimeComponentManifest.targets @@ -1,10 +1,10 @@ - + - <_MonoRuntimeComponentManifestJsonFilePath + <_MonoRuntimeComponentManifestJsonFilePath Condition="'$(_MonoRuntimeComponentManifestJsonFilePath)' == '' and '%(ResolvedFrameworkReference.Identity)' == 'Microsoft.NETCore.App'">$([MSBuild]::NormalizePath('%(RuntimePackPath)', 'runtimes', '$(RuntimeIdentifier)', 'build', 'RuntimeComponentManifest.json')) @@ -69,7 +69,7 @@ Such a workload should then use DontLink to exclude the disabled components. On the other hand a workload that explicitly picks the native libraries from native/ should use _MonoRuntimeComponentLink to pick just the needed runtime component artifacts. --> - + From 126d31ddca8e37da6662464dae25a407c879bb7c Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 29 Jan 2026 10:56:59 +0100 Subject: [PATCH 10/19] Pass UseMonoRuntime property --- eng/testing/tests.ioslike.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 28d6db89b2552f..38e5147719ace3 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -16,7 +16,7 @@ <_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration) - <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) + <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:UseMonoRuntime=$(UseMonoRuntime) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) <_AOTBuildCommand Condition="'$(NativeLib)' != ''">$(_AOTBuildCommand) /p:NativeLib=$(NativeLib) /p:BundlesResources=$(BundlesResources) /p:ForceLibraryModeGenerateAppBundle=$(ForceLibraryModeGenerateAppBundle) <_AOTBuildCommand>$(_AOTBuildCommand) From 1b6620ee5fb54dd8852698bc003d53e6b17e08bf Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 29 Jan 2026 12:41:52 +0100 Subject: [PATCH 11/19] Add crossgen2 to the helix payload --- src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props | 1 + src/mono/msbuild/apple/build/AppleBuild.props | 2 +- src/tests/Common/helixpublishwitharcade.proj | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props b/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props index 92668cf265fafe..0bd41771aa4709 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props @@ -61,6 +61,7 @@ $([MSBuild]::NormalizeDirectory($(BuildBaseDir), 'LibraryBuilder')) $([MSBuild]::NormalizePath($(BuildBaseDir), 'cross')) + $([MSBuild]::NormalizeDirectory('$(BuildBaseDir)', 'crossgen2')) $([MSBuild]::NormalizeDirectory('$(BuildBaseDir)', 'ilc')) $([MSBuild]::NormalizePath('$(BuildBaseDir)', 'BuildIntegration')) $([MSBuild]::NormalizePath('$(ILCompilerTargetsDir)', 'Microsoft.DotNet.ILCompiler.SingleEntry.targets')) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index f3edc755c1959e..4802d446caee22 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -62,7 +62,7 @@ $(AfterMicrosoftNETSdkTargets);$(Crossgen2SdkOverrideTargetsPath) - $(AfterMicrosoftNETSdkTargets);$(MonoProjectRoot)\msbuild\apple\build\AppleBuild.ReadyToRun.targets + $(AfterMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)AppleBuild.ReadyToRun.targets diff --git a/src/tests/Common/helixpublishwitharcade.proj b/src/tests/Common/helixpublishwitharcade.proj index cdcc25f8665c32..209606aba8372c 100644 --- a/src/tests/Common/helixpublishwitharcade.proj +++ b/src/tests/Common/helixpublishwitharcade.proj @@ -981,6 +981,8 @@ Destination="build/BuildIntegration" /> + From fd7161ef5decd1fc6c847cbad1b1444c00e36bad Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 29 Jan 2026 14:08:18 +0100 Subject: [PATCH 12/19] Remove unused parameters --- .../runtime-extra-platforms-ioslikesimulator.yml | 4 ++-- .../extra-platforms/runtime-extra-platforms-maccatalyst.yml | 4 ++-- eng/pipelines/runtime.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml index 0d666fd79a8b20..f6eff5f2e4b593 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml @@ -174,7 +174,7 @@ jobs: - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml parameters: creator: dotnet-bot - testBuildArgs: /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false + testBuildArgs: /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true @@ -204,7 +204,7 @@ jobs: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true timeoutInMinutes: 120 # extra steps, run tests postBuildSteps: diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml index f68f87baf9a289..f7b37a48f23cf1 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml @@ -243,7 +243,7 @@ jobs: - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml parameters: creator: dotnet-bot - testBuildArgs: /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false + testBuildArgs: /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true @@ -272,7 +272,7 @@ jobs: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=false /p:UsePortableRuntimePack=false + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=false timeoutInMinutes: 120 # extra steps, run tests postBuildSteps: diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 15db2cb8fa156f..616e3b64076525 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1105,7 +1105,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true timeoutInMinutes: 120 condition: >- or( From cf08f82c159709ce38467950d0e4cbd354ef2cff Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 29 Jan 2026 16:21:36 +0100 Subject: [PATCH 13/19] Increase timeout and include libraries tests --- .../runtime-extra-platforms-ioslike.yml | 4 ++-- .../runtime-extra-platforms-ioslikesimulator.yml | 4 ++-- .../runtime-extra-platforms-maccatalyst.yml | 4 ++-- eng/pipelines/runtime.yml | 2 +- src/libraries/tests.proj | 11 +++++++++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index b167902a9aa183..77a5eac26c02b6 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -196,7 +196,7 @@ jobs: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_RuntimeTests buildArgs: -s clr+libs -c $(_BuildConfig) - timeoutInMinutes: 240 + timeoutInMinutes: 480 # extra steps, run tests extraVariablesTemplates: - template: /eng/pipelines/common/templates/runtimes/test-variables.yml @@ -236,7 +236,7 @@ jobs: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true - timeoutInMinutes: 120 + timeoutInMinutes: 480 # extra steps, run tests postBuildSteps: - template: /eng/pipelines/libraries/helix.yml diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml index f6eff5f2e4b593..46b99c5fb3978e 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml @@ -164,7 +164,7 @@ jobs: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_RuntimeTests buildArgs: -s clr+libs -c $(_BuildConfig) - timeoutInMinutes: 240 + timeoutInMinutes: 480 # extra steps, run tests extraVariablesTemplates: - template: /eng/pipelines/common/templates/runtimes/test-variables.yml @@ -205,7 +205,7 @@ jobs: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:BuildTestsOnHelix=true - timeoutInMinutes: 120 + timeoutInMinutes: 480 # extra steps, run tests postBuildSteps: - template: /eng/pipelines/libraries/helix.yml diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml index f7b37a48f23cf1..b8c45d3bb6afc8 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml @@ -233,7 +233,7 @@ jobs: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_RuntimeTests buildArgs: -s clr+libs -c $(_BuildConfig) - timeoutInMinutes: 240 + timeoutInMinutes: 480 # extra steps, run tests extraVariablesTemplates: - template: /eng/pipelines/common/templates/runtimes/test-variables.yml @@ -273,7 +273,7 @@ jobs: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=false - timeoutInMinutes: 120 + timeoutInMinutes: 480 # extra steps, run tests postBuildSteps: - template: /eng/pipelines/libraries/helix.yml diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 616e3b64076525..d85c93444eb183 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1105,7 +1105,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true /p:EmbedPgoData=false timeoutInMinutes: 120 condition: >- or( diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 7f94b863343adc..7a91333711b158 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -702,7 +702,14 @@ - + + + + + + - + From c87844bb0db60d46d90ccb49becbcbe35ffbc495 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 30 Jan 2026 08:58:48 +0100 Subject: [PATCH 14/19] Fix properties for tests --- .../extra-platforms/runtime-extra-platforms-maccatalyst.yml | 3 +-- eng/pipelines/runtime.yml | 2 +- eng/testing/tests.targets | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml index b8c45d3bb6afc8..8241315f274a8e 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml @@ -272,7 +272,7 @@ jobs: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=false + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false timeoutInMinutes: 480 # extra steps, run tests postBuildSteps: @@ -280,4 +280,3 @@ jobs: parameters: creator: dotnet-bot testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index d85c93444eb183..616e3b64076525 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1105,7 +1105,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true /p:EmbedPgoData=false + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true timeoutInMinutes: 120 condition: >- or( diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index 8c058abf2b7990..c3b67492c40d45 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -6,6 +6,8 @@ and '$(UseNativeAOTRuntime)' != 'true' and '$(TargetOS)' != 'browser' and '$(TargetOS)' != 'wasi' + and '$(TargetOS)' != 'android' + and '$(TargetsAppleMobile)' != 'true' and '$(RuntimeFlavor)' != 'Mono' and '$(UseRuntimeAsync)' != 'false'"> true From 0e4bccc94ea7f7c458afd625b204f6542da13e53 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 30 Jan 2026 09:26:47 +0100 Subject: [PATCH 15/19] Revert changes --- src/libraries/tests.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 7a91333711b158..d14d065b17caac 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -730,7 +730,7 @@ - + From 26356ad521f681340c36ee13e51b283d89778057 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 30 Jan 2026 14:56:13 +0100 Subject: [PATCH 16/19] Remove EnableAggressiveTrimming --- .../extra-platforms/runtime-extra-platforms-ioslike.yml | 2 +- eng/pipelines/runtime.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index 77a5eac26c02b6..03aad9f7458182 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -235,7 +235,7 @@ jobs: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false timeoutInMinutes: 480 # extra steps, run tests postBuildSteps: diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 616e3b64076525..15db2cb8fa156f 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1105,7 +1105,7 @@ extends: jobParameters: testGroup: innerloop nameSuffix: AllSubsets_CoreCLR_Smoke - buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true + buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=false timeoutInMinutes: 120 condition: >- or( From 0cbe42bef6938c5c2d3ca4c3de8a926f1966d64b Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 4 Feb 2026 11:33:04 +0100 Subject: [PATCH 17/19] Revert changes --- src/libraries/tests.proj | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index d14d065b17caac..7f94b863343adc 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -702,14 +702,7 @@ - - - - - - + Date: Wed, 4 Feb 2026 12:12:06 +0100 Subject: [PATCH 18/19] Invoke crossgen2 compiler on Helix --- eng/testing/tests.ioslike.targets | 7 ++ src/mono/msbuild/apple/build/AppleBuild.props | 9 ++- .../apple/data/ProxyProjectForAOTOnHelix.proj | 80 ++++++++++++++++++- 3 files changed, 93 insertions(+), 3 deletions(-) diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets index 38e5147719ace3..a8b62dc2db1d7b 100644 --- a/eng/testing/tests.ioslike.targets +++ b/eng/testing/tests.ioslike.targets @@ -18,6 +18,8 @@ <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:UseMonoRuntime=$(UseMonoRuntime) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) <_AOTBuildCommand Condition="'$(NativeLib)' != ''">$(_AOTBuildCommand) /p:NativeLib=$(NativeLib) /p:BundlesResources=$(BundlesResources) /p:ForceLibraryModeGenerateAppBundle=$(ForceLibraryModeGenerateAppBundle) + + <_AOTBuildCommand Condition="'$(UseMonoRuntime)' != 'true' and '$(UseNativeAOTRuntime)' != 'true'">$(_AOTBuildCommand) /p:PublishReadyToRun=true /p:PublishReadyToRunComposite=true /p:PublishReadyToRunContainerFormat=macho <_AOTBuildCommand>$(_AOTBuildCommand) <_ResetSimulatorSwitch Condition="('$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'tvossimulator') and '$(IncludesTestRunner)' == 'true'">--reset-simulator @@ -135,6 +137,11 @@ <_ApplePropertyNames Include="HybridGlobalization" /> <_ApplePropertyNames Include="InvariantGlobalization" /> + + <_ApplePropertyNames Condition="'$(UseMonoRuntime)' != 'true' and '$(UseNativeAOTRuntime)' != 'true'" Include="Crossgen2InBuildDir" /> + <_ApplePropertyNames Condition="'$(UseMonoRuntime)' != 'true' and '$(UseNativeAOTRuntime)' != 'true'" Include="Crossgen2SdkOverridePropsPath" /> + <_ApplePropertyNames Condition="'$(UseMonoRuntime)' != 'true' and '$(UseNativeAOTRuntime)' != 'true'" Include="Crossgen2SdkOverrideTargetsPath" /> + <_AppleUsedRuntimePackFiles Include="@(_UsedRuntimePackFiles->'%(FileName)%(Extension)')" RemoveMetadata="_IsNative;TargetDir" /> diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index 4802d446caee22..d5ca0ad779f84f 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -10,9 +10,14 @@ - true + + true + false + + <_DeferR2RToHelix Condition="'$(BuildTestsOnHelix)' == 'true' and '$(UseMonoRuntime)' != 'true' and '$(UseNativeAOTRuntime)' != 'true'">true true - macho + macho diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index 2035333122a2f0..5ff68f950a0958 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -7,12 +7,20 @@ $([MSBuild]::NormalizeDirectory($(TestRootDir), '..', 'extraFiles')) $([MSBuild]::NormalizeDirectory($(TestRootDir), '..', 'obj')) - _PublishRuntimePack;_PrepareForAppleBuildAppOnHelix;$(AppleBuildDependsOn);_AfterAppleBuildOnHelix + _PublishRuntimePack;_PrepareForAppleBuildAppOnHelix;_RunR2RCompilationOnHelix;$(AppleBuildDependsOn);_AfterAppleBuildOnHelix true $(OriginalPublishDir) + + + $(BaseIntermediateOutputPath) + $(TargetOS)-$(TargetArchitecture.ToLowerInvariant()) + + $([MSBuild]::NormalizeDirectory($(HELIX_CORRELATION_PAYLOAD), 'build', 'crossgen2')) + + false true @@ -96,6 +104,76 @@ + + + + + + <_R2RIntermediateDir>$([MSBuild]::NormalizeDirectory($(BaseIntermediateOutputPath), 'R2R')) + + + + + + + <_AssembliesToR2R Include="$(OriginalPublishDir)*.dll" + Exclude="$(OriginalPublishDir)*.resources.dll" /> + + <_AssembliesToR2R Remove="@(_AppleUsedRuntimePackFiles->'$(OriginalPublishDir)%(FileName)%(Extension)')" /> + + + + + <_R2RReferenceAssemblies Include="$(OriginalPublishDir)*.dll" /> + <_R2RReferenceAssemblies Include="$(MicrosoftNetCoreAppRuntimePackLibDir)*.dll" Condition="Exists('$(MicrosoftNetCoreAppRuntimePackLibDir)')" /> + + + + + + + <_Crossgen2Path>$([MSBuild]::NormalizePath('$(Crossgen2InBuildDir)', 'crossgen2')) + <_R2RTargetArch Condition="'$(TargetArchitecture)' == 'arm64'">arm64 + <_R2RTargetArch Condition="'$(TargetArchitecture)' == 'x64'">x64 + + + <_AppleSdkName Condition="'$(TargetOS)' == 'ios'">iphoneos + <_AppleSdkName Condition="'$(TargetOS)' == 'iossimulator'">iphonesimulator + <_AppleSdkName Condition="'$(TargetOS)' == 'tvos'">appletvos + <_AppleSdkName Condition="'$(TargetOS)' == 'tvossimulator'">appletvsimulator + <_AppleSdkName Condition="'$(TargetOS)' == 'maccatalyst'">macosx + + + <_AppleTripleOS Condition="$(TargetOS.StartsWith('ios'))">ios + <_AppleTripleOS Condition="$(TargetOS.StartsWith('tvos'))">tvos + <_AppleTripleOS Condition="'$(TargetOS)' == 'maccatalyst'">ios + + <_AppleTripleAbi Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'"> + <_AppleTripleAbi Condition="'$(TargetOS)' == 'maccatalyst'">-macabi + <_AppleTripleAbi Condition="$(TargetOS.EndsWith('simulator'))">-simulator + + <_R2RTargetTriple>$(_R2RTargetArch)-apple-$(_AppleTripleOS)13.0$(_AppleTripleAbi) + + <_R2ROutputName>$(AssemblyName).r2r + + + + + + + + + + From a5e5d23ad17781e50f307c2c8871dac31b8b785f Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 4 Feb 2026 13:46:29 +0100 Subject: [PATCH 19/19] Update Crossgen2InBuildDir condition for Helix correlation payload --- src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index 5ff68f950a0958..acbbb7adbeaa56 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -18,7 +18,7 @@ $(BaseIntermediateOutputPath) $(TargetOS)-$(TargetArchitecture.ToLowerInvariant()) - $([MSBuild]::NormalizeDirectory($(HELIX_CORRELATION_PAYLOAD), 'build', 'crossgen2')) + $([MSBuild]::NormalizeDirectory($(HELIX_CORRELATION_PAYLOAD), 'build', 'crossgen2'))