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

9417 Коммитов

Автор SHA1 Сообщение Дата
Sebastien Pouliot 11aafadd86
[intro] check for duplicate or inconsistent availability attributes (#9825)
This can easily happen when existing type(s) or framework are added to a platform. E.g.

```csharp
[Watch (6,0)][iOS (9,0)]
interface AVFoo {
   [Watch (6,0)][iOS (13,0)]
   void NewMember ();
}
```

Here we have duplicate attributes and, while not confusing, it does mean extra (and non required) metadata into the platform assemblies.

```csharp
[Watch (6,0)][iOS (9,0)]
interface AVFoo {
   [Watch (5,0)][iOS (13,0)]
   void NewMember ();
}
```

Here we declare a member as available when the type is not. I'm not sure how the IDE will react - but this should be audited since one of them is wrong (whatever the IDE behaviour is).

Fix https://github.com/xamarin/xamarin-macios/issues/6856
2020-10-13 14:16:33 -04:00
Rolf Bjarne Kvinge 86cb7468b9
[tests] Fix ignoring dotnet tests when certain platforms have been disabled. (#9851)
Fixes an issue where some of the non-macOS dotnet tests where ignored because
the logic to disable the macOS ones were incorrect.
2020-10-13 17:55:20 +02:00
Filip Navara 5e79ca4f23
[dotnet] Avoid using install_name_tool on macOS and specify correct rpath instead (#9819)
* [dotnet] Avoid using install_name_tool on macOS and specify correct rpath instead

* Update Xamarin.Shared.Sdk.targets
2020-10-13 13:00:35 +02:00
Filip Navara 0c0662c46f
[dotnet] Remove workaround for F# projects (#9845)
Contributes to #8901. Issue dotnet/sdk#12954 was marked as fixed, the dotnet version was recently bumped to one that should contain the fix.
2020-10-13 09:21:33 +02:00
Rolf Bjarne Kvinge 80db37dca7
[msbuild] Set DEVELOPER_DIR to the Xcode we're using when calling ibtool. (#9836)
* [msbuild] Set DEVELOPER_DIR to the Xcode we're using when calling ibtool.

This fixes strange problems that occur when the system Xcode isn't the same as
the Xcode configured in Visual Studio for Mac, because we'd end up directly
launching VSMac's Xcode's ibtool, which would end up confused because it
wasn't the system ibtool.

Setting DEVELOPER_DIR tells VSMac's Xcode's ibtool that it's the system's ibtool.

* [msbuild] Set IBToolTask.SdkDevPath from the tests as well.

It's already set in the .targets files.
2020-10-13 09:15:04 +02:00
Rolf Bjarne Kvinge a40c21cd88
[msbuild] Don't use exceptions as control flow in CollectITunesArtworkTaskBase. (#9837)
* It's slow (because exceptions are way slower than just returning a value).
* It's annoying when debugging with breakpoints on exceptions.
2020-10-13 09:14:40 +02:00
Chris Hamons 05303cfec3
[AppKit] Allow NSGraphicsContext.CurrentContext to be null (#9838)
- Fixes https://github.com/xamarin/xamarin-macios/issues/9827
2020-10-09 13:44:34 -05:00
Rolf Bjarne Kvinge 54a553a900
[dotnet] Add storyboards and xibs to the our items included by default. (#9834) 2020-10-09 18:24:45 +02:00
Chris Hamons ee2eabe971
Bind CarTemplateApplication as part of UIWindowSceneSessionRole enum (#9811)
- https://github.com/xamarin/xamarin-macios/issues/9749
- See https://developer.apple.com/documentation/uikit/uiscenesessionrole?language=objc to see that Apple groups them together despite the name 

I did not test it in a full CarPlay app but this:
```
            return UISceneConfiguration.Create ("Default Configuration", UIWindowSceneSessionRole.CarTemplateApplication);

```

doesn't crash in Sim.
2020-10-09 09:50:51 -05:00
Filip Navara 5caec8986f
[dotnet] Default to static libxamarin.a builds on macOS (#9833)
This seems to match the default on classic mmp-based projects. It also avoids the relaunching of the app which can result in the UI not being displayed in front of other apps.
2020-10-09 16:41:59 +02:00
Rolf Bjarne Kvinge 9ade64930f
[msbuild] Move all the msbuild tests to tests/msbuild to put all the tests together. (#9824)
* [msbuild] Move msbuild/tests to tests/msbuild to put all the tests together.

* [tests] Move test projects for Xamarin.Mac to tests/common/TestProjects

* [tests] Move test projects for Xamarin.iOS to tests/common/TestProjects
2020-10-09 16:06:19 +02:00
Filip Navara d602cf76cf
[dotnet] Fix install name for libxamarin[-debug].dylib on macOS (#9821)
* [dotnet] Fix install name for libxamarin[-debug].dylib on macOS

* When using DYNAMIC_MONO_RUNTIME pass down the bundle directory in MONO_PATH to the relaunched process. Also fix support for custom bundle names in the surrounding code.

* Fix pattern matching
2020-10-09 14:55:00 +02:00
Rolf Bjarne Kvinge eb5733ab93
[msbuild] Remove some watchOS 1 code. (#9797) 2020-10-09 14:11:04 +02:00
Rolf Bjarne Kvinge 3d906e7000
[dotnet] Add support for 'dotnet build -t:run'. (#9823)
* Ship mlaunch in the iOS, tvOS and watchOS NuGets. It should probably go into
  a separate NuGet (to avoid shipping the same mlaunch executable in three different
  packages), but that can be done at a later stage.

* Add a GetMlaunchArguments task that computes the mlaunch arguments to install
  or launch an app in either the simulator or on device.

* Implement the MSBuild logic to make the Run target (provided by .NET) launch
  mlaunch (for iOS, tvOS and watchOS) or the built app (for macOS). This is done
  by setting the RunCommand and RunArguments properties (which the Run target uses)
  to the correct values.

Ideally I'd would make 'dotnet run' work too, but that runs into a different problem which
I haven't figured out yet:

    A fatal error was encountered. The library 'libhostpolicy.dylib' required to execute the application was not found in '/Users/rolf/work/maccore/onedotnet/xamarin-macios/tests/dotnet/MySingleView/bin/Debug/net5.0-ios/ios-x64/'.
    Failed to run as a self-contained app.
      - The application was run as a self-contained app because '/Users/rolf/work/maccore/onedotnet/xamarin-macios/tests/dotnet/MySingleView/bin/Debug/net5.0-ios/ios-x64/MySingleView.runtimeconfig.json' did not specify a framework.
      - If this should be a framework-dependent app, specify the appropriate framework in '/Users/rolf/work/maccore/onedotnet/xamarin-macios/tests/dotnet/MySingleView/bin/Debug/net5.0-ios/ios-x64/MySingleView.runtimeconfig.json'.

That's for a different pull request though.

Ref: https://github.com/xamarin/net6-samples/issues/35.
2020-10-09 13:01:13 +02:00
Rolf Bjarne Kvinge caba0a66be
[msbuild] Move PathUtils.cs to tools/common so that other code can use it too. (#9801)
In particular the code to resolve symlinks and relative paths is useful.
2020-10-09 08:32:10 +02:00
Rolf Bjarne Kvinge 4b5be94592
[msbuild] Add SceneKit assets to our items included by default. (#9798)
* [msbuild] Add SceneKit assets to our items included by default.

There's a minor wrinkle here: we need to calculate the virtual path of the
SceneKit items (relative to the project), but for items included by default
their defining project is not the user's project, but our
Xamarin.Shared.Sdk.DefaultItems.targets file.

The solution is to add metadata for items included by default
('IsDefaultItem'), and if that's found when we calculate the virtual path, use
the executable project to calculate the virtual path, instead of the project
that defined the SceneKit items.

* [msbuild] Use a different temporary directory based on the platform.
2020-10-09 08:31:52 +02:00
Filip Navara 59db084141
Respect xamarin_executable_name on macOS if specified (#9803) 2020-10-08 18:23:39 +02:00
Filip Navara 4f30a27f3a
[dotnet] Use correct relative path for install_name_tool on macOS (#9804)
* Use correct relative path for install_name_tool on macOS

* Replace hard-coded `MonoBundle` with $(_CustomBundleName)
2020-10-08 12:32:37 +02:00
Filip Navara e40974d414
Copy native executable to Contents/MacOS directory in the .app bundle for macOS platform (#9802) 2020-10-08 08:18:29 +02:00
Filip Navara 1e960b8780
Update GenerateMainStep to generate code compatible with libxamarin on macOS (#9799) 2020-10-08 08:09:40 +02:00
Alex Soto 3c11942a8a
[maccore] Bump maccore to get CredScan fixes (#9807)
New commits in xamarin/maccore:

* xamarin/maccore@6a86f16e0f [CredScan] Avoid scanning src/cfnetwork.cs due to false positives (#2323)

Diff: d1f2dfa9a9..6a86f16e0f
2020-10-07 19:47:38 -04:00
TJ Lambert 5563712b8e
[MSBuild] String Localization Capability and Unit Test (#9584)
String Localization Capability and Unit Test

Co-authored-by: TJ Lambert <tjlambert@microsoft.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
2020-10-07 11:14:04 -05:00
Rolf Bjarne Kvinge dd97579e3a
[msbuild] Share the *CompileCoreMLModels targets between Xamarin.iOS and Xamarin.Mac. (#9792)
Xamarin.Mac didn't have support for CoreML models before, so this effectively adds
support for CoreML models to Xamarin.Mac.

Also add a test to make sure it actually works.
2020-10-07 08:42:17 +02:00
Rolf Bjarne Kvinge 8bf4e0e5e6
[tests] Fix sample tests to take into account when a platform has been disabled. (#9774)
* [tests] Fix sample tests to take into account when a platform has been disabled.

* [devops] The INCLUDE_MAC/INCLUDE_IOS variables might not exist.
2020-10-06 17:33:03 +02:00
Rolf Bjarne Kvinge 8b06e4f37e
[msbuild] Include all the *.targets and *.props files from the Xamarin.Shared directory in the XI and XM tasks projects. (#9787)
This way these files end up copied to the output directory, and from there
they're included in msbuild.zip which our Windows support needs.
2020-10-06 15:56:56 +02:00
Rolf Bjarne Kvinge 4cf26937ce
[msbuild] Share the CodesignNativeLibraries target between Xamarin.iOS and Xamarin.Mac. (#9775) 2020-10-06 14:18:31 +02:00
Rolf Bjarne Kvinge 95b76d6ee8
[msbuild] Share the _*Metal tasks between Xamarin.iOS and Xamarin.Mac. (#9786)
* This fixes a bug in the Xamarin.Mac version, where the _ForgeMetal's Outputs
  value didn't match the actual output path (this was fixed in the iOS version).
* Also update the definition of the _ForgedMetal itemgroup to use a nested ItemGroup
  instead of the CreateItem task.
2020-10-06 14:17:56 +02:00
Sebastien Pouliot 0922f354fe
[generator] Fix potential warnings/errors when `[Sealed]` is used on types. Fix #9065 (#9782)
Fix build warnings
```
build/mac/mobile/ReplayKit/RPScreenRecorder.g.cs(113,22): warning CS0628: 'RPScreenRecorder.RPScreenRecorder(IntPtr)': new protected member declared in sealed class
build/mac/full/ReplayKit/RPScreenRecorder.g.cs(113,22): warning CS0628: 'RPScreenRecorder.RPScreenRecorder(IntPtr)': new protected member declared in sealed class
```
which still happens even if we disable XM in `main` :|

Added generator test based on Whitney's test case from github issue

ref: https://github.com/xamarin/xamarin-macios/issues/9065
2020-10-05 22:01:36 -04:00
Sebastien Pouliot d7f8825119
[tests][xtro] Add enum member/values checks. Fix #7527 (#9691)
Figure out if
* we're missing enum values (easy to workaround, but annoying for developers)
* we expose enum values that are not defined natively (potential bugs)

reference: https://github.com/xamarin/xamarin-macios/issues/7527
2020-10-05 15:57:18 -04:00
Rolf Bjarne Kvinge def5b66232
Add ikvm-fork as a submodule instead of using the sources embedded in the mono archive. (#9776)
There are two reasons for this:

* It grants us more independence from the mono archive for .NET 6.
* We need a bugfix in ikvm, but we can't necessarily bump mono.
2020-10-05 15:43:32 +02:00
Rolf Bjarne Kvinge 5117154dc1
[msbuild] Refactor how we figure out which native libraries to sign for Xamarin.Mac (#9768)
Refactor how we figure out which native libraries to sign for Xamarin.Mac to align it with how it's done for Xamarin.iOS.

* The MmpTask searched (and returned) and *.dylib files in the
  Contents/MonoBundle directory; replace this with MSBuild item group
  globbing. This also makes an error code unused, so remove that as well.
* The _TemperMetal task returned the compiled *.metallib file; replace this
  with MSBuild item group globbing.
2020-10-05 08:56:28 +02:00
Rolf Bjarne Kvinge 439e7d10f6
[msbuild] Refactor the ProjectPaths to use strongly typed properties. (#9769) 2020-10-05 08:56:09 +02:00
Rolf Bjarne Kvinge ac129fd082
[msbuild] Share the _CreatePkgInfo target between Xamarin.iOS and Xamarin.Mac. (#9770)
The Xamarin.Mac version of _CreatePkgInfo had a 'Ditto' call that seemed like
a copy-paste error (the target below has the exac same call to 'Ditto'), and
there's no reason to call 'Ditto' when creating the PkgInfo file, so I just
removed it.

The 'Ditto' call was added here: ca028ea150 (diff-ccded350e40e767d69171655acb86b01R586-R606)
2020-10-05 08:55:35 +02:00
Sebastien Pouliot 144f926cea
[tests][xtro] Check for missing/extra [Appearance]. Fix #7136 (#9765)
based on the header's `UI_APPEARANCE_SELECTOR` decorations

Fix https://github.com/xamarin/xamarin-macios/issues/7136
2020-10-02 13:51:55 -04:00
Rolf Bjarne Kvinge 3e236d58c3
[msbuild] Fix warning text for the 0111 warning to use the correct format specifier. (#9759) 2020-10-02 08:56:50 +02:00
Rolf Bjarne Kvinge aa8de5ae95
Bump to .NET 5.0.100-rc.2.20459.1 (#9758)
@(SdkSupportedTargetPlatform) was renamed to
@(SdkSupportedTargetPlatformVersion), so match that and update our own
variable names as well.
2020-10-02 08:31:38 +02:00
Sebastien Pouliot 2b6eb8438a
[tests][intro] ConstantsCheck should only be executed on latest OS (#9751)
since the files, mapped by the constants, might not be present in earlier
versions of the OS. We can only be sure, of their presence, on the
current/supported SDK version

Fix intro running on iOS 10.3 (64 bits)

```
Introspection.iOSApiTypoTest
    [PASS] AttributeTypoTest
    [FAIL] ConstantsCheck :   NetworkLibrary
  Expected: True
  But was:  False
 :   at Introspection.ApiTypoTest.ConstantsCheck () [0x00168] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tests/introspection/ApiTypoTest.cs:1088
```
2020-10-01 22:30:04 -04:00
Manuel de la Pena 2c78255dbe
[Metal][Generator] Fix the SetBuffers methods in protocols. Fixes #9649 (#9651)
Add fixes for Metal for XAM_CORE_4. Fixing the methods takes us to a dangerous path, so we do not do it unless we have issues about the methods.

Fixes https://github.com/xamarin/xamarin-macios/issues/9649
2020-10-01 14:27:55 -04:00
Sebastien Pouliot 8a92716c89
Bump API diff to the released (stable) xcode12 version of XI (#9755) 2020-10-01 14:04:56 -04:00
Sebastien Pouliot 3cb3d60e2b
[tests][xtro] Consider class (static) methods when checking for deprecation. Fix #9026 (#9743)
ref: https://github.com/xamarin/xamarin-macios/issues/9026
2020-10-01 08:02:09 -04:00
Ryan Pendleton bcfbed9ae6
[Photos] Correct nullability attributes for the Photos framework (#9740) 2020-10-01 08:42:44 +02:00
Rolf Bjarne Kvinge 82be630003
[tests] Set the build environment when cleaning project as well in the mac msbuild tests. (#9739)
This way we don't depend on having a system install of Xamarin.Mac.
2020-10-01 08:42:05 +02:00
Rolf Bjarne Kvinge 49f03c13fd
[tests] Fix a couple of typos. (#9736) 2020-10-01 08:41:01 +02:00
Rolf Bjarne Kvinge 0293ae5153
Revert "[introspection] Adapt to .NET 5's vision of how ConstructorInfo.ToString () should behave." (#9738)
This reverts commit f69ed9a25e.

This is now fixed in .NET.
2020-10-01 08:38:21 +02:00
Rolf Bjarne Kvinge 8876444586
[msbuild] Share the _*CompileSceneKitAssets targets between Xamarin.iOS and Xamarin.Mac. (#9735)
The Xamarin.iOS version is more updated, so that's the version now for both
Xamarin.iOS and Xamarin.Mac:

* The iOS version contains Inputs/Outputs (important for incremental builds).
* It doesn't use FileWrites (see e97d69b25c why
  this was removed for iOS)

Additionally define the _SceneKitCache variable for macOS as well, previously
it was only defined for iOS (I'm adding more variables than just
_SceneKitCache to macOS, most of the others will be used in in macOS in
upcoming pull requests, and this way turned out to be simplest).

And also add a new Xamarin.Mac test that exercises the CompileSceneKitAssets targets.
2020-10-01 08:37:52 +02:00
Sebastien Pouliot e343e68725
[tests][cecil] Check that error-based enum values don't have availability attributes (#9737)
and fixes the ones that have some.

From https://github.com/xamarin/xamarin-macios/issues/9724

We do not _normally_ add availability attributes on enums **members** that represent error codes. In part because it's a lot of metadata and, foremost, because it's not really helpful to write code. E.g.

```csharp
var err = Call.Api (1);
switch (err) {
case NSError.Bad:
case NSError.Wrong:
   Console.WriteLine ($"API failed: {err});
   break;
case NSError.Ok:
   break;
default:
   Console.WriteLine ($"Unknown error code {err}");
   break;
}
```

Adding version checks inside this would be complicated (source wise) and not really helpful since
* API can return undefined error code (and the error logic should work);
* Availability information is not 100% accurate;

As such we default to not add them - but we some time forgot about it.
2020-09-30 15:15:18 -04:00
Rolf Bjarne Kvinge 24795d1306
[tests] Simplify ProjectTestHelpers.FindRootDirectory by re-using existing code. (#9734) 2020-09-30 19:12:54 +02:00
Rolf Bjarne Kvinge f4832392d7
[tests] Remove duplicated code to set the requirement environment variables for building locally. (#9733) 2020-09-30 19:09:55 +02:00
Rolf Bjarne Kvinge 94064cf3f8
[msbuild] Merge the CodesignNativeLibraries task into the Codesign task. (#9731)
Merge the CodesignNativeLibraries task into the Codesign task, since they're almost
identical (so this turns out to be a significant code reduction).

* Add a StampPath property to Codesign task, which, if set, specifies if and where
  a stamp file should be created for each signed file/directory. This replaces the
  IntermediateOutputPath property from the CodesignNativeLibraries task.
* Copy logic to detect if a file/directory needs to be resigned from the CodesignNativeLibraries
  task to the Codesign task, using any stamp files.
* Use the more descriptive error messages E0004/E0005 from the CodesignNativeLibraries
  task.
* The CodesignNativeLibraries task recursed into directories to find *.dylibs and
  *.metallib files to sign; replace this with MSBuild item group globbing.
2020-09-30 18:37:21 +02:00
Rolf Bjarne Kvinge 3f0cac77b7
[xharness] Disable iOS 32-bit simulator tests, they don't work on Xcode 12+. (Re)fixes #xamarin/maccore@2284. (#9732)
Fixes https://github.com/xamarin/maccore/issues/2284.
2020-09-30 18:11:10 +02:00