[release/9.0.1xx] Merge main into release/9.0.1xx to get Xcode 16.1 Support#21611
[release/9.0.1xx] Merge main into release/9.0.1xx to get Xcode 16.1 Support#21611dalexsoto merged 176 commits intorelease/9.0.1xxfrom
Conversation
…Hub merge. (#21266) This will typically save between 1 and 2 minutes for every test run. But potentially much more if GitHub happens to be slow: ``` [...] Working on a PR, Undoing the github merge with main. ##[error]The task has timed out. [...] ```
Also show: * The network configuration * The load on the system / cpu usage (top)
This should speed up getting bots ready, since now we only run the provisionator once for each bot, and we also don't try to provision the same thing multiple times.
This pull request updates the following dependencies ## From https://github.com/dotnet/xharness - **Subscription**: 601bc5e1-1cae-44b5-cf5f-08db9342aa2f - **Build**: 20240926.1 - **Date Produced**: September 26, 2024 1:44:39 PM UTC - **Commit**: 7d5c32dbda0c6c8b9dc20cde4e1261b191896138 - **Branch**: refs/heads/main - **Updates**: - **Microsoft.DotNet.XHarness.iOS.Shared**: [from 10.0.0-prerelease.24467.4 to 10.0.0-prerelease.24476.1][1] [1]: dotnet/xharness@3cfb1a3...7d5c32d
New commits in xamarin/maccore: * xamarin/maccore@c1a17a2f80 [mlaunch] Install and launch apps without using the AMDevice API for devices that devicectl supports. Diff: https://github.com/xamarin/maccore/compare/ad4af9cde4..c1a17a2f80 Fixes #21274.
) This is a log from our bots, note the 14 minute gap just before printing the timing results: ``` [...] 2024-09-27T07:34:00.3958920Z Making install in dotnet 2024-09-27T07:34:01.7633820Z Validated file permissions for Xamarin.Mac. 2024-09-27T07:34:01.7800150Z Validated file permissions for Xamarin.iOS. 2024-09-27T07:34:01.7825300Z 2024-09-27T07:34:01.7872490Z Xamarin.iOS has not been installed into your system by 'make install' 2024-09-27T07:34:01.7918570Z In order to set the currently built Xamarin.iOS as your system version, 2024-09-27T07:34:01.7965090Z execute 'make install-system'. 2024-09-27T07:34:01.7987920Z 2024-09-27T07:34:01.8034290Z Xamarin.Mac has not been installed into your system by 'make install' 2024-09-27T07:34:01.8080260Z In order to set the currently built Xamarin.Mac as your system version, 2024-09-27T07:34:01.8126200Z execute 'make install-system'. 2024-09-27T07:34:01.8148530Z 2024-09-27T07:48:22.3100850Z 2024-09-27T07:48:22.3102130Z real 15m26.160s 2024-09-27T07:48:22.3102800Z user 1m4.044s 2024-09-27T07:48:22.3103270Z sys 0m18.379s ``` What happens is this: * We're using parallel make, and parallel make will start a jobserver, managed by file descriptors, where these file descriptors must be closed in all subprocesses for make to realize it's done. * Any 'dotnet build' might start a build server * The build server does not close any file descriptors it may have inherited when daemonizing itself. * Thus the build server (which will still be alive after we're done building here) might have a file descriptor open which make is waiting for. * The proper fix is to fix the build server to close its file descriptors. * The intermediate working is to shut down the build server instead. This will save 10-15 minutes at the end of every build in the bots.
It's only for legacy Xamarin.
Also remove some outdated watchOS ignores. Ref: #19781
…rchy. (#21341) The first Directory.Build.props should be imported, so do that.
#21330) Because there's nothing but .NET now.
* Whenever we add a GitHub comment, also provide a comment id. * When adding a GitHub comment, use that comment id to hide any previous comments with the same id. It turns out this simplifies the code a lot, and additionally we now correctly hide every comment we report whenever a step or stage is re-executed.
…assemblies. Fixes #19511. (#21305) We know BCL won't have library resources to unpack, so there's no need to spend any time looking at them. This also required porting the UnpackLibraryResources task to use System.Reflection.Metadata, because MetadataLoadContext requires the reference assemblies to be available to resolve assembly dependencies (and the idea is to not have to pass any reference assemblies to the task). Fixes #19511. Fixes #15030.
This is another step towards removing Mono.
This required a few changes:
* Nullability updates in test code.
* Explicitly sorted list of strings in a warning message, to make the warning text stable.
* Stopped merging system assemblies in the merged tasks assembly. This was necessary for to solve a problem with duplicate types:
* The netstandard2.0 version of `System.Reflection.Metadata.dll` contains
the `UnconditionalSuppressMessageAttribute` type (internally).
* Since we ILMerge the tasks assembly, this type ends up in
Xamarin.iOS.Tasks.dll (internally).
* The test assembly can't be a net472 assembly, because that means using
the netfx/desktop versions of the Microsoft.Build.* assemblies, which
don't work on .NET (they check for Mono, but .NET isn't Mono, so the
check fails and a PlatformNotSupportedException is thrown).
* So I bumped the test assembly to be a net8.0 assembly, but then there's
a conflict between the `UnconditionalSuppressMessageAttribute` shipped
in .NET vs the one in `Xamarin.iOS.Tasks.dll` (because the test assembly
can see the internals of `Xamarin.iOS.Tasks.dll`).
* The fix that seems to work is to *not* merge system assemblies in the
`Xamarin.iOS.Tasks.dll` assembly. `Xamarin.iOS.Tasks.Windows.dll`
already does this, so hopefully there are no problems on Windows, and on
macOS our tests doesn't reveal any problems.
VSTS recommends this in their docs. We are going to do it to make it simpler to track what triggers what.
…project file. (#21347) Building the custom-type-assembly assembly doesn't work quite right if the RuntimeIdentifier(s) variables are set in the environment from the project file, so don't forward those to the sub-make we execute to build the assembly. This fixes an issue where building monotouch-test would fail locally, because building the custom-type-assembly assembly would fail. Also remove legacy Xamarin logic.
* Update the makefiles to remove legacy logic. * Port the mtouch/mmp projects to a .NET project, and make the necessary code changes to keep it working (we still use mtouch/mmp during our build to generate the partial static registrar code). * Misc other related changes.
* Run both sets of Windows tests (local and remote), and fail afterwards if there are test failures. This way we get both test suites executed even if the first one fails. * Create a script for executing the local tests (makes it easier to run locally as well). * Make it possible to use a custom built .NET locally by honoring any DOTNET variable instead of blindly setting it (makes it easier to test locally). * Add a .gitignore for the test configuration file we create to run tests on Windows. * Some minor code simplifications.
These tests haven't found any issues in many years, and they're also based on legacy Xamarin, so just remove them instead of porting them to .NET.
It's not used anymore, because we only create a single markdown document for each platform in .NET (because we only ship a single assembly for each platform now).
This adds support for including all app icons in the app, as well as for specifying alternate app icons.
Including all app icons is enabled by setting the following MSBuild property:
```xml
<PropertyGroup>
<IncludeAllAppIcons>true</IncludeAllAppIcons>
</PropertyGroup>
````
This will make the `ACTool` task pass `--include-all-app-icons` to `actool` when compiling the asset catalog.
Specifying alternate app icon(s) is enabled by setting the following MSBuild item:
```xml
<ItemGroup>
<AlternateAppIcon Include="MyAlternateAppIcon" />
<AlternateAppIcon Include="MyOtherAlternateAppIcon" />
</ItemGroup>
```
Note that the included value is the name if the icon in question, not the path or the filename of the actual icon file (this way there's no need to have different items for different platforms, because there are some platform differences with regards to paths and icon file extensions).
In order to make the behavior consistent, this PR also adds support for specifying the app icon itself using an MSBuild property (in addition to the existing Info.plist property `XSAppIconAssets`, which will eventually be deprecated):
```xml
<PropertyGroup>
<AppIcon>MyAppIcon</AppIcon>
</PropertyGroup>
```
The same note applies here: the value is the name of the icon.
Note about platforms: the code is there for all platforms (iOS, tvOS, macOS and Mac Catalyst), but alternate app icons only seem to work for iOS and tvOS. `UIApplication.SupportsAlternateIcons` always returns `false` on Mac Catalyst (googling only find people in the same situation), and macOS doesn't have this API to begin with (nor anything similar):
Also:
* Add a bunch of tests.
* Document on our website: dotnet/docs-mobile#53
* Samples for iOS and tvOS: dotnet/macios-samples#2
Fixes #12790.
Fixes #20182.
…21571) Retry the test 10 times if it fails - it uses a shared resource (the pasteboard), so it's possible to run into race conditions if the same test also runs in a different process at the same time. Also remove code that we removed a long time ago, so that the test actually runs: 86ab2bc. Hopefully fixes xamarin/maccore#2569.
This pull request updates the following dependencies ## From https://github.com/dotnet/xharness - **Subscription**: 601bc5e1-1cae-44b5-cf5f-08db9342aa2f - **Build**: 20241029.1 - **Date Produced**: October 29, 2024 10:03:01 AM UTC - **Commit**: dad280573945a8a849b3b655d78706088320766f - **Branch**: refs/heads/main - **Updates**: - **Microsoft.DotNet.XHarness.iOS.Shared**: [from 10.0.0-prerelease.24524.9 to 10.0.0-prerelease.24529.1][1] [1]: dotnet/xharness@b12e9b9...dad2805
This is useful to verify that sweeping code changes actually compile everywhere.
* Remove all legacy code. * Fix all warnings. * Enable warnings as errors. * Started unifying code between macOS vs iOS/tvOS/MacCatalyst. * Updated README slightly.
…tion on Sequoia. (#21587) * Mark a few MediaExtension fields as Notification fields. * Remove extreanous NSSharingCollaborationModeRestriction.AlertRecoverySuggestionButtonLaunchUrl setter. * introspection: ignore methods that start with '_Init', aren't publicly visible, and bind an Objective-C constructor when verifying that a managed method doesn't bind an Objective-C constructor.
💻 [CI Build] Windows Integration Tests passed 💻✅ All Windows Integration Tests passed. Pipeline on Agent |
💻 [CI Build] Tests on macOS M1 - Mac Monterey (12) passed 💻✅ All tests on macOS M1 - Mac Monterey (12) passed. Pipeline on Agent |
💻 [CI Build] Tests on macOS M1 - Mac Ventura (13) passed 💻✅ All tests on macOS M1 - Mac Ventura (13) passed. Pipeline on Agent |
💻 [CI Build] Tests on macOS X64 - Mac Sonoma (14) passed 💻✅ All tests on macOS X64 - Mac Sonoma (14) passed. Pipeline on Agent |
✅ API diff for current PR / commit.NET (No breaking changes)✅ API diff vs stable.NET (No breaking changes)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
🚀 [CI Build] Test results 🚀Test results✅ All tests passed on VSTS: test results. 🎉 All 101 tests passed 🎉 Tests counts✅ cecil: All 1 tests passed. Html Report (VSDrops) Download Pipeline on Agent |
No description provided.