Граф коммитов

17364 Коммитов

Автор SHA1 Сообщение Дата
dotnet-maestro[bot] 244f5ea611
[main] Update dependencies from xamarin/xamarin-macios (#20179)
This pull request updates the following dependencies

## From https://github.com/xamarin/xamarin-macios

- **Subscription**: 3ba82e10-e94b-4c1c-df8b-08dc11e0730b
- **Build**: 20240222.2
- **Date Produced**: February 22, 2024 9:59:03 AM UTC
- **Commit**: ed1726f6e8
- **Branch**: refs/heads/release/7.0.3xx

- **Updates**:
  - **Microsoft.MacCatalyst.Sdk**: [from 16.4.7139 to 16.4.7140][4]

[4]: 1a5ab51e6f...ed1726f6e8
2024-02-22 16:31:16 +01:00
Manuel de la Pena 94c8da8e53
[CI] Generate reports for the governance general checks (not APIScan). (#20173) 2024-02-22 08:20:48 -05:00
Manuel de la Pena 9352e70284
[CI] Remove a job that won't be needed. (#20172) 2024-02-22 08:19:56 -05:00
Rolf Bjarne Kvinge c30f099659
[tests] Define NATIVEAOT in our common csproj file instead of xharness when building with NativeAOT. (#19914)
This avoids problems when building and running test suites from the command
line (we'll use the same defines as in xharness).

Some changes in xharness were needed in order to set the
PublishAot/_IsPublishing properties early enough.
2024-02-22 09:23:49 +01:00
Rolf Bjarne Kvinge a231083ae5
[CoreFoundation] Make P/Invokes in CFSocket have blittable signatures. (#20162)
Contributes towards #15684.
2024-02-22 09:17:25 +01:00
Rolf Bjarne Kvinge dbbf9c3d86
[runtime] Don't register Runtime.CreateDelegateProxy when using the managed static registrar. (#20164)
It'll never be called from the generated code from the managed static
registrar, so there's no need to register it as a potential callback from
native code.

This makes the linker able to remove the Runtime.CreateDelegateProxy method
(and a few other methods as well) when using the managed static registrar (and
thus not warn about these methods doing un-trimmable stuff).

Contributes towards #10405.
2024-02-22 08:51:34 +01:00
Rolf Bjarne Kvinge 64d7a2076c
[CoreFoundation] Fix CFWriteStream.DoGetProperty to actually get the property. (#20158)
Ref: aa13dcb506

First line in the description is:

> Fixed CFWriteStream.DoGetProperty to call CFWriteStreamCopyProperty (and not CFReadStreamCopyProperty)

But that's not what the actual change does.. so change it to do the right thing.
2024-02-22 08:51:10 +01:00
Rolf Bjarne Kvinge c9aafd274d
[GitOps] Add an opt-out for automated comments for need-* labels. (#20170)
Currently a descriptive comment is automatically added to an issue when either
the 'need-info' or the 'need-repro' label is added to an issue, requesting
more info or a test project, respectively, and then when the reporter (or
anyone else) comments something, the `need-info`/`need-repro` label is removed
and a `need-attention` label is added.

However, sometimes this can get repetitive if the reporter replies frequently,
or someone else steps in and answers questions or asks unrelated questions,
and we have to add back the `need-info` or `need-repro` every time.

So add an opt-out: if the label `no-auto-reply` is set, then don't add that
descriptive comment.

The label is single-use: it'll be removed when a `need-info` or `need-repro`
labels is added.
2024-02-22 08:49:31 +01:00
Rolf Bjarne Kvinge 89c7f07546
[CoreFoundation] Make P/Invokes in CFMessagePort have blittable signatures. (#20160)
Contributes towards #15684.
2024-02-22 08:49:05 +01:00
Rolf Bjarne Kvinge 488e30c87a
[msbuild] Remove 'UsingTask' statement trying to load a task that doesn't exist. (#20151)
The task in question is never used, so that's why this hasn't been a problem.
2024-02-21 16:39:24 +01:00
Rolf Bjarne Kvinge b099691015
[introspection] Fix calling base in iOSApiCtorInitTest.SkipCheckShouldReExposeBaseCtor. (#20154)
The Skip* overrides in introspection are of the type "Do we skip? If not, then
I don't know, and we should call base", but the implementation of
iOSApiCtorInitTest.SkipCheckShouldReExposeBaseCtor is wrong, it just says to
not skip for every type except the one the method knows about.

So adjust the logic to call base if
iOSApiCtorInitTest.SkipCheckShouldReExposeBaseCtor has no knowledge of the
type in question.
2024-02-21 10:41:28 +01:00
Rolf Bjarne Kvinge 79ac366c8f
[Foundation] Don't leak exceptions in WrappedNSInputStream.Read. (#20131)
We don't want to leak exceptions back to the calling native code in WrappedNSInputStream.Read, because that will likely crash the process.

Example stack trace:

    ObjectDisposed_StreamClosed (System.ObjectDisposedException)
       at System.ThrowHelper.ThrowObjectDisposedException_StreamClosed(String) + 0x3c
       at System.IO.MemoryStream.Read(Byte[], Int32, Int32) + 0x124
       at System.Net.Http.MultipartContent.ContentReadStream.Read(Byte[], Int32, Int32) + 0x78
       at System.Net.Http.NSUrlSessionHandler.WrappedNSInputStream.Read(IntPtr buffer, UIntPtr len) + 0x58
       at MyApp!<BaseAddress>+0x7082f8

Instead return -1 from the Read method, which is documented as an error
condition, and then also return a custom NSError from the Error property -
which is also documented to be where the error is supposed to be surfaced.

Ref: https://developer.apple.com/documentation/foundation/nsinputstream/1411544-read

Ref: https://github.com/xamarin/xamarin-macios/issues/20123.
2024-02-21 10:29:33 +01:00
Rolf Bjarne Kvinge 16be59f7d6
[dotnet] Show a better error when using a .NET framework version we don't support. (#20142)
If a project tried to use a .NET 6 project (say TargetFramework=net6.0-ios), then
we used to show these rather unhelpful errors:

    error NETSDK1147: To build this project, the following workloads must be installed: wasm-tools-net6
    error NETSDK1147: To install these workloads, run the following command: dotnet workload restore

The underlying problem is that we don't support .NET 6 anymore, so with this fix we now show:

    error NETSDK1202: The workload 'net6.0-ios' is out of support and will not receive security updates in the future. Please refer to https://aka.ms/maui-support-policy for more information about the support policy.

which is much more helpful.

References:

* https://github.com/dotnet/sdk/pull/32426
* https://github.com/xamarin/xamarin-android/pull/8047

Fixes https://github.com/xamarin/xamarin-macios/issues/18790.
2024-02-21 10:07:09 +01:00
Rolf Bjarne Kvinge fa0db16209
[AddressBook] Make P/Invokes have blittable signatures. (#20145)
Contributes towards #15684.
2024-02-20 16:47:23 +01:00
Rolf Bjarne Kvinge b1cd69220f
[runtime] Don't register Runtime.GetGenericMethodFromToken when the managed static registrar is used. (#20144)
It'll never be called from the generated code from the managed static
registrar, so there's no need to register it as a potential callback from
native code.

This makes the linker able to remove the Runtime.GetGenericMethodFromToken
method (and a few other methods as well).

Contributes towards #10405.
2024-02-20 16:47:13 +01:00
Rolf Bjarne Kvinge 59287e90bf
[tests] Collect info about installed XMA build agents to try to track down an installation failure. (#20134)
Collect info to try to track down this random failure:

	[...]
    [xma][info]: Uploaded Build.zip 100%
    [xma][info]: Successfully copied /tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip
    [xma][info]: Checking integrity of uploaded file /tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip...
    [xma][info]: Executing SSH command: '/usr/bin/shasum -a 256 "/tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip" | awk "{ print $1 }"'
    [xma][info]: Trying to copy to '/tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip' to cache...
    [xma][info]: Executing SSH command: 'mkdir -p "/Users/builder/Library/Caches/Xamarin/XMA/Cache"'
    [xma][info]: Executing SSH command: 'cp -f "/tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip" "/Users/builder/Library/Caches/Xamarin/XMA/Cache/c3cbbdd25de4805022ca502605de17757ace8ffd3d5458dec1142c1f88211587"'
    [xma][info]: Successfully copied '/tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip' to cache
    [xma][info]: Unzipping file '/tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip' to '/Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8'
    [xma][info]: Executing SSH command: 'ls "/Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8"'
    [xma][info]: Creating directory '/Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8' for installation...
    [xma][info]: Executing SSH command: 'mkdir -p "/Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8"'
    [xma][info]: Executing SSH command: 'unzip -o "/tmp/Build-1.13.0.8-992eab55-04bf-44f3-b12d-df4b6ec5efb7/Build.zip" -d "/Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8"'
    [xma][info]: Executing SSH command: 'ls "/Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8"'
    [xma][info]: Executing SSH command: 'find "/Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8/" -type f | while read line ; do /usr/bin/shasum -a 256 "$line" | awk "{ print $1 }" ; done'
    [xma][warn]: Integrity check failed between source and target content. Source path: d:\azdo\_work\1\s\xamarin-macios\tests\dotnet\windows\bin\dotnet\packs\Microsoft.iOS.Windows.Sdk\17.2.8172-ci.main\tools\msbuild\iOS\Build.zip, Target path: /Users/builder/Library/Caches/Xamarin/XMA/Agents/Build/1.13.0.8
    [xma][err]: Unable to install the Agent 'Build 1.13.0.8'
    [xma][info]: An error occurred while trying to start the Build Agent. Details: Unable to install the Agent 'Build 1.13.0.8'
    exception: An error occurred while installing Build 1.13.0.8
2024-02-20 16:47:02 +01:00
Rolf Bjarne Kvinge dd363191cc
[dotnet-linker] Add ProcessExportedFields to the list of steps we execute. Fixes #20061. (#20066)
Fixes https://github.com/xamarin/xamarin-macios/issues/20061.
2024-02-20 16:46:47 +01:00
Rolf Bjarne Kvinge 0cdeeb1fb0
[ModelIO] Make P/Invokes have blittable signatures. (#20153) 2024-02-20 16:46:34 +01:00
Rolf Bjarne Kvinge b69ad31093
[src] Remove any 32-bit logic not applicable to watchOS. (#20152)
Since watchOS is the only platform left supporting 32-bit CPUs.
2024-02-20 16:46:24 +01:00
Rolf Bjarne Kvinge ac87028e24
[devops] Don't allow re-running just the Windows tests job. (#20116)
Don't allow re-running just the Windows tests job, because the Mac that was
reserved for us isn't reserved anymore.

Instead all the jobs must be re-run.

Accomplish this by storing the current BuildId in a file on the Mac bot, and
then verifying that it's the expeted BuildId from the test step from Windows.
2024-02-20 12:01:19 +01:00
dotnet-maestro[bot] 1e4ebfc971
[main] Update dependencies from xamarin/xamarin-macios (#20149)
This pull request updates the following dependencies

## From https://github.com/xamarin/xamarin-macios

- **Subscription**: 3ba82e10-e94b-4c1c-df8b-08dc11e0730b
- **Build**: 20240219.30
- **Date Produced**: February 19, 2024 11:14:06 PM UTC
- **Commit**: 1a5ab51e6f
- **Branch**: refs/heads/release/7.0.3xx

- **Updates**:
  - **Microsoft.macOS.Sdk**: [from 13.3.7135 to 13.3.7139][4]

[4]: 82bf12c9d7...1a5ab51e6f
2024-02-20 07:49:10 +01:00
dotnet-maestro[bot] abbcbef361
[main] Update dependencies from dotnet/xharness (#20143)
This pull request updates the following dependencies

## From https://github.com/dotnet/xharness

- **Subscription**: 601bc5e1-1cae-44b5-cf5f-08db9342aa2f
- **Build**: 20240212.4
- **Date Produced**: February 12, 2024 8:09:06 PM UTC
- **Commit**: 11ae3663fe3de366ea3566d7ae9b4731adee2ca3
- **Branch**: refs/heads/main

- **Updates**:
  - **Microsoft.DotNet.XHarness.iOS.Shared**: [from 9.0.0-prerelease.24112.1 to 9.0.0-prerelease.24112.4][1]

[1]: 2f3f51a1ad...11ae3663fe
2024-02-19 21:40:33 +01:00
dotnet-maestro[bot] f8c4db9e5b
[main] Update dependencies from dotnet/installer (#20139)
This pull request updates the following dependencies

## From https://github.com/dotnet/installer

- **Subscription**: 80cb9ffd-f92f-4fc8-9f8b-08dbca46abfb
- **Build**: 20240219.1
- **Date Produced**: February 19, 2024 10:06:33 AM UTC
- **Commit**: 96079bf81dc2299f54c3a0673fed1cf58ca2a2a5
- **Branch**: refs/heads/release/8.0.1xx

- **Updates**:
  - **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.103-servicing.24115.2 to 8.0.103-servicing.24119.1][1]

[1]: 124c9f8435...96079bf81d
2024-02-19 18:13:03 +01:00
Rolf Bjarne Kvinge 3c0ffac0ee
[tests] Unignore the BuildNet7_0App test. Fixes #18655. (#19768)
Fixes https://github.com/xamarin/xamarin-macios/issues/18655.
2024-02-19 17:54:20 +01:00
Rolf Bjarne Kvinge f0050b1f83
[dotnet] Disable support for custom runtime hosting. (#20128)
We don't need it, and it causes a trimmer warning.
2024-02-19 14:22:04 +01:00
Rolf Bjarne Kvinge 8b888f0375
[dotnet] Rename packs to contain target framework. (#19765)
This is the first step towards [multi-targeting support][1]. In order to
support multi-targeting, it must be possible to install several versions of
our packs simultaneously, and that also means that it becomes a lot easier to
visualize and work with the version we want to support if the packs were named
in a helpful way.

In particular, this PR changes the sdk, ref and runtime pack names to contain
the target framework + target platform version.

This will be the new names:

* iOS

    * Microsoft.iOS.Sdk.net8.0_17.2
    * Microsoft.iOS.Ref.net8.0_17.2
    * Microsoft.iOS.Runtime.ios-arm64.net8.0_17.2
    * Microsoft.iOS.Runtime.iossimulator-arm64.net8.0_17.2
    * Microsoft.iOS.Runtime.iossimulator-x64.net8.0_17.2

* tvOS

    * Microsoft.tvOS.Sdk.net8.0_17.2
    * Microsoft.tvOS.Ref.net8.0_17.2
    * Microsoft.tvOS.Runtime.ios-arm64.net8.0_17.2
    * Microsoft.tvOS.Runtime.iossimulator-arm64.net8.0_17.2
    * Microsoft.tvOS.Runtime.iossimulator-x64.net8.0_17.2

* Mac Catalyst

    * Microsoft.MacCatalyst.Sdk.net8.0_17.2
    * Microsoft.MacCatalyst.Ref.net8.0_17.2
    * Microsoft.MacCatalyst.Runtime.maccatalyst-x64.net8.0_17.2
    * Microsoft.MacCatalyst.Runtime.maccatalyst-arm64.net8.0_17.2

* macOS

    * Microsoft.macOS.Sdk.net8.0_14.2
    * Microsoft.macOS.Ref.net8.0_14.2
    * Microsoft.macOS.Runtime.osx-x64.net8.0_14.2
    * Microsoft.macOS.Runtime.osx-arm64.net8.0_14.2

There are two main benefits to renaming the packs:

* It becomes a lot easier to understand which versions we support when we
  support multi-targeting. For example, say we want to support:

	* net8.0-ios17.0
	* net8.0-ios17.2
	* net9.0-ios18.0

    In this case we'd ship packs for `Microsoft.iOS.Sdk.net8.0_17.0`,
    `Microsoft.iOS.Sdk.net8.0_17.2`, `Microsoft.iOS.Sdk.net9.0_18.0` (the
    exact version number for each pack wouldn't be important).

    If we didn't change the pack names, we'd need to track the exact versions
    of the Microsoft.iOS.Sdk pack, mapping them to the correct target
    framework + target platform version we want to support.

* It'll be possible to add maestro subscriptions between versions. Given the
  previous example:

	* net8.0-ios17.0
	* net8.0-ios17.2
	* net9.0-ios18.0

	The branch producing `net9.0-ios8.0` could have a maestro subscription on
	the branches producing `net7.0-ios17.0` and `net7.0-ios17.2`,
	automatically bumping the versions whenever those branches have any
	changes.

	This would be rather annoying to keep track of and bump manually.

[1]: https://github.com/xamarin/xamarin-macios/blob/main/docs/multi-target-framework.md
2024-02-19 13:14:20 +01:00
dotnet-maestro[bot] 8c59da0611
[main] Update dependencies from dotnet/installer (#20121)
This pull request updates the following dependencies

## From https://github.com/dotnet/installer

- **Subscription**: 80cb9ffd-f92f-4fc8-9f8b-08dbca46abfb
- **Build**: 20240215.2
- **Date Produced**: February 15, 2024 4:23:16 PM UTC
- **Commit**: 124c9f84352a3f8950f69e0661c4983ec55be350
- **Branch**: refs/heads/release/8.0.1xx

- **Updates**:
  - **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.103-servicing.24112.7 to 8.0.103-servicing.24115.2][10]
  - **Microsoft.NET.ILLink.Tasks**: [from 8.0.1 to 8.0.2][11]
  - **Microsoft.AspNetCore.App.Ref**: [from 8.0.1 to 8.0.2][12]
  - **Microsoft.NETCore.App.Ref**: [from 8.0.1 to 8.0.2][11]
  - **Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100**: [from 8.0.1 to 8.0.2][13]
  - **Microsoft.NETCore.App.Ref**: [from 8.0.1 to 8.0.2][11]

[10]: 43e7082a34...124c9f8435
[11]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCbf5e279d9239bfef5bb1b8d6212f1b971c434606&targetVersion=GC1381d5ebd2ab1f292848d5b19b80cf71ac332508&_a=files
[12]: https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore/branches?baseVersion=GC8e941eb42f819adb116b881195158b3887a70a1c&targetVersion=GCda7e9894ce22ef8cc02e5acc56e95a6f8cf8f644&_a=files
[13]: 201f4dae9d...2fc2ffd960

## Coherency Updates

The following updates ensure that dependencies with a *CoherentParentDependency*
attribute were produced in a build used as input to the parent dependency's build.
See [Dependency Description Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview)

- **Coherency Updates**:
  - **Microsoft.NET.ILLink.Tasks**: from 8.0.1 to 8.0.2 (parent: Microsoft.Dotnet.Sdk.Internal)
  - **Microsoft.AspNetCore.App.Ref**: from 8.0.1 to 8.0.2 (parent: Microsoft.Dotnet.Sdk.Internal)
  - **Microsoft.NETCore.App.Ref**: from 8.0.1 to 8.0.2 (parent: Microsoft.Dotnet.Sdk.Internal)
  - **Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100**: from 8.0.1 to 8.0.2 (parent: Microsoft.NETCore.App.Ref)
  - **Microsoft.NETCore.App.Ref**: from 8.0.1 to 8.0.2 (parent: Microsoft.Dotnet.Sdk.Internal)
2024-02-19 08:52:49 +01:00
Manuel de la Pena af6a63949a
[Tests] Fix trim warnings tests (#20132)
Two changes:

1. Fix the tests by not using the Configuration.SourceRoot property. There is a bug in that code that returns diff paths in some bots.
2. Use Assert.Multiple for better error formatting.

---------

Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
2024-02-18 10:05:31 -05:00
Rolf Bjarne Kvinge da2525b7fb
[tests] Add test to keep track of trimmer warnings. (#20125)
Add test to keep track of trimmer warnings and to make sure we don't accidentally
introduce new ones.

Ref: https://github.com/xamarin/xamarin-macios/issues/10405
2024-02-16 16:53:12 +01:00
Rolf Bjarne Kvinge f392bbd3b2
[Accessibility] Make P/Invokes have blittable signatures. (#20124)
Contributes towards #15684.

---------

Co-authored-by: Alex Soto <alex@alexsoto.me>
2024-02-16 16:52:39 +01:00
dotnet-maestro[bot] 41a816e7ea
[main] Update dependencies from xamarin/xamarin-macios (#20094)
This pull request updates the following dependencies

## From https://github.com/xamarin/xamarin-macios

- **Subscription**: 3ba82e10-e94b-4c1c-df8b-08dc11e0730b
- **Build**: 20240212.13
- **Date Produced**: February 12, 2024 6:06:49 PM UTC
- **Commit**: 82bf12c9d7
- **Branch**: refs/heads/release/7.0.3xx

- **Updates**:
  - **Microsoft.MacCatalyst.Sdk**: [from 16.4.7134 to 16.4.7135][8]

[8]: 89166ac077...82bf12c9d7
2024-02-16 16:51:51 +01:00
Manuel de la Pena ee4ce5802a
[CI] Provide the real platform version to APIScan. (#20109)
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
2024-02-16 08:17:59 -05:00
Rolf Bjarne Kvinge 4cb499e256
[MediaAccessibility] Make P/Invokes have blittable signatures. (#20120)
Contributes towards #15684.
2024-02-16 13:26:05 +01:00
Rolf Bjarne Kvinge 217d0d7da2
[devops] Split the re-enabling of the macOS bot for Windows tests to its own job. (#20115)
Split the re-enabling of the macOS bot for the Windows tests to its own job,
so that we can stop running the tests job even if the reservation job failed.

---------

Co-authored-by: Alex Soto <alex@alexsoto.me>
2024-02-16 10:45:00 +01:00
Rolf Bjarne Kvinge f7f53b741b
[tests] Verify that we have a remote connection in tests that require a remote connection. (#20114)
By default, the build will just continue if a remote connection couldn't be
established. For tests that require a remote connection, this often results in
weird errors later on in the build, so improve this by immediately verifying
that we were able to establish a remote connection and telling the developer
where to look for more information.

---------

Co-authored-by: Alex Soto <alex@alexsoto.me>
2024-02-16 10:41:52 +01:00
Manuel de la Pena a58ed221e0
[CI] Allow to do a retry to run the windows integration tests. (#20110)
Sometimes we have some failures that are solved with a retry. They are
not common and tests are fast so we can retry.
2024-02-15 18:00:32 -05:00
Manuel de la Pena 2ec4d76900
[CI] Retry running the mac tests on CI if they fail. (#20108)
This tests are fast, they usually do not fail, but if they do is due to
networking.
2024-02-15 17:59:53 -05:00
Manuel de la Pena fb8d583fd9
[CI] Fix the job that publishes the test results. (#20111)
The two removed parameters are never used, pass the yaml vars to the env.
2024-02-15 14:22:46 -05:00
Filip Navara d89b6390f1
Update AOTCompile task to handle cycles in up-to-date check (#20103)
#### Background

While cyclic assembly references are unusual they are supported by the runtime and encountered in practice. In our project we use a version of Xamarin.Forms retargeted for a modern .NET (as a stopgap solution before an update to full MAUI stack). Xamarin.Forms historically come with such an assembly cycle: `Xamarin.Forms.Core.dll` -> `Xamarin.Forms.Platform.dll` -> `Xamarin.Forms.Platform.iOS.dll` -> `Xamarin.Forms.Core.dll`. This is produced by first compiling `Xamarin.Forms.Core.dll` against a dummy `Xamarin.Forms.Platform.dll` (`netstandard2.0` assembly). Then the Platform assemblies are built, and finally forwarder versions of `Xamarin.Forms.Platform.dll` are created for each platform. This is all packaged into NuGets in such a way that each TFM gets the same `Xamarin.Forms.Core.dll` but a different set of `Xamarin.Forms.Platform.dll` and `Xamarin.Forms.Platform.<platform>.dll` assemblies.

#### Problem

With current workloads each incremental rebuild fails with:

```
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/16.4.7125/targets/Xamarin.Shared.Sdk.targets(1047,3): error : Encountered an assembly reference cycle related to the assembly obj/Debug/net7.0-ios/iossimulator-arm64/linked/Xamarin.Forms.Core.dll
```

#### Solution

The PR updates the algorithm in `AOTCompile` to detect cycles using [Tarjan's algorithm](https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm) for finding [strongly connected components](https://en.wikipedia.org/wiki/Strongly_connected_component) in a graph. When a cycle is detect any assembly in the cycle is considered up-to-date only if all the assemblies in the cycle are up-to-date.

With this change the project does incremental rebuilds correctly. I verified in the build output that the assembly cycle is considered up-to-date, and that any changes to the application assemblies still return `false` from the up-to-date check and get rebuilt.

---------

Co-authored-by: Filip Navara <filip.navara@gmail.com>
2024-02-15 17:29:18 +01:00
Rolf Bjarne Kvinge 282d107a02
[msbuild] Enable nullability in WriteItemsToFile and fix any issues. (#20099) 2024-02-14 19:25:52 +01:00
Manuel de la Pena d437e9c3a1
[CI] Create governance stage to run APIScan in parallel. (#20065) 2024-02-14 11:07:56 -05:00
Manuel de la Pena 8b2fde3179
[CI] Retry tests if on CI. (#20104)
Sometimes we have flaky tests, now that we have the tests splitted,
doing a rerun is not expensive and will allow our CI builds to be
greener.

The template now checks if we are on CI and add the new rerun paramter
(this was added in 2021).
2024-02-14 10:10:04 -05:00
Rolf Bjarne Kvinge dc90060cfa
[devops] Split monotouch-test by platform as well. (#19988) 2024-02-14 09:26:34 +01:00
dotnet-maestro[bot] d57769c563
[main] Update dependencies from dotnet/installer (#20101)
This pull request updates the following dependencies

## From https://github.com/dotnet/installer

- **Subscription**: 80cb9ffd-f92f-4fc8-9f8b-08dbca46abfb
- **Build**: 20240212.7
- **Date Produced**: February 12, 2024 7:15:38 PM UTC
- **Commit**: 43e7082a34d849cc77e5e3f760b0aca82e281639
- **Branch**: refs/heads/release/8.0.1xx

- **Updates**:
  - **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.103-servicing.24108.7 to 8.0.103-servicing.24112.7][1]

[1]: 34ceb5eeb4...43e7082a34
2024-02-14 09:12:49 +01:00
Rolf Bjarne Kvinge 10f2681abd
[msbuild] Use MetadataLoadContext in the UnpackLibraryResources task. (#20017)
This avoids the Mono.Cecil dependency, and also MetadataLoadContext is both
faster and better maintained.

A temporary downside is that all the reference assemblies will have to be
copied to the remote Mac for remote builds, but this will be fixed in a future
change where we'll execute this task mostly locally on Windows, and we'll
only copy the unpacked resources to the Mac.
2024-02-13 16:40:58 +01:00
Rolf Bjarne Kvinge 72afc648c3
[UIKit] Remove presnippet for UITextView.TypingAttributes. Fixes #12709. (#20089)
Apparently, in earlier versions of iOS, returning an empty dictionary from
UITextView.TypingAttributes would crash, so we added a workaround where we'd
return null instead of an empty dictionary.

However, I can't reproduce any such crashes anymore, and this workaround is
causing other problems, so remove it.

But do this in a backwards compatible way (just in case the removal ends up
crashing apps after all):

* Add a new TypingAttributes2 binding with the behavior we want (a better name
  wouldn't be unwelcome!)
* Mark the existing TypingAttributes as obsolete, pointing to
  TypingAttributes2.
* Make the TypingAttributes property behave as we want in XAMCORE_5_0, and at
  that point  mark TypingAttributes2 as obsolete and point back to
  TypingAttributes.
* Remove TypingAttributes2 in XAMCORE_6_0.

Note: the presnippet attribute to avoid the crash was introduced in 2013:
5adb7c8608,
and our current minimum iOS version (iOS 11), was launched in 2017, so most
likely (aka hopefully) the crash was fixed in an iOS version earlier than the
earliest we support.

Fixes https://github.com/xamarin/xamarin-macios/issues/12709.
2024-02-13 08:28:11 +01:00
dotnet-maestro[bot] 661a513621
[main] Update dependencies from dotnet/xharness (#20092)
This pull request updates the following dependencies

## From https://github.com/dotnet/xharness

- **Subscription**: 601bc5e1-1cae-44b5-cf5f-08db9342aa2f
- **Build**: 20240212.1
- **Date Produced**: February 12, 2024 11:45:46 AM UTC
- **Commit**: 2f3f51a1adec18475563c8a49fd9b668ae9f2f31
- **Branch**: refs/heads/main

- **Updates**:
  - **Microsoft.DotNet.XHarness.iOS.Shared**: [from 9.0.0-prerelease.24105.1 to 9.0.0-prerelease.24112.1][1]

[1]: 18d9997c99...2f3f51a1ad
2024-02-13 08:18:12 +01:00
Rolf Bjarne Kvinge b9fdd9ed7d
[msbuild] Several updates to the ScnTool task. (#19976)
* Enable nullability and fix the resulting issues.
* Convert to XamarinTask (instead of XaxmarinToolTask): this allows us to run multiple
  'scntool' invocations in parallel.
* Use 'xcrun' to call 'scntool' instead of computing the path [1].
* Fix bug in the Cancel method: it shouldn't call base.Execute.
* Change the targets logic to match the pattern of other resource-related targets.
    * This makes it easier to understand the code, since understanding one resource-related target works for the other ones too.
    * Not using the CollectBundleResources task means computing LogicalName in the ScnTool task directly.

[1]: https://github.com/xamarin/xamarin-macios/issues/11172#issuecomment-816324118
2024-02-12 14:17:16 +01:00
Rolf Bjarne Kvinge 4100f6058e
[devops] Remove the Whitesource task. (#20088)
Ref:
https://github.com/opensource-microsoft/docs/blob/main/docs/tools/cg/announcements.md#mend-aka-whitesource-retirement-as-a-vulnerability-provider
2024-02-12 14:08:19 +01:00
dotnet-maestro[bot] 28f9ae897a
[main] Update dependencies from dotnet/installer (#20077)
This pull request updates the following dependencies

## From https://github.com/dotnet/installer

- **Subscription**: 80cb9ffd-f92f-4fc8-9f8b-08dbca46abfb
- **Build**: 20240208.7
- **Date Produced**: February 8, 2024 8:26:23 PM UTC
- **Commit**: 34ceb5eeb4c8cf1cb42ed943798fd92c643ab7c4
- **Branch**: refs/heads/release/8.0.1xx

- **Updates**:
  - **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.103-servicing.24107.12 to 8.0.103-servicing.24108.7][3]

[3]: 3b81b46723...34ceb5eeb4
2024-02-12 09:58:49 +01:00