At the moment we are recaculating the configuration that was used in the
build to decide which tests to run, that is not needed since the
configuration was uploaded to the artifacts.
This change will allow to do the following:
- Load the default variables on the build pipeline this will allow us to
set the name of the tests to match those of the build for easy parsing.
- Load the default variables to set the property comment in the PR.
- Do not recalculate the built platforms on the tests matrix.
- Do not calculate the API scan matrix, it is not needed for the tests.
---------
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
There's a bug where the test variation to run introspection on older OS
versions doesn't properly exclude legacy Xamarin variations when legacy
Xamarin is disabled.
Since legacy Xamarin is dead, just remove introspection for legacy Xamarin
completely.
The 'nw_connection_set_viability_changed_handler' P/Invoke was originally
bound as 'SetBooleanChangeHandler', which isn't quite right.
So now bind it as 'SetViabilityChangeHandler', obsolete the old version and
remove it in XAMCORE_5_0.
Using RUNTIMEIDENTIFIER(S) in the Makefile interferes with the build, because
they get passed on to msbuild, which sees them as properties (RuntimeIdentifier(s)).
Thus use RID instead, and only pass on the value to the build if appropriate.
We are tryihng to sort out all the scripts to make it re-usable in order
to use them in cascading pipelines.
---------
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
This way execution won't stop if the warning was turned into an error, and
we'll get a list of all the warnings by executing once, instead of having to
re-execute after fixing each warning.
When we implemented support for using default interface members for binding protocols, we also unintentionally introduced a size regression. This happened because we now tell the linker to keep all methods in a protocol interface, thus all the corresponding types end up marked as well, etc.
This had an additional side effect: depending on the types that weren't linked away anymore, the App Store could flag an app, saying that additional entitlements is needed. This is what's happening in #21002: the App Store detects that the app references the `application:didRegisterForRemoteNotificationsWithDeviceToken:` selector [1] (from the method `RegisteredForRemoteNotifications` on `IUIApplicationDelegate`) and tells the developer they probably need the push notification entitlement.
The good news is that we don't need these protocol interface methods at runtime if the optimization to register protocols with the static registrar is enabled (which it is by default).
In this PR I teach the optimizer to remove the DynamicDependency attributes keeping these protocol interface methods from being trimmed out.
## Size improvements
* monotouch-test build for Release/ios-arm64 shrinks by [2.9mb (-2.6%)](https://gist.github.com/rolfbjarne/5e8ca6ea6854dc4a46f8e838dff11e6b)
* A very simple app (tests/dotnet/MySimpleApp) shrinks by [176kb (-0.3%)](https://gist.github.com/rolfbjarne/f0e062900528eb499fd96d124d18376f)
[1]: This is somewhat speculative, but it's probably not far from what the App Store actually does.
Fixes#21002.
* Forward [Obsolete] from api definition interfaces.
* Generate [EditorBrowsable] whenever an api definition member as either
[EditorBrowsable] or [Obsolete].