Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixes: xamarin/java.interop#335
Fixes: xamarin/java.interop#954
Fixes: xamarin/java.interop#976
Fixes: xamarin/java.interop#981
Fixes: xamarin/java.interop#992

Changes: xamarin/java.interop@7716ae5...c942ab6

  * xamarin/java.interop@c942ab68: [java-source-utils] Build one `$(TargetFramework)` (#1007)
  * xamarin/java.interop@b7caa788: [Byecode] Hide `internal` Kotlin fields marked with `@JvmField` (#1004)
  * xamarin/java.interop@22d5687b: [generator] Add `@managedOverride` values `none` and `reabstract`. (#1000)
  * xamarin/java.interop@7f1d2d7a: [generator] Fix <remove-attr/> metadata (#999)
  * xamarin/java.interop@265ad762: [Java.Interop.Tools.JavaSource] Fix tag parsing errors (#997)
  * xamarin/java.interop@99c68a86: [Java.Interop] JniTypeSignature & CultureInfo, empty strings (#1002)
  * xamarin/java.interop@920ea648: [Java.Interop] optimize JniTypeManager.AssertSimpleReference() (#1001)
  * xamarin/java.interop@4b4fedd3: [generator] Process Javadoc for nested types (#996)

Ever since commit 2197a45, CI builds for the `main` branch have been
incredibly flakey: 918613d through 27647d2 all failed to complete
the **Mac** stage -- which *must* pass in order for most unit tests
to run -- then dbadf13 built, then f149c25 failed.

Nine commits in the past week have failed to adequately build.
(PR builds, meanwhile, were largely fine.)

Most of these failures are from `make all-tests`:

	_ExtractJavadocsFromJavaSourceJars:
	  /Users/runner/android-toolchain/jdk-11/bin/java -jar /Users/runner/work/1/s/xamarin-android/bin/Release/lib/xamarin.android/xbuild/Xamarin/Android/java-source-utils.jar @/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp1cf0947e.tmp 
	JAVASOURCEUTILS : warning : Invalid or corrupt jarfile /Users/runner/work/1/s/xamarin-android/bin/Release/lib/xamarin.android/xbuild/Xamarin/Android/java-source-utils.jar [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.csproj]
	…
	BINDINGSGENERATOR : warning BG8600: Invalid XML file '/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/obj/Release/javadoc-xamarin-test-sources-F6F5170BF7A8BC71.xml': Could not find file "/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/obj/Release/javadoc-xamarin-test-sources-F6F5170BF7A8BC71.xml".  For details, see verbose output. [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.csproj]
	  System.IO.FileNotFoundException: Could not find file "/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/obj/Release/javadoc-xamarin-test-sources-F6F5170BF7A8BC71.xml"
	…
	"/Users/runner/work/1/s/xamarin-android/Xamarin.Android-Tests.sln" (default target) (1:2) ->
	"/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj" (default target) (12:6) ->
	(CoreCompile target) -> 
	  /Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs(78,37): error CS1061: 'DataEventArgs' does not contain a definition for 'FromNode' and no accessible extension method 'FromNode' accepting a first argument of type 'DataEventArgs' could be found (are you missing a using directive or an assembly reference?) [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj]
	  /Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs(79,40): error CS1061: 'DataEventArgs' does not contain a definition for 'FromChannel' and no accessible extension method 'FromChannel' accepting a first argument of type 'DataEventArgs' could be found (are you missing a using directive or an assembly reference?) [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj]
	  /Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs(80,40): error CS1061: 'DataEventArgs' does not contain a definition for 'PayloadType' and no accessible extension method 'PayloadType' accepting a first argument of type 'DataEventArgs' could be found (are you missing a using directive or an assembly reference?) [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj]
	  /Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs(81,28): error CS1061: 'DataEventArgs' does not contain a definition for 'Payload' and no accessible extension method 'Payload' accepting a first argument of type 'DataEventArgs' could be found (are you missing a using directive or an assembly reference?) [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj]
	  /Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs(82,29): error CS1061: 'DataEventArgs' does not contain a definition for 'Payload' and no accessible extension method 'Payload' accepting a first argument of type 'DataEventArgs' could be found (are you missing a using directive or an assembly reference?) [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj]
	  /Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs(84,51): error CS1061: 'DataEventArgs' does not contain a definition for 'Payload' and no accessible extension method 'Payload' accepting a first argument of type 'DataEventArgs' could be found (are you missing a using directive or an assembly reference?) [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj]
	  /Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs(85,10): error CS1061: 'DataEventArgs' does not contain a definition for 'Payload' and no accessible extension method 'Payload' accepting a first argument of type 'DataEventArgs' could be found (are you missing a using directive or an assembly reference?) [/Users/runner/work/1/s/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj]

`java-source-utils.jar` is (apparently) corrupt, so
`javadoc-xamarin-test-sources-F6F5170BF7A8BC71.xml` is never created,
which means no parameter name information is present, which means the
generated `DataEventArgs` type doesn't have the appropriate property
names, as the property names come from parameter names, and since we
don't have parameter names we instead have property names like `P0`,
`P1`, `P2`, etc.

Why, then, is `java-source-utils.jar` corrupt?  The current guess is
that it is being built *concurrently*; from a
`msbuild-20220706T175333-leeroy-all.binlog` build log file from one
of the offending builds, we see:

	17:53:44.526 59:11>Target "_BuildJava: (TargetId:490)" in file "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.targets" from project "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.csproj" (entry point):
	17:53:44.526 59:11>Building target "_BuildJava" completely.
	  Output file "/Users/runner/work/1/s/xamarin-android/bin/Release/lib/packs/Microsoft.Android.Sdk.Darwin/33.0.0/tools/java-source-utils.jar" does not exist.
	…
	17:54:19.564 59:12>Target "DispatchToInnerBuilds: (TargetId:1637)" in file "/Users/runner/work/1/s/xamarin-android/bin/Release/dotnet/sdk/7.0.100-preview.7.22354.2/Microsoft.Common.CrossTargeting.targets" from project "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.csproj" (target "Build" depends on it):
	  Task "MSBuild" (TaskId:1099)
	    Task Parameter:BuildInParallel=True (TaskId:1099)
	    Task Parameter:Targets=Build (TaskId:1099)
	    Task Parameter:
	        Projects=
	            java-source-utils.csproj
	                    AdditionalProperties=TargetFramework=net7.0 (TaskId:1099)
	    Additional Properties for project "java-source-utils.csproj": (TaskId:1099)
	      TargetFramework=net7.0 (TaskId:1099)
	…
	17:54:19.592 59:12>Target "_BuildJava: (TargetId:1640)" in file "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.targets" from project "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.csproj" (entry point):
	  Building target "_BuildJava" completely.
	  Output file "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/../../bin/Release/lib/xamarin.android/xbuild/Xamarin/Android/java-source-utils.jar" does not exist.
	…
	17:54:41.034 59:11>Done building target "_BuildJava" in project "java-source-utils.csproj".: (TargetId:490)
 
What appears to be happening -- and there is lots of conjecture here,
as the build log is enormous and it's difficult to piece everything
together -- is that `java-source-utils.csproj` is built *twice*:
Once via `Xamarin.Android.sln`, and once via `apksigner.csproj`, as
it appears that setting `%(PackageReference.AdditionalProperties)`
triggers a *nested build*; note the `DispatchToInnerBuilds` target
which invokes the `<MSBuild/>` Task with the specified
`AdditionalProperties`.

However, that's not the only potential source of concurrent builds;
`java-source-utils.csproj` used `$(TargetFrameworks)` (plural), which
can *also* result in concurrent builds between the "outer" and "inner"
builds used as part of `$(TargetFrameworks)`.

Fix this problem by bumping to xamarin/java.interop@c942ab68, which
updates `java-source-utils.csproj` to use the singular
`$(TargetFramework)` property -- avoiding "outer" and "inner" build
problems -- and "for good measure" update `apksigner.csproj` to
remove `%(ProjectReference.AdditionalProperties)` on
`java-source-utils.csproj`.  This should ensure that
`java-source-utils.csproj` is only built *once*, which in turn should
ensure that `java-source-utils.jar` isn't corrupted, and our CI
builds become more reliable
  • Loading branch information
jonpryor committed Jul 8, 2022
1 parent 1cc29ae commit 59352f8
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion external/Java.Interop
Submodule Java.Interop updated 75 files
+1 −43 Directory.Build.props
+52 −0 TargetFrameworkDependentValues.props
+6 −0 build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj
+3 −1 build-tools/jnienv-gen/jnienv-gen.csproj
+6 −1 src/Java.Base/Java.Base.csproj
+1 −0 src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj
+2 −1 src/Java.Interop.Export/Java.Interop.Export.csproj
+1 −0 src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj
+2 −0 src/Java.Interop.Localization/Java.Interop.Localization.csproj
+3 −1 src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj
+3 −1 src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj
+2 −0 src/Java.Interop.Tools.Generator/Java.Interop.Tools.Generator.csproj
+1 −1 src/Java.Interop.Tools.Generator/Metadata/FixupXmlDocument.cs
+2 −0 src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj
+1 −0 src/Java.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource.csproj
+39 −8 ...va.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource/SourceJavadocToXmldocGrammar.BlockTagsBnfTerms.cs
+13 −2 ...a.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource/SourceJavadocToXmldocGrammar.InlineTagsBnfTerms.cs
+2 −0 src/Java.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource/SourceJavadocToXmldocParser.cs
+2 −0 src/Java.Interop.Tools.JavaTypeSystem/Java.Interop.Tools.JavaTypeSystem.csproj
+1 −0 src/Java.Interop/Java.Interop-MonoAndroid.csproj
+9 −6 src/Java.Interop/Java.Interop.csproj
+1 −1 src/Java.Interop/Java.Interop.targets
+12 −6 src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs
+7 −3 src/Java.Interop/Java.Interop/JniTypeSignature.cs
+2 −0 src/Java.Runtime.Environment/Java.Runtime.Environment.csproj
+2 −0 src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj
+2 −0 src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj
+2 −0 src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj
+1 −1 src/Xamarin.Android.Tools.Bytecode/ClassFile.cs
+11 −4 src/Xamarin.Android.Tools.Bytecode/Fields.cs
+23 −0 src/Xamarin.Android.Tools.Bytecode/Kotlin/KotlinFixups.cs
+2 −0 src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj
+2 −0 src/Xamarin.Android.Tools.Bytecode/XmlClassDeclarationBuilder.cs
+2 −0 src/Xamarin.SourceWriter/Xamarin.SourceWriter.csproj
+7 −2 src/java-interop/java-interop.csproj
+3 −1 tests/Java.Base-Tests/Java.Base-Tests.csproj
+2 −0 tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj
+2 −0 tests/Java.Interop-Tests/Java.Interop-Tests.csproj
+15 −0 tests/Java.Interop-Tests/Java.Interop/JniTypeSignatureTest.cs
+2 −0 tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj
+2 −0 tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj
+2 −0 tests/Java.Interop.Tools.Generator-Tests/Java.Interop.Tools.Generator-Tests.csproj
+2 −0 tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj
+1 −0 tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj
+39 −5 tests/Java.Interop.Tools.JavaSource-Tests/SourceJavadocToXmldocGrammar.BlockTagsBnfTermsTests.cs
+10 −0 tests/Java.Interop.Tools.JavaSource-Tests/SourceJavadocToXmldocGrammar.InlineTagsBnfTermsTests.cs
+12 −0 tests/Java.Interop.Tools.JavaSource-Tests/SourceJavadocToXmldocParserTests.cs
+2 −0 tests/Java.Interop.Tools.JavaTypeSystem-Tests/Java.Interop.Tools.JavaTypeSystem-Tests.csproj
+2 −0 tests/NativeTiming/NativeTiming.csproj
+2 −0 tests/TestJVM/TestJVM.csproj
+2 −0 tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj
+16 −0 tests/Xamarin.Android.Tools.Bytecode-Tests/KotlinFixupsTests.cs
+2 −0 tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj
+ tests/Xamarin.Android.Tools.Bytecode-Tests/kotlin/InternalField.class
+4 −0 tests/Xamarin.Android.Tools.Bytecode-Tests/kotlin/InternalField.kt
+2 −0 tests/Xamarin.SourceWriter-Tests/Xamarin.SourceWriter-Tests.csproj
+100 −0 tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs
+13 −1 tests/generator-Tests/Unit-Tests/FixupXmlDocumentTests.cs
+2 −0 tests/generator-Tests/generator-Tests.csproj
+2 −0 tests/invocation-overhead/invocation-overhead.csproj
+2 −0 tests/logcat-parse-Tests/logcat-parse-Tests.csproj
+2 −0 tools/class-parse/class-parse.csproj
+3 −2 tools/generator/Java.Interop.Tools.Generator.ObjectModel/JavadocInfo.cs
+3 −0 tools/generator/Java.Interop.Tools.Generator.Transformation/JavadocFixups.cs
+4 −0 tools/generator/SourceWriters/BoundInterfaceMethodDeclaration.cs
+4 −0 tools/generator/SourceWriters/BoundInterfacePropertyDeclaration.cs
+3 −0 tools/generator/SourceWriters/BoundMethod.cs
+3 −0 tools/generator/SourceWriters/BoundProperty.cs
+2 −0 tools/generator/generator.csproj
+6 −1 tools/java-source-utils/java-source-utils.csproj
+1 −3 tools/java-source-utils/java-source-utils.targets
+2 −0 tools/jcw-gen/jcw-gen.csproj
+1 −0 tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj
+2 −0 tools/logcat-parse/logcat-parse.csproj
+1 −0 tools/param-name-importer/param-name-importer.csproj
2 changes: 1 addition & 1 deletion src/apksigner/apksigner.csproj
Expand Up @@ -19,7 +19,7 @@
<ItemGroup>
<!-- There isn't an actual dependency here, but we can only build one 'gradlew' project
at a time, and adding <ProjectReference> between them ensures they run sequentially. -->
<ProjectReference Include="..\..\external\Java.Interop\tools\java-source-utils\java-source-utils.csproj" ReferenceOutputAssembly="False" SkipGetTargetFrameworkProperties="True" AdditionalProperties="TargetFramework=$(DotNetTargetFramework)" />
<ProjectReference Include="..\..\external\Java.Interop\tools\java-source-utils\java-source-utils.csproj" ReferenceOutputAssembly="False" />
</ItemGroup>

<Import Project="apksigner.targets" />
Expand Down

0 comments on commit 59352f8

Please sign in to comment.