From 66de155ae928fcb210dd2c81f55eb288db1d562c Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Mon, 1 Mar 2021 12:21:51 +0100 Subject: [PATCH 1/6] Bump to net6 preview2 (6.0.100-preview.2.21114.3) --- Configuration.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configuration.props b/Configuration.props index 5e87a5827f3..7457ceec091 100644 --- a/Configuration.props +++ b/Configuration.props @@ -77,7 +77,7 @@ 6.0.100 - $(DotNetPreviewVersionBand)-preview.1.21109.8 + $(DotNetPreviewVersionBand)-preview.2.21114.3 6.0.0-preview.2.21108.2 6.0.0 From 64725bb7203682df2c6ed6e2ebe2067ec3eda242 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 3 Mar 2021 09:58:36 +0100 Subject: [PATCH 2/6] Update DotNetRuntimePacksVersion --- Configuration.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configuration.props b/Configuration.props index 7457ceec091..6e3e33186fa 100644 --- a/Configuration.props +++ b/Configuration.props @@ -79,7 +79,7 @@ 6.0.100 $(DotNetPreviewVersionBand)-preview.2.21114.3 - 6.0.0-preview.2.21108.2 + 6.0.0-preview.2.21114.2 6.0.0 $(ILLinkVersionBand)-alpha.1.21109.1 $(AndroidToolchainDirectory)\wix\ From c735a55490acf1b692537c90525272b7d7d7cd71 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 3 Mar 2021 11:40:27 +0100 Subject: [PATCH 3/6] Do not use 2 missing functions on NET6 Fixes: ld : error : undefined symbol: mono_register_config_for_assembly ld : error : undefined symbol: mono_config_parse_memory --- src/monodroid/jni/embedded-assemblies-zip.cc | 2 ++ src/monodroid/jni/mkbundle-api.h | 10 ++++++++-- src/monodroid/jni/monodroid-glue.cc | 13 ++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/monodroid/jni/embedded-assemblies-zip.cc b/src/monodroid/jni/embedded-assemblies-zip.cc index 42b32e52a8a..09a2aff1c4b 100644 --- a/src/monodroid/jni/embedded-assemblies-zip.cc +++ b/src/monodroid/jni/embedded-assemblies-zip.cc @@ -105,6 +105,7 @@ EmbeddedAssemblies::zip_load_entries (int fd, const char *apk_name, monodroid_sh continue; } +#if !defined(NET6) if (utils.ends_with (file_name, ".config") && bundled_assemblies != nullptr) { char *assembly_name = strdup (basename (file_name)); // Remove '.config' suffix @@ -115,6 +116,7 @@ EmbeddedAssemblies::zip_load_entries (int fd, const char *apk_name, monodroid_sh continue; } +#endif // ndef NET6 if (!utils.ends_with (file_name, ".dll")) continue; diff --git a/src/monodroid/jni/mkbundle-api.h b/src/monodroid/jni/mkbundle-api.h index 586f5d26273..9cfdf58ec01 100644 --- a/src/monodroid/jni/mkbundle-api.h +++ b/src/monodroid/jni/mkbundle-api.h @@ -5,13 +5,19 @@ using namespace xamarin::android; #endif +#if defined(NET6) +#define MDLEGACY(x) +#else +#define MDLEGACY(x) x +#endif // ndef NET6 + typedef struct BundleMonoAPI { void (*mono_register_bundled_assemblies) (const MonoBundledAssembly **assemblies); - void (*mono_register_config_for_assembly) (const char* assembly_name, const char* config_xml); + MDLEGACY(void (*mono_register_config_for_assembly) (const char* assembly_name, const char* config_xml)); void (*mono_jit_set_aot_mode) (int mode); void (*mono_aot_register_module) (void** aot_info); - void (*mono_config_parse_memory) (const char *buffer); + MDLEGACY(void (*mono_config_parse_memory) (const char *buffer)); void (*mono_register_machine_config) (const char *config_xml); } BundleMonoAPI; diff --git a/src/monodroid/jni/monodroid-glue.cc b/src/monodroid/jni/monodroid-glue.cc index ab5c632ab5e..2682139c797 100644 --- a/src/monodroid/jni/monodroid-glue.cc +++ b/src/monodroid/jni/monodroid-glue.cc @@ -801,10 +801,14 @@ MonodroidRuntime::mono_runtime_init ([[maybe_unused]] dynamic_local_string(mono_jit_set_aot_mode), .mono_aot_register_module = mono_aot_register_module, +#if !defined(NET6) .mono_config_parse_memory = mono_config_parse_memory, +#endif // ndef NET6 .mono_register_machine_config = reinterpret_cast(mono_register_machine_config), }; @@ -813,7 +817,14 @@ MonodroidRuntime::mono_runtime_init ([[maybe_unused]] dynamic_local_string(mono_jit_set_aot_mode)); + mono_mkbundle_init ( + mono_register_bundled_assemblies, +#if defined(NET6) + nullptr, +#else + mono_register_config_for_assembly, +#endif // def NET6 + reinterpret_cast(mono_jit_set_aot_mode)); /* * Assembly preload hooks are invoked in _reverse_ registration order. From e60054457bce90f08c4927dfbba2e10705028a90 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 3 Mar 2021 14:49:14 +0100 Subject: [PATCH 4/6] Do not remove the fields --- src/monodroid/jni/mkbundle-api.h | 10 ++-------- src/monodroid/jni/monodroid-glue.cc | 4 ++++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/monodroid/jni/mkbundle-api.h b/src/monodroid/jni/mkbundle-api.h index 9cfdf58ec01..586f5d26273 100644 --- a/src/monodroid/jni/mkbundle-api.h +++ b/src/monodroid/jni/mkbundle-api.h @@ -5,19 +5,13 @@ using namespace xamarin::android; #endif -#if defined(NET6) -#define MDLEGACY(x) -#else -#define MDLEGACY(x) x -#endif // ndef NET6 - typedef struct BundleMonoAPI { void (*mono_register_bundled_assemblies) (const MonoBundledAssembly **assemblies); - MDLEGACY(void (*mono_register_config_for_assembly) (const char* assembly_name, const char* config_xml)); + void (*mono_register_config_for_assembly) (const char* assembly_name, const char* config_xml); void (*mono_jit_set_aot_mode) (int mode); void (*mono_aot_register_module) (void** aot_info); - MDLEGACY(void (*mono_config_parse_memory) (const char *buffer)); + void (*mono_config_parse_memory) (const char *buffer); void (*mono_register_machine_config) (const char *config_xml); } BundleMonoAPI; diff --git a/src/monodroid/jni/monodroid-glue.cc b/src/monodroid/jni/monodroid-glue.cc index 2682139c797..c501f2d68e1 100644 --- a/src/monodroid/jni/monodroid-glue.cc +++ b/src/monodroid/jni/monodroid-glue.cc @@ -803,11 +803,15 @@ MonodroidRuntime::mono_runtime_init ([[maybe_unused]] dynamic_local_string(mono_jit_set_aot_mode), .mono_aot_register_module = mono_aot_register_module, #if !defined(NET6) .mono_config_parse_memory = mono_config_parse_memory, +#else + .mono_config_parse_memory = nullptr, #endif // ndef NET6 .mono_register_machine_config = reinterpret_cast(mono_register_machine_config), }; From 438afbba2b265dce0fbe12f8fdfea8817944390e Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 3 Mar 2021 19:51:09 +0100 Subject: [PATCH 5/6] Add temporary workaround --- .../PreserveLists/System.Private.CoreLib.xml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/Microsoft.Android.Sdk.ILLink/PreserveLists/System.Private.CoreLib.xml diff --git a/src/Microsoft.Android.Sdk.ILLink/PreserveLists/System.Private.CoreLib.xml b/src/Microsoft.Android.Sdk.ILLink/PreserveLists/System.Private.CoreLib.xml new file mode 100644 index 00000000000..62a8dd4e979 --- /dev/null +++ b/src/Microsoft.Android.Sdk.ILLink/PreserveLists/System.Private.CoreLib.xml @@ -0,0 +1,7 @@ + + + + + + + From e0bf2c8efacc0a61b2c0ea68472f401a21b3dcc5 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 3 Mar 2021 21:33:24 -0600 Subject: [PATCH 6/6] Temporarily ignore PerformanceTest in .NET 6 See: https://github.com/dotnet/msbuild/issues/6225 --- tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs b/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs index e60469c940e..3147b3dd140 100644 --- a/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs @@ -65,6 +65,11 @@ void Profile (ProjectBuilder builder, Action action, [CallerMemb double GetDurationFromBinLog (ProjectBuilder builder) { + //TODO: BuildEventArgsReader.Read() returns null in .NET 6 Preview 2 + // See: https://github.com/dotnet/msbuild/issues/6225 + if (Builder.UseDotNet) + Assert.Ignore ("Cannot currently parse .binlog files in .NET 6 Preview 2"); + var duration = TimeSpan.Zero; var binlog = Path.Combine (Root, builder.ProjectDirectory, "msbuild.binlog"); FileAssert.Exists (binlog);