Skip to content

Conversation

@rolfbjarne
Copy link
Member

This is a necessary step towards making the task assemblies work with .NET 5.

The old code (to build for net461) is still present, and it's easy to switch
back if need be. Eventually the old code should be removed.

Best reviewed commit-by-commit.

New commits in xamarin/Xamarin.MacDev:

* dotnet/macios-devtools@210c664 Adds net451 to Xamarin.MacDev.csproj
* dotnet/macios-devtools@64db365 [winios] Changes provisioning profiles default path
* dotnet/macios-devtools@d34430a Switch to short-form projects and build for both net461 and netstandard2.0. (dotnet#68)

Diff: https://github.com/xamarin/Xamarin.MacDev/compare/0f578f51e63b6ff93014782dbc9378e6b6bc6d75..210c664e56117d3a1a7f6dd002109eb444dbdc17
The older version doesn't support netstandard2.0.

No code changes were required.
Also unify/deduplicate the ILMerge logic between Xamarin.iOS and Xamarin.Mac.
…sts for both netstandard2.0 and net461.

Use custom project configurations to support running the tests for when the
tasks assembly is built for netstandard2.0 and net461.
@rolfbjarne rolfbjarne added the not-notes-worthy Ignore for release notes label Jan 14, 2020
@monojenkins
Copy link
Collaborator

Build failure
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
Generator Diff (no change)
🔥 Test run failed 🔥

Test results

52 tests failed, 38 tests passed.

Failed tests

  • monotouch-test/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • introspection/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • dont link/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • dont link/iOS Unified 32-bits - simulator/Release: BuildFailure
  • link all/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • link all/iOS Unified 32-bits - simulator/Release: BuildFailure
  • link sdk/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • link sdk/iOS Unified 32-bits - simulator/Release: BuildFailure
  • monotouch-test/iOS Unified 32-bits - simulator/Debug (LinkSdk): BuildFailure
  • monotouch-test/iOS Unified 32-bits - simulator/Debug (static registrar): BuildFailure
  • monotouch-test/iOS Unified 32-bits - simulator/Release (all optimizations): BuildFailure
  • monotouch-test/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • introspection/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • dont link/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • dont link/iOS Unified 64-bits - simulator/Release: BuildFailure
  • link all/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • link all/iOS Unified 64-bits - simulator/Release: BuildFailure
  • link sdk/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • link sdk/iOS Unified 64-bits - simulator/Release: BuildFailure
  • monotouch-test/iOS Unified 64-bits - simulator/Debug (LinkSdk): BuildFailure
  • monotouch-test/iOS Unified 64-bits - simulator/Debug (static registrar): BuildFailure
  • monotouch-test/iOS Unified 64-bits - simulator/Release (all optimizations): BuildFailure
  • monotouch-test/tvOS - simulator/Debug: BuildFailure
  • introspection/tvOS - simulator/Debug: BuildFailure
  • dont link/tvOS - simulator/Debug: BuildFailure
  • dont link/tvOS - simulator/Release: BuildFailure
  • link all/tvOS - simulator/Debug: BuildFailure
  • link all/tvOS - simulator/Release: BuildFailure
  • link sdk/tvOS - simulator/Debug: BuildFailure
  • link sdk/tvOS - simulator/Release: BuildFailure
  • monotouch-test/tvOS - simulator/Debug (LinkSdk): BuildFailure
  • monotouch-test/tvOS - simulator/Debug (static registrar): BuildFailure
  • monotouch-test/tvOS - simulator/Release (all optimizations): BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Debug: BuildFailure
  • framework-test/watchOS 32-bits - simulator/Debug: BuildFailure
  • interdependent-binding-projects/watchOS 32-bits - simulator/Debug: BuildFailure
  • fsharp/watchOS 32-bits - simulator/Debug: BuildFailure
  • introspection/watchOS 32-bits - simulator/Debug: BuildFailure
  • dont link/watchOS 32-bits - simulator/Debug: BuildFailure
  • dont link/watchOS 32-bits - simulator/Release: BuildFailure
  • link all/watchOS 32-bits - simulator/Debug: BuildFailure
  • link all/watchOS 32-bits - simulator/Release: BuildFailure
  • link sdk/watchOS 32-bits - simulator/Debug: BuildFailure
  • link sdk/watchOS 32-bits - simulator/Release: BuildFailure
  • mono-native-compat/watchOS 32-bits - simulator/Debug: BuildFailure
  • mono-native-unified/watchOS 32-bits - simulator/Debug: BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Debug (LinkSdk): BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Debug (static registrar): BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Release (all optimizations): BuildFailure
  • MSBuild tests/iOS (net461): Failed (Execution failed with exit code 254)
  • MSBuild tests/iOS (netstandard2.0): Failed (Execution failed with exit code 254)
  • mmptest/macOS/Debug: Failed (Execution failed with exit code 1)

Ask MSBuild to copy lib assemblies to the output folder when building for
netstandard2.0, this way we can easily find the actual implementation
libraries to pass to ILRepack.
@monojenkins
Copy link
Collaborator

Build failure
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
Generator Diff (no change)
🔥 Test run failed 🔥

Test results

29 tests failed, 61 tests passed.

Failed tests

  • monotouch-test/tvOS - simulator/Debug: BuildFailure
  • framework-test/tvOS - simulator/Debug: BuildFailure
  • interdependent-binding-projects/tvOS - simulator/Debug: BuildFailure
  • link all/tvOS - simulator/Debug: BuildFailure
  • link all/tvOS - simulator/Release: BuildFailure
  • link sdk/tvOS - simulator/Debug: BuildFailure
  • link sdk/tvOS - simulator/Release: BuildFailure
  • monotouch-test/tvOS - simulator/Debug (LinkSdk): BuildFailure
  • monotouch-test/tvOS - simulator/Debug (static registrar): BuildFailure
  • monotouch-test/tvOS - simulator/Release (all optimizations): BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Debug: BuildFailure
  • framework-test/watchOS 32-bits - simulator/Debug: BuildFailure
  • interdependent-binding-projects/watchOS 32-bits - simulator/Debug: BuildFailure
  • fsharp/watchOS 32-bits - simulator/Debug: BuildFailure
  • introspection/watchOS 32-bits - simulator/Debug: BuildFailure
  • dont link/watchOS 32-bits - simulator/Debug: BuildFailure
  • dont link/watchOS 32-bits - simulator/Release: BuildFailure
  • link all/watchOS 32-bits - simulator/Debug: BuildFailure
  • link all/watchOS 32-bits - simulator/Release: BuildFailure
  • link sdk/watchOS 32-bits - simulator/Debug: BuildFailure
  • link sdk/watchOS 32-bits - simulator/Release: BuildFailure
  • mono-native-compat/watchOS 32-bits - simulator/Debug: BuildFailure
  • mono-native-unified/watchOS 32-bits - simulator/Debug: BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Debug (LinkSdk): BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Debug (static registrar): BuildFailure
  • monotouch-test/watchOS 32-bits - simulator/Release (all optimizations): BuildFailure
  • MSBuild tests/iOS (net461): Failed (Execution failed with exit code 254)
  • MSBuild tests/iOS (netstandard2.0): Failed (Execution failed with exit code 254)
  • MTouch tests/NUnit: Failed (Execution failed with exit code 9)

@monojenkins
Copy link
Collaborator

Build success
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
Generator Diff (no change)
Test run succeeded

Copy link
Contributor

@VincentDondain VincentDondain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

@rolfbjarne
Copy link
Member Author

rolfbjarne commented Jan 16, 2020

Test failures are unrelated

@rolfbjarne rolfbjarne merged commit 54b07b2 into dotnet:master Jan 16, 2020
<NetstandardDirectory>@(NetstandardPath)</NetstandardDirectory>
</PropertyGroup>
<!-- The assemblies are in a very different place when building for netstandard2.0, which means we need different logic to find them too -->
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be $(TargetFramework.StartsWith('netstandard')) instead to make it more future-proof?

<MergedAssemblies Include="@(ReferencePath)" Condition="'%(FileName)' == 'Mono.Posix.NETStandard'" />
<MergedAssemblies Include="@(ReferencePath)" Condition="'%(Extension)' == '.dll' And $([System.String]::new('%(FileName)').StartsWith('Mono.Cecil', StringComparison.OrdinalIgnoreCase))" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto here, $(TargetFramework.StartsWith('net4'))? (since VSM and most other libs are already starting to target net472 instead?)

</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<MergedAssemblies Include="@(ReferenceCopyLocalPaths)" Condition="'%(Extension)' == '.dll'
And !$([System.String]::new('%(FileName)').EndsWith('.resources', StringComparison.OrdinalIgnoreCase))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I usually prefer [MSBuild]::ValueOrDefault which doesn't incur a string allocation. In this case, it would be: !$([MSBuild]::ValueOrDefault('%(FileName)', '').EndsWith('.resources', StringComparison.OrdinalIgnoreCase)).
See dotnet/msbuild#4615 for more context too.

@kzu
Copy link
Contributor

kzu commented Jan 17, 2020

Sorry for the late review @rolfbjarne, but they are minor improvements anyway. 👍

rolfbjarne added a commit to rolfbjarne/macios that referenced this pull request Feb 4, 2020
@rolfbjarne
Copy link
Member Author

@kzu,

Sorry for the late review @rolfbjarne, but they are minor improvements anyway. 👍

Thanks! Suggested edits: Fixed in #7790.

rolfbjarne added a commit that referenced this pull request Feb 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

not-notes-worthy Ignore for release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants