From a736c537b9c0343b46bd78c69fa4fbeb4df28bb6 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Mon, 6 Dec 2021 21:41:36 -0500 Subject: [PATCH 1/4] Bump to xamarin/Java.Interop/main@bc5bcf4f Changes: https://github.com/xamarin/java.interop/compare/7f1a5ab1606e4055eb4705aeafa7a22117998a33...bc5bcf4f0ef07aab898f2643d2a25f66512d98ed * xamarin/java.interop@bc5bcf4f: [Java.Base] Begin binding JDK-11 java.base module (#909) * xamarin/java.interop@af91b9c2: [ci] Use descriptive test run titles. (#926) * xamarin/java.interop@aae8f251: [Java.Interop.Tools.Generator] Add some enumification helper methods (#866) * xamarin/java.interop@111ebca8: [Java.Interop] Treat warnings as errors. (#925) * xamarin/java.interop@7a32bb97: [java-source-utils] Transform XML using XSLT (#924) * xamarin/java.interop@7f55b2dc: [logcat-parse] Use C# verbatim strings for paths (#927) * xamarin/java.interop@2601146b: [java-source-utils] Fix regresion from 77c9c5fa (#923) --- external/Java.Interop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/Java.Interop b/external/Java.Interop index 7f1a5ab1606..bc5bcf4f0ef 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit 7f1a5ab1606e4055eb4705aeafa7a22117998a33 +Subproject commit bc5bcf4f0ef07aab898f2643d2a25f66512d98ed From 32bca42a45446ca6d67feb1f4626cfd8091fe4a9 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Tue, 7 Dec 2021 12:45:30 -0500 Subject: [PATCH 2/4] =?UTF-8?q?Testing=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Context: https://github.com/xamarin/java.interop/pull/929 See if xamarin/java.interop#929 + type forwarders fixes the build failure originally observed: error CS0433: The type 'JavaTypeParametersAttribute' exists in both 'Java.Interop, Version=0.1.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065' and 'Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065' [C:\a\_work\1\a\TestRelease\12-07_04.08.15\temp\LibraryProjectZipWithLint\BindingsProject\BindingsProject.csproj] --- .gitmodules | 4 ++-- .../CheckApiCompatibility.cs | 14 ++++++++++++-- external/Java.Interop | 2 +- .../Java.Interop/JavaTypeParametersAttribute.cs | 8 ++++++++ src/Mono.Android/Mono.Android.targets | 1 + .../acceptable-breakages-vReference-net6.0.txt | 9 +++++++++ 6 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 tests/api-compatibility/acceptable-breakages-vReference-net6.0.txt diff --git a/.gitmodules b/.gitmodules index 83c95bab23b..57514beb07b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,8 +12,8 @@ branch = main [submodule "external/Java.Interop"] path = external/Java.Interop - url = https://github.com/xamarin/java.interop.git - branch = main + url = https://github.com/jonpryor/java.interop.git + branch = jonp-JavaTypeParametersAttribute-only-in-net6 [submodule "external/lz4"] path = external/lz4 url = https://github.com/lz4/lz4.git diff --git a/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CheckApiCompatibility.cs b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CheckApiCompatibility.cs index e2ff9e57a00..263f6ba221f 100644 --- a/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CheckApiCompatibility.cs +++ b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CheckApiCompatibility.cs @@ -61,10 +61,14 @@ public sealed class CheckApiCompatibility : Task [Required] public string ApiCompatibilityPath { get; set; } + // In case API diffs vary between e.g. Classic MonoAndroid & .NET 6+ + public string TargetFramework { get; set; } + // This Build tasks validates that changes are not breaking Api public override bool Execute () { Log.LogMessage (MessageImportance.High, $"CheckApiCompatibility for ApiLevel: {ApiLevel}"); + Log.LogWarning ($"# jonp: TargetFramework={TargetFramework}"); // Check to see if Api has a previous Api defined. if (!api_versions.TryGetValue (ApiLevel, out string previousApiLevel)) { @@ -173,8 +177,14 @@ void ValidateApiCompat (string contractPath, bool validateAgainstReference) // Verify if there is a file with acceptable issues. - var acceptableIssuesFile = new FileInfo (Path.Combine (ApiCompatibilityPath, $"acceptable-breakages-{ (validateAgainstReference ? "vReference" : ApiLevel) }.txt")); - if (acceptableIssuesFile.Exists) { + var acceptableIssuesFiles = new[]{ + Path.Combine (ApiCompatibilityPath, $"acceptable-breakages-{ (validateAgainstReference ? "vReference" : ApiLevel) }-{TargetFramework}.txt"), + Path.Combine (ApiCompatibilityPath, $"acceptable-breakages-{ (validateAgainstReference ? "vReference" : ApiLevel) }.txt"), + }; + var acceptableIssuesFile = acceptableIssuesFiles.Select (p => new FileInfo (p)) + .Where (v => v.Exists) + .FirstOrDefault (); + if (acceptableIssuesFile != null) { genApiProcess.StartInfo.Arguments += $"--baseline \"{acceptableIssuesFile.FullName}\" --validate-baseline "; } diff --git a/external/Java.Interop b/external/Java.Interop index bc5bcf4f0ef..e66b80380f8 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit bc5bcf4f0ef07aab898f2643d2a25f66512d98ed +Subproject commit e66b80380f8a6a1440526735781a6bd5d2ed6ac2 diff --git a/src/Mono.Android/Java.Interop/JavaTypeParametersAttribute.cs b/src/Mono.Android/Java.Interop/JavaTypeParametersAttribute.cs index 33eab1aa283..e50ed483738 100644 --- a/src/Mono.Android/Java.Interop/JavaTypeParametersAttribute.cs +++ b/src/Mono.Android/Java.Interop/JavaTypeParametersAttribute.cs @@ -1,5 +1,12 @@ using System; +#if NET +using System.Runtime.CompilerServices; + +[assembly: TypeForwardedTo (typeof (Java.Interop.JavaTypeParametersAttribute))] + +#else // !NET + namespace Java.Interop { public class JavaTypeParametersAttribute : Attribute @@ -13,3 +20,4 @@ public JavaTypeParametersAttribute (string [] typeParameters) } } +#endif // !NET diff --git a/src/Mono.Android/Mono.Android.targets b/src/Mono.Android/Mono.Android.targets index af716f206c4..d47234bc25f 100644 --- a/src/Mono.Android/Mono.Android.targets +++ b/src/Mono.Android/Mono.Android.targets @@ -263,6 +263,7 @@ LastStableApiLevel="$(AndroidLatestStableFrameworkVersion)" TargetImplementationPath="$(OutputPath)" ApiCompatibilityPath="$(ApiCompatibilityDir)" + TargetFramework="$(TargetFramework)" /> Date: Wed, 8 Dec 2021 14:20:01 -0500 Subject: [PATCH 3/4] Skip java-source-utils unit tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Fixes" failures on Windows RunTests: "C:\a\_work\2\s\external\Java.Interop\build-tools\gradle\gradlew" --stacktrace --no-daemon test … > Task :test FAILED … BUILD FAILED in 7s C:\a\_work\2\s\external\Java.Interop\tools\java-source-utils\java-source-utils.targets(43,5): error MSB3073: The command ""C:\a\_work\2\s\external\Java.Interop\build-tools\gradle\gradlew" --stacktrace --no-daemon test" exited with code 1. [C:\a\_work\2\s\external\Java.Interop\tools\java-source-utils\java-source-utils.csproj] --- build-tools/automation/azure-pipelines.yaml | 2 ++ external/Java.Interop | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index d47cf628aec..837cb554ecd 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -245,6 +245,7 @@ stages: msbuildArguments: >- /restore /t:RunJavaInteropTests + /p:SkipJSUTests=true /p:TestAssembly="bin\Test$(XA.Build.Configuration)\generator-Tests.dll;bin\Test$(XA.Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(XA.Build.Configuration)\logcat-parse-Tests.dll;bin\Test$(XA.Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(XA.Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll" /bl:$(System.DefaultWorkingDirectory)\bin\Test$(XA.Build.Configuration)\msbuild-run-ji-tests.binlog continueOnError: True @@ -360,6 +361,7 @@ stages: msbuildArguments: >- /restore /t:RunJavaInteropTests + /p:SkipJSUTests=true /p:TestAssembly="bin\Test$(XA.Build.Configuration)\generator-Tests.dll;bin\Test$(XA.Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(XA.Build.Configuration)\logcat-parse-Tests.dll;bin\Test$(XA.Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(XA.Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll" /bl:$(System.DefaultWorkingDirectory)\bin\Test$(XA.Build.Configuration)\dotnet-run-ji-tests.binlog continueOnError: True diff --git a/external/Java.Interop b/external/Java.Interop index e66b80380f8..cc7c53c3f56 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit e66b80380f8a6a1440526735781a6bd5d2ed6ac2 +Subproject commit cc7c53c3f56864300556c7ef1d9cc64f21992b33 From 288ccc3289c4d7d20c51fa58a45eb81aeb6551d8 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Wed, 8 Dec 2021 20:39:32 -0500 Subject: [PATCH 4/4] Bump to xamarin/java.interop/main@aac3e9ac --- .gitmodules | 4 ++-- external/Java.Interop | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 57514beb07b..83c95bab23b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,8 +12,8 @@ branch = main [submodule "external/Java.Interop"] path = external/Java.Interop - url = https://github.com/jonpryor/java.interop.git - branch = jonp-JavaTypeParametersAttribute-only-in-net6 + url = https://github.com/xamarin/java.interop.git + branch = main [submodule "external/lz4"] path = external/lz4 url = https://github.com/lz4/lz4.git diff --git a/external/Java.Interop b/external/Java.Interop index cc7c53c3f56..aac3e9acca5 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit cc7c53c3f56864300556c7ef1d9cc64f21992b33 +Subproject commit aac3e9acca503c38c5616ef84d8af28197da254c