-
Notifications
You must be signed in to change notification settings - Fork 285
Update MAUI iOS samples to .NET 11 workloads and add CoreCLR interpreter support #5030
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
4b96381 to
3d304ab
Compare
…errors with Xcode 26.0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR updates MAUI iOS samples to use .NET 11 workloads and adds support for running with the CoreCLR interpreter. The changes temporarily disable certain MAUI scenarios until .NET 11 packages are available, update SDK and workload package versions, and introduce CoreCLR interpreter configuration options.
- Removes the generic
--nativeaotcommand-line argument in favor of MSBuild properties for more granular runtime and codegen control - Adds CoreCLR interpreter support for iOS benchmarks alongside existing Mono and NativeAOT configurations
- Updates macOS/iOS SDK dependencies from version 18.5 to 26.1 with .NET 11 compatibility
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/scenarios/shared/precommands.py | Removes deprecated --nativeaot argument and related command-line handling |
| src/scenarios/netios/pre.py | Adds /p:TargetsCurrent=true workaround for .NET 11 workload availability |
| src/scenarios/mauiios/pre.py | Adds /p:TargetsCurrent=true workaround with indentation issue in comment |
| src/scenarios/mauiblazorios/pre.py | Adds /p:TargetsCurrent=true workaround for Blazor template |
| scripts/run_performance_job.py | Adds --break-system-packages flag for pip on macOS to handle system Python restrictions |
| scripts/dotnet.py | Generalizes SDK version detection to support major version increments (e.g., net10.0 → SDK 11.0) |
| scripts/channel_map.py | Adds nativeaot11.0 channel mapping for .NET 11 NativeAOT builds |
| eng/pipelines/sdk-perf-jobs.yml | Adds new CoreCLR interpreter job configuration for MAUI iOS scenarios |
| eng/performance/maui_scenarios_ios.proj | Replaces --nativeaot with MSBuild properties, updates Xcode version, temporarily disables MAUI templates, contains typo in commented test command |
| eng/Version.Details.xml | Updates macOS/iOS SDK dependencies from 18.5 to 26.1 versions with new commit SHA |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
| RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run() | ||
| RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run() | ||
| RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run() | ||
| break_system_packages = ["--break-system-packages"] if args.os_group == "osx" else [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To double check, the new --break-system-packages will hopefully allow these calls to succeed on OSX because without it we get an error about the environment being externally managed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it fixes the failures in #5054
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason why we don't create a python environment (venv) and instead we use the global system python? cc: @LoopedBard3
| <Sha>1dcfb6f8779c33b6f768c996495cb90ecd729329</Sha> | ||
| </Dependency> | ||
| <Dependency Name="Microsoft.MacCatalyst.Sdk.net10.0_18.5" Version="18.5.10824-net10-rc.2"> | ||
| <Dependency Name="Microsoft.MacCatalyst.Sdk.net10.0_26.1" Version="26.1.10555-ci.net11-0"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you also update the maestro/darc feeds for these?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are two darc subscriptions for macios repo:
https://github.com/dotnet/macios (.NET 10.0.1xx SDK) ==> 'https://github.com/dotnet/performance' ('main')
- Id: 47f1dd75-a07a-4071-a43a-0a3050de377c
- Update Frequency: EveryBuild
- Enabled: True
- Batchable: False
- Excluded Assets: []
- PR Failure Notification tags:
- Source-enabled: False
- Merge Policies:
Standard
ignoreChecks = []
- Last Build: 20251215.11 (c60d1ae6ba4fd32ef99ccf94aca56e03c51eab86)
https://github.com/dotnet/macios (.NET 9.0.1xx SDK) ==> 'https://github.com/dotnet/performance' ('main')
- Id: 764d9e7b-4353-484e-a756-e1d6d03fd0a9
- Update Frequency: EveryBuild
- Enabled: True
- Batchable: False
- Excluded Assets: []
- PR Failure Notification tags:
- Source-enabled: False
- Merge Policies:
Standard
ignoreChecks = []
- Last Build: 20251008.10 (4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3)
Should I update 47f1dd75-a07a-4071-a43a-0a3050de377c to be .NET 11 and remove 764d9e7b-4353-484e-a756-e1d6d03fd0a9? I assume it isn't intended to have different subscriptions for the main branch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, one other update should be made to the .NET 9 versions below these updated ones, adding in the CoherentParentDependency, something like updating the lines to these:
<!-- Previous .NET iOS version(s) -->
<!-- This is a subscription of the .NET 9 latest stable versions of our packages -->
<Dependency Name="Microsoft.MacCatalyst.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.MacCatalyst.Sdk.net10.0_26.1">
<Uri>https://github.com/dotnet/macios</Uri>
<Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
</Dependency>
<Dependency Name="Microsoft.macOS.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.macOS.Sdk.net10.0_26.1">
<Uri>https://github.com/dotnet/macios</Uri>
<Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
</Dependency>
<Dependency Name="Microsoft.iOS.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.iOS.Sdk.net10.0_26.1">
<Uri>https://github.com/dotnet/macios</Uri>
<Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
</Dependency>
<Dependency Name="Microsoft.tvOS.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.tvOS.Sdk.net10.0_26.1">
<Uri>https://github.com/dotnet/macios</Uri>
<Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
</Dependency>
With that update, we should be good to remove the 9.0 feed and update the 10.0 feed to 11.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
https://github.com/dotnet/macios (.NET 11.0.1xx SDK) ==> 'https://github.com/dotnet/performance' ('main')
- Id: 47f1dd75-a07a-4071-a43a-0a3050de377c
- Update Frequency: EveryBuild
- Enabled: True
- Batchable: False
- Excluded Assets: []
- PR Failure Notification tags:
- Source-enabled: False
- Merge Policies:
Standard
ignoreChecks = []
- Last Build: 20251215.12 (782cd38346496c32075b87baa9b6c5ffa0fa078c)
| RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run() | ||
| RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run() | ||
| RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run() | ||
| break_system_packages = ["--break-system-packages"] if args.os_group == "osx" else [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason why we don't create a python environment (venv) and instead we use the global system python? cc: @LoopedBard3
…ance into feature/maui-coreclr
Description
This PR updates the MAUI iOS samples to use .NET 11 workloads and adds support for running with the CoreCLR interpreter.
Changes
Validation
Test run: https://dev.azure.com/dnceng/internal/_build/results?buildId=2862740&view=results
Out of scope
Device startup measurements are currently unreliable and may fail due to a device connection issue. This is a known issue and is being handled separately by the engineering team.
Contributes to dotnet/runtime#120054
Fixes #5054