diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
index 396fd6e87c324..93fef95d6a20f 100644
--- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
+++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
@@ -27,6 +27,8 @@ parameters:
enableMicrobuild: ''
gatherAssetManifests: false
shouldContinueOnError: false
+ compileOnHelix: false
+ interpreter: false
steps:
- template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml
@@ -72,49 +74,64 @@ steps:
env:
__MonoToolPrefix: aarch64-linux-gnu-
- # Send tests to Helix
- - template: /eng/pipelines/common/templates/runtimes/send-to-helix-step.yml
- parameters:
- displayName: Send tests to Helix
- buildConfig: $(buildConfigUpper)
- archType: ${{ parameters.archType }}
- osGroup: ${{ parameters.osGroup }}
- osSubgroup: ${{ parameters.osSubgroup}}
- coreClrRepoRoot: $(Build.SourcesDirectory)/src/coreclr
- shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
- runtimeFlavor: ${{ parameters.runtimeFlavor }}
- runtimeVariant: ${{ parameters.runtimeVariant }}
+ # Checks the value of the compileOnHelix parameter
+ # and if set invokes libraries pipeline for AOT on Helix
+ - ${{ if eq(parameters.compileOnHelix, 'true') }}:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ osGroup: ${{ parameters.osGroup }}
+ runtimeFlavor: ${{ parameters.runtimeFlavor }}
+ archType: ${{ parameters.archType }}
+ targetRid: ${{ parameters.targetRid }}
+ buildConfig: ${{ parameters.buildConfig }}
+ interpreter: ${{ parameters.interpreter }}
+ testRunNamePrefixSuffix: ${{ parameters.testRunNamePrefixSuffix }}
+ extraHelixArguments: ${{ parameters.extraHelixArguments }}
+ helixQueues: ${{ parameters.helixQueues }}
+ creator: ${{ parameters.creator }}
+ - ${{ else }}:
+ - template: /eng/pipelines/common/templates/runtimes/send-to-helix-step.yml
+ parameters:
+ displayName: Send tests to Helix
+ buildConfig: $(buildConfigUpper)
+ archType: ${{ parameters.archType }}
+ osGroup: ${{ parameters.osGroup }}
+ osSubgroup: ${{ parameters.osSubgroup}}
+ coreClrRepoRoot: $(Build.SourcesDirectory)/src/coreclr
+ shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
+ runtimeFlavor: ${{ parameters.runtimeFlavor }}
+ runtimeVariant: ${{ parameters.runtimeVariant }}
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- creator: $(Build.DefinitionName)
+ ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ creator: $(Build.DefinitionName)
- helixBuild: $(Build.BuildNumber)
- helixSource: $(_HelixSource)
+ helixBuild: $(Build.BuildNumber)
+ helixSource: $(_HelixSource)
- ${{ if ne(parameters.readyToRun, true) }}:
- helixType: 'test/functional/cli/'
+ ${{ if ne(parameters.readyToRun, true) }}:
+ helixType: 'test/functional/cli/'
- helixQueues: ${{ parameters.helixQueues }}
+ helixQueues: ${{ parameters.helixQueues }}
- # This tests whether an array is empty
- ${{ if eq(join('', parameters.helixQueues), '') }}:
- condition: false
+ # This tests whether an array is empty
+ ${{ if eq(join('', parameters.helixQueues), '') }}:
+ condition: false
- publishTestResults: true
+ publishTestResults: true
- timeoutPerTestInMinutes: $(timeoutPerTestInMinutes)
- timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes)
+ timeoutPerTestInMinutes: $(timeoutPerTestInMinutes)
+ timeoutPerTestCollectionInMinutes: $(timeoutPerTestCollectionInMinutes)
- runCrossGen2: ${{ eq(parameters.readyToRun, true) }}
- compositeBuildMode: ${{ parameters.compositeBuildMode }}
- runInUnloadableContext: ${{ parameters.runInUnloadableContext }}
- nativeAotTest: ${{ parameters.nativeAotTest }}
+ runCrossGen2: ${{ eq(parameters.readyToRun, true) }}
+ compositeBuildMode: ${{ parameters.compositeBuildMode }}
+ runInUnloadableContext: ${{ parameters.runInUnloadableContext }}
+ nativeAotTest: ${{ parameters.nativeAotTest }}
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- # Access token variable for internal project from the
- # DotNet-HelixApi-Access variable group
- helixAccessToken: $(HelixApiAccessToken)
+ ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ # Access token variable for internal project from the
+ # DotNet-HelixApi-Access variable group
+ helixAccessToken: $(HelixApiAccessToken)
- helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj'
+ helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj'
- scenarios: ${{ parameters.scenarios }}
+ scenarios: ${{ parameters.scenarios }}
diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml
index bc309786327ba..db259752135b0 100644
--- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml
+++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml
@@ -45,7 +45,8 @@ jobs:
extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
#
-# Build the whole product using Mono for iOS/tvOS and run runtime tests with iOS/tvOS devices
+# iOS/tvOS devices
+# Build the whole product using Mono and run runtime tests
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
@@ -82,9 +83,11 @@ jobs:
extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
extraStepsParameters:
creator: dotnet-bot
- # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254
- testBuildArgs: tree tracing/eventpipe
+ compileOnHelix: true
+ interpreter: true
+ testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
#
# Build the whole product using NativeAOT for iOS/tvOS and run runtime tests with iOS/tvOS devices
diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml
index d7643974c4e3c..357d5b881e7a3 100644
--- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml
+++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml
@@ -85,9 +85,11 @@ jobs:
extraStepsTemplate: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
extraStepsParameters:
creator: dotnet-bot
- # FIXME: Currently, tracing/eventpipe tests are only enabled on iOS platforms. It should be expanded to include all runtime tests. Tracking issue: https://github.com/dotnet/runtime/issues/84254
- testBuildArgs: tree tracing/eventpipe
+ compileOnHelix: true
+ interpreter: true
+ testBuildArgs: /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildTestsOnHelix=true
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
#
# Build the whole product using Native AOT for iOSSimulator/tvOSSimulator and run runtime tests with iOS/tvOS simulators
diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets
index 905488251c2d7..192e93689cbe6 100644
--- a/eng/testing/tests.ioslike.targets
+++ b/eng/testing/tests.ioslike.targets
@@ -20,11 +20,12 @@
<_AOTBuildCommand>$(_AOTBuildCommand)
<_ResetSimulatorSwitch Condition="'$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'tvossimulator'">--reset-simulator
- <_SignalAppEndSwitch Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">--signal-app-end
+ <_SignalAppEndSwitch>--signal-app-end
+ <_AppleSignCommand Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">sign "$app"
<_AfterBuildCommands>
mv $XHARNESS_OUT/AOTBuild.binlog "$HELIX_WORKITEM_UPLOAD_ROOT"
- sign "$app"
+ $(_AppleSignCommand)
xharness apple test --app "$app" --output-directory "$output_directory" --target "$target" --timeout "$timeout" --xcode "$xcode_path" -v --launch-timeout "$launch_timeout" $(_ResetSimulatorSwitch) $(_SignalAppEndSwitch) --
$(_AOTBuildCommand) $(_AfterBuildCommands)
@@ -61,14 +62,21 @@
-
-
-
+
+
+
+
+
-
+
+ Include="@(AppleAssembliesToBundle)" TargetDir="extraFiles" />
@@ -103,6 +111,8 @@
<_ApplePropertyNames Include="HybridGlobalization" />
<_ApplePropertyNames Include="AssemblyName" />
<_ApplePropertyNames Include="MonoEnableLLVM" />
+ <_ApplePropertyNames Include="UseRuntimeComponents" />
+ <_ApplePropertyNames Include="IsRuntimeTests" />
<_ApplePropertiesToPass
Include="$(%(_ApplePropertyNames.Identity))"
@@ -137,7 +147,7 @@
true
- AppleTestRunner.dll
+ AppleTestRunner.dll
$(PublishDir)
$(BundleDir)
diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets
index b150d2b5478fc..2770c97df7d67 100644
--- a/eng/testing/tests.mobile.targets
+++ b/eng/testing/tests.mobile.targets
@@ -8,7 +8,8 @@
$([MSBuild]::NormalizePath('$(BundleDir)', '$(RunScriptOutputName)'))
true
- Publish
+ Publish
+ Build
true
@@ -155,7 +156,7 @@
+
+ $([MSBuild]::NormalizePath('$(RunScriptOutputDirectory)', '$(RunScriptOutputName)'))
+
+
true
- true
@@ -11,6 +10,7 @@
+ true
$(TargetOS)-$(TargetArchitecture.ToLowerInvariant())
true
true
diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets
index 44b2f3bdf7895..e39cadc295133 100644
--- a/src/mono/msbuild/apple/build/AppleBuild.targets
+++ b/src/mono/msbuild/apple/build/AppleBuild.targets
@@ -155,6 +155,10 @@
<_AotExcludeAssemblies Include="*System.Runtime.WindowsRuntime.dll" />
+ <_AssembliesToBundleInternal>
+ <_InternalForceInterpret Condition="'$(MonoForceInterpreter)' == 'true' and '%(FileName)%(Extension)' != 'System.Private.CoreLib.dll'">true
+ <_IsNative>false
+
<_AotInputAssemblies Include="@(_AssembliesToBundleInternal)"
Condition="'%(_AssembliesToBundleInternal._InternalForceInterpret)' != 'true'">
diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj
index 8666057d3628b..6c166f7d629bd 100644
--- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj
+++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj
@@ -29,10 +29,15 @@
$(OriginalPublishDir)
$(TestRootDir)AppBundle\
- $(OriginalPublishDir)AppleTestRunner.dll
+ $(OriginalPublishDir)AppleTestRunner.dll
true
+
+ diagnostics_tracing;marshal-ilgen
+ 127.0.0.1:9000,nosuspend,listen
+
+
diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets
index fe922918c11ec..c8b7799fe630f 100644
--- a/src/tests/Directory.Build.targets
+++ b/src/tests/Directory.Build.targets
@@ -9,6 +9,29 @@
+
+ $(TargetOS).AnyCPU.$(Configuration)
+ $(ArtifactsDir)helix/
+ $(TestArchiveRoot)tests/
+ $(TestArchiveTestsRoot)$(OSPlatformConfig)/
+ $(TestArchiveRoot)runtime/
+
+ BuildMonoiOSApp
+ BuildMonoiOSApp
+ GenerateRunScript
+
+ true
+
+
+
+
+
+
+ $(ArtifactsDir)/tests/coreclr/obj/$(TargetOS).$(Platform).$(Configuration)/Managed/build/iOSApps/$(TestProjectName)/AppBundle
+
+
+
true
@@ -201,7 +224,7 @@
+ Condition="'@(NativeProjectBinaries)' == '' And '$(TargetOS)' != 'browser' And '$(TargetsMobile)' != 'true'"/>
$(CMDDIR_GrandParent)/$(CategoryWithSlash)/$(XUnitWrapperFileName)
$(IntermediateOutputPath)\iOSApps\$(Category)
$(XUnitTestBinBase)$(CategoryWithSlash)\$(Category).app
- diagnostics_tracing;marshal-ilgen
- 127.0.0.1:9000,nosuspend,listen
- True
+ <_MobileIntermediateOutputPath>$([MSBuild]::NormalizeDirectory($(IntermediateOutputPath), 'mobile'))
@@ -292,36 +290,26 @@
ios
tvossimulator
tvos
+ maccatalyst
+
$(ArtifactsBinDir)microsoft.netcore.app.runtime.$(RuntimePackOSSuffix)-$(TargetArchitecture)/$(Configuration)/runtimes/$(RuntimePackOSSuffix)-$(TargetArchitecture)
$(MicrosoftNetCoreAppRuntimePackDir)/native
-
-
-
- True
+ $([MSBuild]::NormalizeDirectory('$(BuildDir)', 'AppBundle'))
-
-
-
-
-
-
+
+
@(TestDlls->'%(Filename)')
-
-
- $([MSBuild]::NormalizeDirectory('$(BuildDir)', 'AppBundle'))
-
-
-
+
@@ -336,7 +324,6 @@
-
@@ -347,131 +334,71 @@
SourceFiles="%(ExtraDlls.Identity)"
DestinationFolder="$(BuildDir)/testdir-%(ExtraDlls.TestDllFilename)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_AOTMode Condition="'$(MonoForceInterpreter)' != 'true'">Full
- <_AOTMode Condition="'$(MonoForceInterpreter)' == 'true'">JustInterp
- @(MonoAOTCompilerDefaultAotArguments, ';')
- @(MonoAOTCompilerDefaultProcessArguments, ';')
- <_MobileIntermediateOutputPath>$([MSBuild]::NormalizeDirectory($(IntermediateOutputPath), 'mobile'))
-
-
-
- <_AppleAssembliesInternal Include="$(BuildDir)/**/*.dll" />
-
- <_AppleAssembliesInternal>
- <_InternalForceInterpret Condition="'$(MonoForceInterpreter)' == 'true' and '%(FileName)%(Extension)' != 'System.Private.CoreLib.dll'">true
- <_IsNative>false
-
-
- <_AotInputAssemblies Include="@(_AppleAssembliesInternal)"
- Condition="'%(_AppleAssembliesInternal._InternalForceInterpret)' != 'true'">
- $(AotArguments)
- $(ProcessArguments)
-
-
- <_AOT_InternalForceInterpretAssemblies Include="@(_AppleAssembliesInternal->WithMetadataValue('_InternalForceInterpret', 'true'))" />
- <_AppleAssembliesInternal Remove="@(_AppleAssembliesInternal)" />
-
-
-
- <_MonoAotCrossCompilerPath>$([MSBuild]::NormalizePath($(MonoAotCrossDir), 'mono-aot-cross'))
- <_MonoAotCrossCompilerPath Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">$(_MonoAotCrossCompilerPath).exe
- -
+
+ $(BuildDir)/
+ $(AssemblyName)
+ true
+ true
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_AppleAssembliesInternal Include="@(_AOT_InternalForceInterpretAssemblies)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tests/issues.targets b/src/tests/issues.targets
index 10155d494cbc3..64e10bd0e7202 100644
--- a/src/tests/issues.targets
+++ b/src/tests/issues.targets
@@ -2118,7 +2118,7 @@
-
+
https://github.com/dotnet/runtime/issues/46622
@@ -2302,7 +2302,7 @@
-
+
needs triage
@@ -2430,7 +2430,7 @@
-
+
expected failure: overlapped structs fail at AOT compile time, not runtime
@@ -2774,7 +2774,7 @@
-
+
https://github.com/dotnet/runtime/issues/48914
@@ -3096,7 +3096,7 @@
-
+
https://github.com/dotnet/runtime/issues/75756
@@ -3454,6 +3454,9 @@
Loads an assembly from file
+
+
+
System.Threading.Thread.UnsafeStart not supported
@@ -3714,7 +3717,7 @@
-
+
missing assembly
@@ -3940,23 +3943,44 @@
needs triage
-
-
-
-
+
needs triage
-
+
+ needs triage
+
+
needs triage
-
+
mobile and wasm don't support tests with native libraries. wasm also needs static linking
+
+
+ needs triage
+
+
+ needs triage
+
+
+
+
+
+ needs triage
+
+
+ needs triage
+
+
+ needs triage
+
+
+