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 + + +