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

10244 Коммитов

Автор SHA1 Сообщение Дата
Sebastien Pouliot c086b57358
[metal] Add nullability to (generated and manual) bindings (#10823)
Removed some outdated comments (intro runs fine with them now)

See [HOWTO](https://github.com/xamarin/xamarin-macios/wiki/Nullability)
2021-03-10 08:54:01 -05:00
Jonathan Peppers 98c8649d0c
[dotnet] remove +sha from templates in installers (#10816)
I noticed the new templates did not actually work from the installer
unless I did:

    % sudo mv \
        /usr/local/share/dotnet/template-packs/Microsoft.iOS.Templates.14.4.100-ci.main.1180+sha.bccef33d3.nupkg \
        /usr/local/share/dotnet/template-packs/Microsoft.iOS.Templates.14.4.100-ci.main.1180.nupkg

I checked other templates like Android or ASP.NET, and they do not
currently have a hash like `+sha.bccef33d3` in the file name.

To fix this problem, I updated the file in the installers so we now
remove the `+sha.bccef33d3` portion from file name:

    $(subst +$(NUGET_BUILD_METADATA),,$(notdir $(TEMPLATE_PACKS_$(4))))

I also found the `Microsoft.iOS.Bundle.*.zip` did not contain
`template-packs` at all, so I fixed this as well.
2021-03-09 16:56:26 -06:00
Rolf Bjarne Kvinge 3a96cb02f5
[msbuild] Unify the iOS and macOS version of ACToolTaskBase. (#10810)
* [msbuild] Unify the iOS and macOS version of ACToolTaskBase.

* The ACTool task now needs the target framework moniker.
2021-03-09 17:45:49 +01:00
Sebastien Pouliot 91ce22c57c
[generate-type-forwarders] Silence build warnings (#10808)
Silence warnings for both legacy and dotnet builds
```
build/maccatalyst/reference/Xamarin.iOS.cs(8014,68): warning CS0108: 'ABPeoplePickerNavigationController.Delegate' hides inherited member 'UINavigationController.Delegate'. Use the new keyword if hiding was intended.
build/maccatalyst/reference/Xamarin.iOS.cs(29868,37): warning CS0114: 'HKWorkoutType.Identifier' hides inherited member 'HKObjectType.Identifier'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.
build/maccatalyst/reference/Xamarin.iOS.cs(17769,54): warning CS0108: 'CPTemplateApplicationScene.Delegate' hides inherited member 'UIScene.Delegate'. Use the new keyword if hiding was intended.
build/maccatalyst/reference/Xamarin.iOS.cs(17626,63): warning CS0108: 'CPTemplateApplicationDashboardScene.Delegate' hides inherited member 'UIScene.Delegate'. Use the new keyword if hiding was intended.
build/maccatalyst/reference/Xamarin.iOS.cs(38414,25): warning CS0108: 'MFMessageComposeViewController.Notifications' hides inherited member 'UIViewController.Notifications'. Use the new keyword if hiding was intended.
```
2021-03-09 09:00:52 -05:00
Rolf Bjarne Kvinge bf7c3268bc
[dotnet] Use the reference assemblies from the .NET 6 version we're referencing. (#10813) 2021-03-09 14:57:56 +01:00
Rolf Bjarne Kvinge bff4c7b1c2
[runtime] Move some code from native to managed for xamarin_release_managed_ref. (#10814)
* Avoids one usage of xamarin_set_nsobject_flags (which pokes into managed
  memory from native code, which won't be possible with CoreCLR).

* Makes it possible to move more code from native to managed for
  xamarin_release_managed_ref in the future.

* Since the code order is exactly the same, it shouldn't have any other side
  effects.
2021-03-09 14:57:50 +01:00
Rolf Bjarne Kvinge 7bf40f96c0
[msbuild] Unify the CompileImageAssets targets between Xamarin.iOS and Xamarin.Mac. (#10809) 2021-03-09 11:24:38 +01:00
Rolf Bjarne Kvinge b22e0c3a6f
[runtime] Reduce code duplication a little bit. (#10807) 2021-03-09 07:43:51 +01:00
Rolf Bjarne Kvinge cc1918e674
Bump to 6.0.100-preview.2.21155.3. (#10803) 2021-03-09 07:42:13 +01:00
Rolf Bjarne Kvinge 33aaf03548
[devops] Notarize Mac Catalyst packages. (#10806)
* [devops] Notarize Mac Catalyst packages.

* Fix verbose output.
2021-03-08 23:31:19 -05:00
Sebastien Pouliot cbbc4f4f0b
[generate-type-forwarders] Fix stubs generation (#10805)
* Types can be `sealed`
* Types can be `static` (when both `sealed` and `abstract`)
* Events can be `static`
* Do not add `virtual` members to `sealed` types (fix `CS0549` errors)
2021-03-08 21:06:56 -05:00
Sebastien Pouliot cd7f7596ba
[msbuild] Fix localization when the error code is shared with mtouch/mmp (#10799)
Code shared between msbuild and mtouch/mmp needs to share the
localization strings, otherwise the exception being thrown is of no help
to solve the issue.

THis happened if a wrong path was given for an `.xcframework` and
`FileCopier` reported an `MT1022` error.

Reference (not a fix for) https://github.com/xamarin/xamarin-macios/issues/10774
2021-03-08 09:04:57 -05:00
Sebastien Pouliot a4d4195baf
[gamekit] Add nullability to (generated and manual) bindings (#10800)
See [HOWTO](https://github.com/xamarin/xamarin-macios/wiki/Nullability)
2021-03-08 08:53:54 -05:00
Rolf Bjarne Kvinge bccef33d3f
[runtime] Build a new version of libxamarin specifically for CoreCLR. (#10798)
We're currently only building for macOS, but we'll eventually build for Mac
Catalyst as well.
2021-03-08 07:57:55 +01:00
Rolf Bjarne Kvinge f6aacf4b0e
[static registrar] Fix minor formatting typo in generating code (#10797) 2021-03-06 01:08:57 +01:00
Rolf Bjarne Kvinge 73d49c022f
Build the .NET version of our platform assemblies with csc from .NET (#10794)
This way we can use C# 9 in any platform code specific to .NET.
2021-03-06 01:08:04 +01:00
Rolf Bjarne Kvinge d1718c63b3
[tests] Adjust Assembly.GetType calls to find nested types due to different behavior in CoreCLR. (#10796)
Assembly.GetType works differently between CoreCLR and Mono for nested types:
Mono accepts both '/' and '+' as the character separating the declaring type
from the nested type, while CoreCLR only accepts '+'.

So just switch to '+', since that works everywhere.
2021-03-06 01:06:59 +01:00
Rolf Bjarne Kvinge 2ddef0b306
[monotouch-test] Our P/Invokes here too needs MarshalAs attributes for boolean return types and parameters. (#10791) 2021-03-06 01:05:45 +01:00
Rolf Bjarne Kvinge 5f5fbcbb7a
[dotnet] We shouldn't need the workaround for mono_config_parse_memory anymore (since we're building libxamarin referencing the .NET version of libmono). (#10792)
We're now building the .NET version of libxamarin referencing the .NET version
of libmono, which means we don't need this workaround anymore.
2021-03-06 01:04:56 +01:00
Rolf Bjarne Kvinge 2d6a3c42a7
Bump to .NET 6.0.100-preview.2.21153.28. (#10788)
* Bump to .NET 6.0.100-preview.2.21153.28.

* [tests] Ignore failing tests due to dotnet/runtime#49201.
2021-03-05 16:28:31 +01:00
Sebastien Pouliot 84dc7c37f2
[mediaplayer] Add nullability to (generated and manual) bindings (#10790)
See [HOWTO](https://github.com/xamarin/xamarin-macios/wiki/Nullability)
2021-03-05 08:26:29 -05:00
Rolf Bjarne Kvinge d9b71dcd37
Turns out we need MarshalAs for characters as well. (#10785)
The default marshalling size for characters in .NET is a single byte, and that
is potentially lossy (and causes tests to fail for non-ascii characters).
2021-03-05 07:22:14 +01:00
Jonathan Peppers 94fb7823f2
[dotnet] produce .nupkg files for Workload packs (#10786)
Fixes: https://github.com/xamarin/xamarin-macios/issues/10620

I have a prototype where I figured out how Maui would consume the iOS &
Android workloads:

https://github.com/jonathanpeppers/maui-workload

One issue I ran into was there isn't a `Microsoft.NET.Workload.iOS`
package on the NuGet feed:

    <add key="xamarin" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json" />

We will also need these packages to insert them in the dotnet/installer
repo, when they are ready for us to do "real" insertions for .NET 6.

To make this work, I mostly had to create a `package.csproj` for the
workload packs and fix up the `Makefile`.

Now I get additional `.nupkg` files produced in:

    % ls _build/nupkgs | grep Microsoft.NET.Workload
    Microsoft.NET.Workload.MacCatalyst.14.3.100-ci.workload-nupkgs.299+sha.692087e74.nupkg
    Microsoft.NET.Workload.iOS.14.4.100-ci.workload-nupkgs.1154+sha.692087e74.nupkg
    Microsoft.NET.Workload.macOS.11.1.100-ci.workload-nupkgs.1207+sha.692087e74.nupkg
    Microsoft.NET.Workload.tvOS.14.3.100-ci.workload-nupkgs.1207+sha.692087e74.nupkg
2021-03-04 16:33:42 -06:00
Rolf Bjarne Kvinge 23bdf61230
[tests] Add unit tests for building Mac Catalyst for ARM64. (#10768)
* [dotnet] Use the expected case for ARM64.

We use case-sensitive comparisons somewhere else, so make sure to use the same casing
for the architecture as other platforms do.

* [tests] Add tests to verify that Mac Catalyst builds successfully for ARM64.

* [msbuild] Fix platform name in condition.

* [msbuild] Pass -isysroot when building Mac Catalyst apps as well.

Ohterwise clang will use the SDK from the command line tools, which may have
nothing to do with the SDK we want to build with.
2021-03-04 17:44:55 +01:00
Rolf Bjarne Kvinge 01dfd6f2f5
[cecil-tests] Fix string composition (#10781) 2021-03-04 16:40:53 +01:00
Rolf Bjarne Kvinge db6e0b9cf5
Add a MarshalAs attribute to all boolean return types and parameters in P/Invokes. (#10782)
* [cecil-tests] Add test for MarshalAs attributes for bool return type / parameters in P/Invokes.

This also meant adding support for resolving additional BCL assemblies (to be able to process Action<> and Func<> types).

* [generator] Add [MarshalAs (UnmanagedType.I1)] to bool return types and parameters.

* Fix all manually bound API to use a MarshalAs attribute for boolean return types and parameters in P/Invokes.
2021-03-04 16:22:24 +01:00
Rolf Bjarne Kvinge 80ed9d81bc
Add configure option to disable building for legacy Xamarin. (#10773)
* Add configure option to disable building for legacy Xamarin.

This can greatly speed up the debug-edit-build cycle when doing .NET
development, since it cuts down the build time in half more or less.

* Bump maccore.

New commits in xamarin/maccore:

* xamarin/maccore@548fa45432 [mlaunch] Disable building mlaunch when not including the legacy Xamarin build. (#2403)

Diff: 0562e08b12..548fa45432
2021-03-04 09:07:44 +01:00
Rolf Bjarne Kvinge 54324173d3
Bump the stable .NET to 5.0.200. (#10769)
* Bump the stable .NET to 5.0.200.

* Update global.json
2021-03-04 07:46:38 +01:00
Sebastien Pouliot 500b3af912
[catalyst][tools] Add Xamarin.MacCatalyst to API diff (#10762)
This is now possible since our reference is now `d16-9` which has (very
early versions of) the Xamarin.MacCatalyst (and Xamarin.iOS stubs)
assemblies.

This will become more useful when
1. bots resume the generation of commit-by-commit API diff; and
2. a real baseline is defined for the catalyst API coverage

* Add the new links to the comment done by VSTS.

Co-authored-by: Sebastien Pouliot <sebastien.pouliot@microsoft.com>
Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
2021-03-03 19:41:00 -05:00
Rolf Bjarne Kvinge 363f4611db
Use our [OBJC_]CFLAGS when compiling code for macOS. (#10771)
This required fixing a couple of compiler warnings in code that's now compiled
with more warnings + warnings-as-errors enabled:

    launcher.m:188:48: error: implicit conversion changes signedness: 'int' to 'unsigned long' [-Werror,-Wsign-conversion]
            argv = (char **) malloc (sizeof (char *) * (n + 1));
                                                     ~  ~~^~~
    launcher.m:609:67: error: implicit conversion changes signedness: 'int' to 'unsigned long' [-Werror,-Wsign-conversion]
                    char **new_argv = (char **) malloc (sizeof (char *) * (new_argc + 1 /* null terminated */));
                                                                        ~  ~~~~~~~~~^~~
2021-03-03 21:41:39 +01:00
Connor Adsit 972aa7cb9d
[CI] Circumvent login keychain with envvars (#10749)
* Use envvars for GitHub.Token

* add gitHubToken parameter to stage.yml

* Use envvars for certificate passwords
2021-03-03 14:47:52 -05:00
Rolf Bjarne Kvinge f06e4a2e06
[builds] We have mac catalyst packs now. (#10766) 2021-03-03 17:55:46 +01:00
Sebastien Pouliot 06530da923
[glkit] Add nullability to (generated and manual) bindings (#10765)
See [HOWTO](https://github.com/xamarin/xamarin-macios/wiki/Nullability)
2021-03-03 09:33:09 -05:00
Sebastien Pouliot ab501eb2fd
[tests][intro] Run availability tests on properties too (#10763)
and not just methods even if we are generating them on both [1]

That spotted a single error inside `src/Security/SslContext.cs`
which this PR also fix. IOW there's no point in saying the API
was (a long time ago) available since our code to call it was
removed.

[1] which is something we should not need to do on .net since
* the compiler-based tooling does not need it on the getter/setter
* other tools needs to be updated (so it won't break any existing
  use case)
2021-03-03 09:30:46 -05:00
Rolf Bjarne Kvinge 871e7b1cd0
[runtime] Build our runtime for Mac Catalyst/ARM64 for .NET. (#10739)
* [runtime] Build our runtime for Mac Catalyst/ARM64 for .NET.

* [ObjCRuntime] There's no need for the StartWWAN implementation on Mac Catalyst.

This also fixes a build error:

    error MT5214: Native linking failed, undefined symbol: _xamarin_start_wwan. This symbol was referenced by the managed member ObjCRuntime.Runtime.xamarin_start_wwan.

* Only exclude xamarin_start_wwan in the .NET version of Mac Catalyst.

* [tests] Update to not run the StartWWAN test on Mac Catalyst.

* Update conditional logic.

* Fix build with newer make versions.
2021-03-03 07:48:07 +01:00
Rolf Bjarne Kvinge 100e2ec832
[msbuild] Don't compute the platform for Mac Catalyst. (#10754)
This way we don't end up forcing Mac Catalyst apps to be signed (because if
the computed platform is 'iPhone', we enforce signing).
2021-03-03 07:44:26 +01:00
Emanuel Fernandez Dell'Oca 834b088885
[dotnet] Fixes -t:Run and illink.dll path for Windows (#10744)
* [dotnet] Adds support for dotnet build -t:Run from Windows

What was essentially needed was to execute the command remotely, using the right mlaunch path on the Mac

* [dotnet] Fixes illink.dll location when building from Windows

The property `_ILLinkTasksDirectoryRoot` does not exist anymore so we need to get the path in a different way. Essentially it is located in the same directory as the ILLink Task, so we can get it from `ILLinkTasksAssembly`.
2021-03-03 07:43:34 +01:00
Rolf Bjarne Kvinge ff619c2d21
[runtime] Fix a compiler warning. (#10755)
Fix this compiler warning:

    monotouch-debug.m:524:12: warning: unused variable 'monotouch_debug_enabled' [-Wunused-variable]
             NSString *monotouch_debug_enabled;
2021-03-03 07:41:35 +01:00
Sebastien Pouliot c140f50435
[apidiff] Bump api-diff with d16-9 release as it's new reference (#10756) 2021-03-02 19:39:03 -05:00
Manuel de la Pena 8773fc7d2a
[CI][VSTS] VSDrops urls are case-sensitive. (#10740)
Example:

* Wrong - https://vsdrop.corp.microsoft.com/file/v1/xamarin-macios/device-tests/20210226.4/4505964/APIDiff/;/mac-api-diff.html
* Correct - https://vsdrop.corp.microsoft.com/file/v1/xamarin-macios/device-tests/20210226.4/4505964/apidiff/;/mac-api-diff.html
2021-03-02 14:51:27 -05:00
Jonathan Peppers 11ca5a8619
.NET 6 templates for iOS, macOS, tvOS, & MacCatalyst (#10741)
Context: https://docs.microsoft.com/dotnet/core/tutorials/cli-templates-create-template-pack
Context: https://github.com/dotnet/templating/wiki
Context: https://github.com/dotnet/designs/pull/120
Fixes: https://github.com/xamarin/xamarin-macios/issues/10252

To implement templates in a .NET workload:

1. Make `.nupkg` files that follow the structure of the `dotnet new`
   templating system, using `$(PackageType)` of `Template`.
2. Install the `.nupkg` files in in `dotnet/template-packs/`
3. Update `WorkloadManifest.json`, to be part of the workload:

    "Microsoft.@PLATFORM@.Templates": {
      "kind": "template",
      "version": "@VERSION@"
    }

These are a starting point, for what I would consider the minimum for
the xamarin-macios repo to provide for now:

    Template Name                                 Short Name      Language    Tags
    --------------------------------------------  --------------  ----------  ----------------------
    iOS Controller template                       ios-controller  [C#]        iOS
    iOS Application                               ios             [C#]        iOS
    iOS Class library                             ioslib          [C#]        iOS
    macOS Application                             macos           [C#]        macOS
    MacCatalyst Application                       maccatalyst     [C#]        macOS/Catalyst
    tvOS Application                              tvos            [C#]        tvOS

We will probably need PM input on what the final templates will be.

To use these, you might do:

    $ mkdir MyApp && cd MyApp
    $ dotnet new ios
    $ dotnet new ios-controller --name LoginController --namespace MyApp

Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
2021-03-02 09:23:05 -06:00
Rolf Bjarne Kvinge e0163bfb23
[runtime] Always enable debugging in .NET/macOS and .NET/Mac Catalyst in debug versions of libxamarin. (#10751)
This makes it so that it's possible to attach to the debugger by setting the
__XAMARIN_DEBUG_HOSTS__/__XAMARIN_DEBUG_PORT__ environment variables, without
the need for enabling a setting somewhere else (like in
Settings.bundle/Root.plist on mobile devices).
2021-03-02 15:33:44 +01:00
Sebastien Pouliot 0225f7bc15
[modelio] Add nullability to (generated and manual) bindings (#10750)
See [HOWTO](https://github.com/xamarin/xamarin-macios/wiki/Nullability)
2021-03-02 09:06:32 -05:00
Sebastien Pouliot 02f160af6c
[apidiff] Bump api-diff with xcode12.4 release as it's new reference (#10745) 2021-03-01 20:32:50 -05:00
Sebastien Pouliot 6992a5a10a
[generator] Do not inline duplicate attributes when processing protocols (#10683)
- this requires small (but tricky) generator changes
- duplicate availability attributes detection is tested by introspection
- it also requires removing dupes in manual bindings (which was the
  current, if not the _named_, goal for this PR)

Long story:

It's always been hard to detect and enforce removal of extraneous
availability attributes since the generator inlined them _freely_
when processing ObjC protocols.

That meant introspection could not report dupes and led to many
extra attributes. This was **not** a problem in binding files since we
could ignore them. IOW their presence (in the input) does not mean they
are _all_ dupes in generated code (output).

However dupes in manual bindings were also (forced to be) _ignored_ and
those were part of the assemblies we ship. Again it was not a big deal,
nor a source of much extra metadata/size, so it was ignored.

Forward to today, manual bindings needs to be updated for net6 [1] so any
extra we have requires more (manual) work. Cleaning this problem up in
the generator code reduce the (manual) work we need to do.

It also means introspection can detect dupes (in generated and manual
code) so we don't end up adding more (which would also require more
manual work to support both set of attributes).

[1] https://github.com/xamarin/xamarin-macios/pull/10580
2021-03-01 08:39:52 -05:00
Emanuel Fernandez Dell'Oca ecccb8954e
[dotnet] Revert changes that separate Messaging from Xamarin.iOS.Tasks to fix dotnet build (#10738)
This reverts commit 9a27951a99.

The purpose of the original commit was to take out 4 tasks that were only executed from Windows to the Windows specific pack (and enabling more tasks that need to be executed remotely on that pack).

To execute tasks remotely the build will initially run `SayHello` which connects to the Mac and shares the connection with all the tasks through IBuildEngine4[1]. When that connection object is retrieved on the tasks we need to cast it as a Messaging connection type, and this works from Visual Studio and msbuild because there's just one messaging assembly loaded.

But it doesn't work on dotnet/msbuild, because there's a feature called ALC (AssemblyLoadContext) which will load each assembly task into it's own context[2], loading all its dependencies in that context. In this scenario sharing custom objects between tasks won't work because the original object type could be from a different context than the one retrieving it. This is described here: https://github.com/dotnet/msbuild/issues/5084.

[1] https://docs.microsoft.com/en-us/dotnet/api/microsoft.build.framework.ibuildengine4?view=msbuild-16-netcore
[2] https://github.com/dotnet/msbuild/blob/master/documentation/specs/task-isolation-and-dependencies.md
2021-03-01 08:05:01 +01:00
Sebastien Pouliot effe7dc499
[mtouch] Remove the non-catalyst frameworks from mtouch (#10730)
Also set to 13.0 (first Catalyst version) any framework that existed
earlier in iOS.

* Avoid multiple lookup in the frameworks collection since we need to access/update most of them anyway
2021-02-26 11:51:08 -05:00
Sebastien Pouliot 755b60e64c
[catalyst] Remove "unknown" API inside existing frameworks (#10731)
xtro tests are based on Apple's header files and report as _unknown_
bindings to API that are not found in headers - Catalyst in this case.

Removing them is required so the applications can be submitted to the
AppStore.
2021-02-26 11:49:24 -05:00
Rolf Bjarne Kvinge 7ab7e25138
[runtime] Build a .NET-specific libxamarin-dotnet[-debug].[a|dylib]. (#10723)
This also means linking with the runtime packs from .NET instead of the mono archive
(thus we have one less reliance on the mono archive).

We're also using the Xamarin.iOS code for our macOS launch sequence now, since
(at least at first) we're only going to support self-contained .NET macOS apps
(so no need to support a system-installed runtime, which simplifies things a
bit).
2021-02-26 14:42:30 +01:00
Rolf Bjarne Kvinge 3a69beae53
[dotnet] Fix the Run target for Mac Catalyst to run the app directly instead of using mlaunch. (#10724) 2021-02-26 07:40:18 +01:00