Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build bgen and the product assemblies using/referencing netcore3.1. #8070

Merged
merged 29 commits into from
Mar 12, 2020

Conversation

rolfbjarne
Copy link
Member

@rolfbjarne rolfbjarne commented Mar 9, 2020

Build bgen and the product assemblies using/referencing netcore3.1. This is opt-in for now (although bots have been opted in by default), and won't affect normal developer builds (it slows it down).

A few minor changes to the product assemblies were required, some will be revisited, some are expected. Issues will be created for the ones that will be revisited (unless an issue already exists).

This pull request is best consumed commit-by-commit.

…mblies for .NET 5.

I couldn't figure out how to make nuget install these into the system, so I
decided to just download the package locally instead.

This is just temporary until we get real .NET 5 reference assemblies.
Build bgen as a .netcoreapp 3.1 in addition to the managed executable we're
already creating.
IKVM has a bug where it doesn't correctly compare assemblies, which means it
can end up loading the same assembly (in particular any System.Runtime whose
version > 4.0, but likely others as well) more than once. This is bad, because
we compare types based on reference equality, which breaks down when there are
multiple instances of the same type.

So just don't ask IKVM to load assemblies that have already been loaded.
…turn to) with .NET5 behind a DOTNET_TODO define.
… running in .NET mode.

Assemblies will still be found in .NET mode as long as the right -lib:<path>
is passed to bgen.
…ves.

IKVM will try to use reflection, which doesn't work in .NET 5.
This also meant adding support for running .NET tests in xharness. Some
refactoring was done to extract common code to shared members, in order to
avoid duplicating a lot of code.
@monojenkins

This comment has been minimized.

Copy link
Member

@mandel-macaque mandel-macaque left a comment

Choose a reason for hiding this comment

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

Some small tiny comments and added an issues for me to track some todo on the network area.

public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState) =>
TaskToApm.Begin(ReadAsync (buffer, offset, count, CancellationToken.None), asyncCallback, asyncState);

public override int EndRead (IAsyncResult asyncResult) =>
TaskToApm.End<int> (asyncResult);
#endif // !DOTNET_TODO
Copy link
Member

Choose a reason for hiding this comment

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

So, this was a similar implementation to what it was done back in the day in the compression implementations of mono for zips. The APIs is not very used. If the base class implementation works (sync) is not a big issues since they should be using the Task version. I think it might be a good opportunity to get this out as outdated code.

Copy link
Contributor

Choose a reason for hiding this comment

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

It is actually problematic. Sorry I didn't notice your comment and started new thread below.

public override IAsyncResult BeginWrite (byte[] array, int offset, int count, AsyncCallback asyncCallback, object asyncState) =>
TaskToApm.Begin(WriteAsync (array, offset, count, CancellationToken.None), asyncCallback, asyncState);

public override void EndWrite (IAsyncResult asyncResult) => TaskToApm.End (asyncResult);
#endif // !DOTNET_TODO
Copy link
Member

Choose a reason for hiding this comment

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

Same, I think it is safe to remove since we do not change the API. is less efficient but users should have moved (if we do have any of them in this API).

Copy link
Contributor

Choose a reason for hiding this comment

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

If the base implementation works then let's add [Obsolete] to point customers into the best direction and call base (for compatibility)

src/Makefile Outdated
@@ -720,7 +932,6 @@ $(TVOS_BUILD_DIR)/AssemblyInfo.cs: $(TOP)/src/AssemblyInfo.cs.in $(TOP)/Make.con
$(Q) rm -f [email protected]
$(Q) touch $@


Copy link
Member

Choose a reason for hiding this comment

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

extra white space change.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed.

src/System.Net.Http/CFNetworkHandler.cs Show resolved Hide resolved
yield return Path.Combine (GetSDKRoot (), "lib", "reference", "full");
yield return Path.Combine (GetSDKRoot (), "lib", "mono", "4.5");
} else if (target_framework == TargetFramework.Xamarin_Mac_4_5_System) {
yield return "/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5";
Copy link
Member

Choose a reason for hiding this comment

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

hardcoded?

Copy link
Contributor

Choose a reason for hiding this comment

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

same code as before under a new if condition

Copy link
Contributor

Choose a reason for hiding this comment

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

Add ?w=1 to the end of your URL to get a better diff in cases like this.

Copy link
Contributor

@spouliot spouliot left a comment

Choose a reason for hiding this comment

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

👍

Please add links URL to comments/issues (seems most now exists) so we don't have to look for them.

public override IAsyncResult BeginWrite (byte[] array, int offset, int count, AsyncCallback asyncCallback, object asyncState) =>
TaskToApm.Begin(WriteAsync (array, offset, count, CancellationToken.None), asyncCallback, asyncState);

public override void EndWrite (IAsyncResult asyncResult) => TaskToApm.End (asyncResult);
#endif // !DOTNET_TODO
Copy link
Contributor

Choose a reason for hiding this comment

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

If the base implementation works then let's add [Obsolete] to point customers into the best direction and call base (for compatibility)

yield return Path.Combine (GetSDKRoot (), "lib", "reference", "full");
yield return Path.Combine (GetSDKRoot (), "lib", "mono", "4.5");
} else if (target_framework == TargetFramework.Xamarin_Mac_4_5_System) {
yield return "/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5";
Copy link
Contributor

Choose a reason for hiding this comment

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

same code as before under a new if condition

@monojenkins

This comment has been minimized.

This way we don't have to change PATH on bots. It always makes it easier to
use a different location for the executable in the future if we wished to.
@monojenkins

This comment has been minimized.

@monojenkins

This comment has been minimized.

@monojenkins

This comment has been minimized.

@rolfbjarne rolfbjarne added the not-notes-worthy Ignore for release notes label Mar 10, 2020
[Obsolete ("Use 'ReadAsync' instead. This method is synchronous.")]
#endif
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
{
Copy link
Contributor

Choose a reason for hiding this comment

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

A similar Mono change recently broke our product. This is quite problematic because the base implementation of BeginRead/BeginWrite/EndRead/EndWrite. It is calling ReadAsync/WriteAsync internally but it is geared towards seekable streams where Position matters and it only allows single async call at a time. This is particularly problematic with [wrapped] network streams where a common coding pattern expect both async read and write to be working at the same time.

Note that in .NET Core all non-seekable network streams or streams that wrap around network streams (GzipStream, HttpBaseStream, QuicStream, PipeReaderStream, PipeWriterStream, ReadOnlyMemoryStream, BrotliStream, SslStream, ...) use the TaskToApm pattern.

I think the base implementation in Stream.BeginRead/BeginWrite could probably be fixed/extended to work for these scenarios but that's not the case today. Until that happens I think it's better to use a private copy of TaskToApm here.

Copy link
Contributor

Choose a reason for hiding this comment

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

I filed an issue at dotnet/runtime#33447 to seek better solution. If it gains some traction it may make sense to remove the overrides of BeginRead/BeginWrite/EndRead/EndWrite altogether.

src/Makefile Outdated

GENERATOR_FLAGS=-process-enums -core -nologo -nostdlib -noconfig -native-exception-marshalling --ns:ObjCRuntime

DOTNET_FLAGS=/noconfig /nostdlib+ /deterministic /features:strict /nologo /target:library /debug /unsafe /define:DOTNET /define:DOTNET_TODO \
Copy link
Contributor

Choose a reason for hiding this comment

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

Any particular reason to go with DOTNET define instead of the standard NETCOREAPP one?

Copy link
Member Author

@rolfbjarne rolfbjarne Mar 11, 2020

Choose a reason for hiding this comment

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

It seems just NET will be the defined for the future: https://github.com/terrajobst/designs/blob/net5/accepted/2020/net5/net5.md#preprocessor-symbols, and NETCOREAPP is only defined for backwards compatibility. I'll change it to NET to be consistent.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed to use NET (and NET_TODO).

@monojenkins
Copy link
Collaborator

Build failure
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
ℹ️ Generator Diff (please review changes)
🔥 Test run failed 🔥

Test results

71 tests failed, 23 tests passed.

Failed tests

  • xammac tests/Mac Modern/Debug: HarnessException (Harness exception for 'xammac tests': System.ComponentModel.Win32Exception (0x80004005): ApplicationName='/Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/tmp-test-dir/xammac_tests/bin/x86/Debug/xammac_tests.app/Contents/MacOS/xammac_tests', CommandLine='"-result=/Users/builder/jenkins/workspace/xamarin-macios-pr-builder/jenkins-results/tests/xammac tests/293/test-Mac_Modern-20200310_165603.xml"', CurrentDirectory='', Native error= Cannot find the specified file
    at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x0029f] in /Users/builder/jenkins/workspace/build-package-osx-mono/2019-12/external/bockbuild/builds/mono-x64/mcs/class/System/System.Diagnostics/Process.cs:778
    at System.Diagnostics.Process.Start () [0x0003a] in /Users/builder/jenkins/workspace/build-package-osx-mono/2019-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/System/services/monitoring/system/diagnosticts/Process.cs:2006
    at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
    at Xharness.Execution.ProcessManager.RunAsync (System.Diagnostics.Process process, Xharness.Logging.ILog log, System.IO.TextWriter StdoutStream, System.IO.TextWriter StderrStream, System.Nullable1[T] timeout, System.Collections.Generic.Dictionary2[TKey,TValue] environment_variables, System.Nullable1[T] cancellation_token, System.Nullable1[T] diagnostics) [0x00469] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Execution/ProcessManager.cs:128
    at Xharness.Jenkins.TestTasks.MacExecuteTask.RunTestAsync () [0x00627] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs:101
    at Xharness.Jenkins.TestTasks.MacExecuteTask.RunTestAsync () [0x0083f] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs:115
    at Xharness.Jenkins.TestTasks.RunTestTask.ExecuteAsync () [0x00191] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/RunTestTask.cs:100
    at Xharness.Jenkins.TestTasks.TestTask.RunInternalAsync () [0x00226] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/TestTask.cs:262 )
  • xammac tests/Mac Modern/Release: HarnessException (Harness exception for 'xammac tests': System.ComponentModel.Win32Exception (0x80004005): ApplicationName='/Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/tmp-test-dir/xammac_tests173/bin/x86/Release/xammac_tests.app/Contents/MacOS/xammac_tests', CommandLine='"-result=/Users/builder/jenkins/workspace/xamarin-macios-pr-builder/jenkins-results/tests/xammac tests/297/test-Mac_Modern-20200310_165608.xml"', CurrentDirectory='', Native error= Cannot find the specified file
    at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x0029f] in /Users/builder/jenkins/workspace/build-package-osx-mono/2019-12/external/bockbuild/builds/mono-x64/mcs/class/System/System.Diagnostics/Process.cs:778
    at System.Diagnostics.Process.Start () [0x0003a] in /Users/builder/jenkins/workspace/build-package-osx-mono/2019-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/System/services/monitoring/system/diagnosticts/Process.cs:2006
    at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
    at Xharness.Execution.ProcessManager.RunAsync (System.Diagnostics.Process process, Xharness.Logging.ILog log, System.IO.TextWriter StdoutStream, System.IO.TextWriter StderrStream, System.Nullable1[T] timeout, System.Collections.Generic.Dictionary2[TKey,TValue] environment_variables, System.Nullable1[T] cancellation_token, System.Nullable1[T] diagnostics) [0x00469] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Execution/ProcessManager.cs:128
    at Xharness.Jenkins.TestTasks.MacExecuteTask.RunTestAsync () [0x00627] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs:101
    at Xharness.Jenkins.TestTasks.MacExecuteTask.RunTestAsync () [0x0083f] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs:115
    at Xharness.Jenkins.TestTasks.RunTestTask.ExecuteAsync () [0x00191] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/RunTestTask.cs:100
    at Xharness.Jenkins.TestTasks.TestTask.RunInternalAsync () [0x00226] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/TestTask.cs:262 )
  • xammac tests/Mac Modern/Release: HarnessException (Harness exception for 'xammac tests': System.ComponentModel.Win32Exception (0x80004005): ApplicationName='/Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/tmp-test-dir/xammac tests/bin/x86/Release/xammac_tests.app/Contents/MacOS/xammac_tests', CommandLine='"-result=/Users/builder/jenkins/workspace/xamarin-macios-pr-builder/jenkins-results/tests/xammac tests/299/test-Mac_Modern-20200310_165614.xml"', CurrentDirectory='', Native error= Cannot find the specified file
    at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x0029f] in /Users/builder/jenkins/workspace/build-package-osx-mono/2019-12/external/bockbuild/builds/mono-x64/mcs/class/System/System.Diagnostics/Process.cs:778
    at System.Diagnostics.Process.Start () [0x0003a] in /Users/builder/jenkins/workspace/build-package-osx-mono/2019-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/System/services/monitoring/system/diagnosticts/Process.cs:2006
    at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
    at Xharness.Execution.ProcessManager.RunAsync (System.Diagnostics.Process process, Xharness.Logging.ILog log, System.IO.TextWriter StdoutStream, System.IO.TextWriter StderrStream, System.Nullable1[T] timeout, System.Collections.Generic.Dictionary2[TKey,TValue] environment_variables, System.Nullable1[T] cancellation_token, System.Nullable1[T] diagnostics) [0x00469] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Execution/ProcessManager.cs:128
    at Xharness.Jenkins.TestTasks.MacExecuteTask.RunTestAsync () [0x00627] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs:101
    at Xharness.Jenkins.TestTasks.MacExecuteTask.RunTestAsync () [0x0083f] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs:115
    at Xharness.Jenkins.TestTasks.RunTestTask.ExecuteAsync () [0x00191] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/RunTestTask.cs:100
    at Xharness.Jenkins.TestTasks.TestTask.RunInternalAsync () [0x00226] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/xharness/Jenkins/TestTasks/TestTask.cs:262 )
  • monotouch-test/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • framework-test/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • interdependent-binding-projects/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • fsharp/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
  • mono-native-compat/iOS Unified 32-bits - simulator/Debug: BuildFailure
  • mono-native-unified/iOS Unified 32-bits - simulator/Debug: 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
  • framework-test/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • interdependent-binding-projects/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • fsharp/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
  • mono-native-compat/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • mono-native-compat/iOS Unified Today Extension 64-bits - simulator/Debug: BuildFailure
  • mono-native-unified/iOS Unified 64-bits - simulator/Debug: BuildFailure
  • mono-native-unified/iOS Unified Today Extension 64-bits - simulator/Debug: 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
  • framework-test/tvOS - simulator/Debug: BuildFailure
  • interdependent-binding-projects/tvOS - simulator/Debug: BuildFailure
  • fsharp/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
  • mono-native-compat/tvOS - simulator/Debug: BuildFailure
  • mono-native-unified/tvOS - simulator/Debug: 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
  • mmptest/macOS/Debug: TimedOut (Execution timed out after 120 minutes.)
  • Generator tests/.NET: BuildFailure

src/Makefile Outdated
GENERATOR_FLAGS=-process-enums -core -nologo -nostdlib -noconfig -native-exception-marshalling --ns:ObjCRuntime

DOTNET_FLAGS=/noconfig /nostdlib+ /deterministic /features:strict /nologo /target:library /debug /unsafe /define:DOTNET /define:DOTNET_TODO \
/r:$(DOTNET_BCL_DIR)/mscorlib.dll \
Copy link
Contributor

Choose a reason for hiding this comment

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

This doesn't sound right. There should be no mscorlib, it is System.Private.CoreLib and it should not be referenced directly. Last time I tried the assemblies needed were only those:

  • System.Collections.dll
  • System.Drawing.Primitives.dll
  • System.Linq.dll
  • System.Net.Http.dll
  • System.Runtime.dll
  • System.Runtime.InteropServices.dll
  • System.Security.Cryptography.X509Certificates.dll
  • System.Xml.dll
  • System.Xml.ReaderWriter.dll

Copy link
Member Author

Choose a reason for hiding this comment

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

mscorlib.dll is there:

$  ls -la /usr/local/share/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.0/ref/netcoreapp3.1/mscorlib.dll 
-rw-r--r--  1 root  wheel  55880 Nov 15 09:36 /usr/local/share/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.0/ref/netcoreapp3.1/mscorlib.dll

that said, I did not try to minimize the list of assemblies, I found a set that worked, and went with that. I'll try your list to see if that works.

Copy link
Contributor

Choose a reason for hiding this comment

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

It is there as a facade for compatibility with .NET Framework libraries, not for consumption from new code.

Copy link
Member Author

Choose a reason for hiding this comment

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

I wasn't able to remove many assemblies from the list, I had to add most of them back when I tried your list of assemblies. This is what happened after the initial removal and after adding them back one by one: https://gist.github.com/rolfbjarne/7f515ae2ac7c0f712b3d70f0ff985549

Copy link
Contributor

Choose a reason for hiding this comment

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

Interesting. I'll check later what I did differently, perhaps I disabled OpenTK and used slightly different build options. Nevertheless, as long as it doesn't depend on compatibility facade assemblies I am happy. 👍


//
// Xamarin:
// This is a copy of this file: https://github.com/dotnet/runtime/blob/25d316cefafc4c3884f38acf7bdef971d2b9fe4b/src/libraries/Common/src/System/Threading/Tasks/TaskToApm.cs
Copy link
Member Author

Choose a reason for hiding this comment

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

Since this file is a copy of a file from elsewhere, it does not follow our style guidelines. This is expected.

@monojenkins
Copy link
Collaborator

Build failure
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
ℹ️ Generator Diff (please review changes)
🔥 Test run failed 🔥

@monojenkins
Copy link
Collaborator

Build failure
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
ℹ️ Generator Diff (please review changes)
🔥 Test run failed 🔥

Test results

3 tests failed, 91 tests passed.

Failed tests

  • monotouch-test/tvOS - simulator/Debug (LinkSdk): Failed
  • monotouch-test/tvOS - simulator/Debug (static registrar): Failed
  • Generator tests/.NET: BuildFailure

@rolfbjarne
Copy link
Member Author

build

@monojenkins
Copy link
Collaborator

Build failure
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
ℹ️ Generator Diff (please review changes)
🔥 Test run failed 🔥

Test results

2 tests failed, 92 tests passed.

Failed tests

  • xammac tests/Mac Modern/Debug: BuildFailure
  • Generator tests/.NET: BuildFailure

@monojenkins
Copy link
Collaborator

Build failure
Build succeeded
API Diff (from stable)
API Diff (from PR only) (no change)
ℹ️ Generator Diff (please review changes)
🔥 Test run failed 🔥

Test results

2 tests failed, 92 tests passed.

Failed tests

  • monotouch-test/iOS Unified 64-bits - simulator/Release (all optimizations): Failed
  • monotouch-test/tvOS - simulator/Debug (LinkSdk): Failed

@rolfbjarne
Copy link
Member Author

Test failures are unrelated

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