Skip to content

[release/9.0.1xx] Merge main into release/9.0.1xx to get Xcode 16.1 Support#21611

Merged
dalexsoto merged 176 commits intorelease/9.0.1xxfrom
merge-main-into-9
Nov 14, 2024
Merged

[release/9.0.1xx] Merge main into release/9.0.1xx to get Xcode 16.1 Support#21611
dalexsoto merged 176 commits intorelease/9.0.1xxfrom
merge-main-into-9

Conversation

@dalexsoto
Copy link
Copy Markdown
Member

No description provided.

rolfbjarne and others added 30 commits September 27, 2024 10:16
…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.
…. (#21336)

* CTLine crashes with certain NSAttributedStrings, so don't do that. This fixes #18656.
* Implement this test for macOS.
* Misc other fixes.

Fixes #18656.
…rchy. (#21341)

The first Directory.Build.props should be imported, so do that.
1. Enable nullability.
2. Move Get|SetTitleTextAttributes to generated code.
3. Remove dead code (pre-.NET code paths).

Point 2. fixes #21289, so add tests for this scenario.

Fixes #21289.
* 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.
…ixes #6474. (#21346)

These constructors haven't worked since macOS 10.14 (see #6474), so just
remove them (when we can make breaking changes).

Fixes #6474.
…e a bit more lax. Fixes #6690. (#21348)

This way we can actually run the test.

Fixes #6690.
rolfbjarne and others added 17 commits November 1, 2024 08:05
* 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.
@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

💻 [CI Build] Windows Integration Tests passed 💻

All Windows Integration Tests passed.

Pipeline on Agent
Hash: 280bc7d1d611786e500cffa0d63af140ee1da26b [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

💻 [CI Build] Tests on macOS M1 - Mac Monterey (12) passed 💻

All tests on macOS M1 - Mac Monterey (12) passed.

Pipeline on Agent
Hash: 280bc7d1d611786e500cffa0d63af140ee1da26b [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

💻 [CI Build] Tests on macOS M1 - Mac Ventura (13) passed 💻

All tests on macOS M1 - Mac Ventura (13) passed.

Pipeline on Agent
Hash: 280bc7d1d611786e500cffa0d63af140ee1da26b [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

💻 [CI Build] Tests on macOS X64 - Mac Sonoma (14) passed 💻

All tests on macOS X64 - Mac Sonoma (14) passed.

Pipeline on Agent
Hash: 280bc7d1d611786e500cffa0d63af140ee1da26b [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

✅ API diff for current PR / commit

.NET (No breaking changes)

✅ API diff vs stable

.NET (No breaking changes)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: 280bc7d1d611786e500cffa0d63af140ee1da26b [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

🚀 [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
✅ dotnettests (iOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. Html Report (VSDrops) Download
✅ fsharp: All 4 tests passed. Html Report (VSDrops) Download
✅ generator: All 3 tests passed. Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. Html Report (VSDrops) Download
✅ introspection: All 4 tests passed. Html Report (VSDrops) Download
✅ linker: All 40 tests passed. Html Report (VSDrops) Download
✅ monotouch (iOS): All 7 tests passed. Html Report (VSDrops) Download
✅ monotouch (MacCatalyst): All 8 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 9 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 7 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. Html Report (VSDrops) Download

Pipeline on Agent
Hash: 280bc7d1d611786e500cffa0d63af140ee1da26b [PR build]

@dalexsoto dalexsoto merged commit 24949a1 into release/9.0.1xx Nov 14, 2024
@dalexsoto dalexsoto deleted the merge-main-into-9 branch November 14, 2024 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants