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

[mono-2018-10] [build] Download correct mono archive URL #2366

Merged
merged 1 commit into from
Nov 1, 2018

Conversation

luhenry
Copy link
Contributor

@luhenry luhenry commented Oct 31, 2018

Context: https://github.com/mono/mono/blob/8e0cbf1044fb86f40c41f4317ef9154f82a94bb4/scripts/ci/pipeline/sdks-archive.groovy#L84
Context: https://jenkins.mono-project.com/view/Per-commit%20packages/job/archive-mono/

The mono archives have a different filename format than that used in
commit f970cd5. As per sdks-archive.groovy, the filename to
download should be:

${product}-${configuration}-${platform}-${commitHash}.zip

Update $(_MonoArchiveName) accordingly, and fix the output paths so
that the mono archive can actually be used. (As noted in f970cd5,
actual support for building with the mono archive hadn't been
tested, as one didn't exist for the mono xamarin-android uses.)

Context: https://github.com/mono/mono/blob/8e0cbf1044fb86f40c41f4317ef9154f82a94bb4/scripts/ci/pipeline/sdks-archive.groovy#L84
Context: https://jenkins.mono-project.com/view/Per-commit%20packages/job/archive-mono/

The mono archives have a different filename format than that used in
commit f970cd5.  As per [`sdks-archive.groovy`][0], the filename to
download *should* be:

	${product}-${configuration}-${platform}-${commitHash}.zip

Update `$(_MonoArchiveName)` accordingly, and fix the output paths so
that the mono archive can actually be used.  (As noted in f970cd5,
*actual* support for building with the mono archive hadn't been
tested, as one didn't exist for the mono xamarin-android uses.)

[0]: https://github.com/mono/mono/blob/8e0cbf1044fb86f40c41f4317ef9154f82a94bb4/scripts/ci/pipeline/sdks-archive.groovy
@luhenry luhenry added the full-mono-integration-build For PRs; run a full build (~6-10h for mono bumps), not the faster PR subset (~2h for mono bumps) label Oct 31, 2018
@luhenry luhenry changed the title [build] Download correct mono archive URL [mono-2018-10] [build] Download correct mono archive URL Oct 31, 2018
@luhenry
Copy link
Contributor Author

luhenry commented Oct 31, 2018

#2253

@luhenry luhenry merged commit c2f6f46 into dotnet:mono-2018-10 Nov 1, 2018
@luhenry luhenry deleted the mono-2018-10 branch November 1, 2018 15:10
luhenry added a commit that referenced this pull request Nov 5, 2018
grendello pushed a commit that referenced this pull request Mar 8, 2019
* Bump to mono:2018-08

* Bump to mono:2018-10

* apply 2018-06 changes

* bump mono

* revert some submodules

* Update dependencies.projitems

* bump mono

* Update dependencies.projitems

* fix xunit path

* bump mono

* undo xamarin-android-api-compatibility

* Bump to mono/2018-08/04a6e829

Commit list for mono/mono:

* mono/mono@04a6e8294e3 [2018-08] Bump xunit (#11085)
* mono/mono@f001e691cac [2018-08] Bump msbuild (#11087)
* mono/mono@7001d39bb2e Always use InvariantCulture calendars in X509Certificate on Mobile

Diff: mono/mono@e257971...04a6e82

* Bump to mono/2018-08/7805ccc4

Commit list for mono/mono:

* mono/mono@7805ccc43df [sdks] Fix llvm-llvm32 build (#11117)

Diff: mono/mono@04a6e82...7805ccc

* Bump to mono/2018-08/657f915e

Commit list for mono/mono:

* mono/mono@657f915eb62 [2018-08] [sdks] Create archive targets for pre-building on CI (#10932)
* mono/mono@bd1f64acc3c [sdks] Add cmake toolchain file for LLVM MXE builds (#11055)

Diff: mono/mono@7805ccc...657f915

* Bump to mono/2018-08/2712292c

Commit list for mono/mono:

* mono/mono@2712292c567 [sdks] Add Groovy script to build the SDKs archives for the products (#11192)
* mono/mono@839f49d3b2a [sdks] futimens and futimes symbols are missing on anything earlier than 10.13 (#11176)

Diff: mono/mono@657f915...2712292

* Bump to mono/2018-10/8890b0c6

Commit list for mono/mono:

* mono/mono@8890b0c6c4d Take fast path only for delegate types not Delegate/MulticastDelegate. (#11195)
* mono/mono@dcaef0b2ca0 Bump to llvm/release_60/117a508c (#11120)
* mono/mono@9ff6d8f918d [interp] Implement interpreter entry trampolines on amd64 (#10978) (#11163)
* mono/mono@e708752f140 [sdks] Add Groovy script to build the SDKs archives for the products (#11191)
* mono/mono@2a052ba0c94 [sdks] futimens and futimes symbols are missing on anything earlier than 10.13 (#11177)
* mono/mono@76be3b3bc8e Initial Mono.Native Support. (#10941)
* mono/mono@7e7efe488f2 [2018-10] [sdks] Build tests for BCL targets (#11140)
* mono/mono@72a81cc6d26 Use passwordless import in the `X509Certificate(byte[])` constructor.
* mono/mono@f00fa49bb9a [sdks] Add cmake toolchain file for LLVM MXE builds (#11054)
* mono/mono@fc9fc38926e [2018-08] Bump msbuild (#11097)
* mono/mono@d33c2133545 Always use InvariantCulture calendars in X509Certificate on Mobile
* mono/mono@8c7aca33164 [2018-10] Bump xunit (#11084)
* mono/mono@923afca8896 [2018-10] Bump cecil (#11022)
* mono/mono@3dd1602a1a2 Bump msbuild to track xplat-master
* mono/mono@edc6fc4e826 [2018-10] [interp] fixes for native type (#10999)
* mono/mono@98b85ceaec4 Bump corert
* mono/mono@7d4ca00db49 Bump corert
* mono/mono@810ced6d0ba Extract case for verifying several object array parameters to separate test method.
* mono/mono@98c33e716d4 Add unit tests to verify custom attribute ctor with object array as parameter
* mono/mono@a5016f78986 [ci] Always pass sha1 from Mac to Windows packaging build
* mono/mono@6deb114ce54 [corlib] Simplify confusing "SSPI" error message and align with corefx (#10976)
* mono/mono@ec0ae343f0d [sdks/ios] Build libMonoPosixHelper for device architectures, so that zlib-helper.o is created. (#10959)
* mono/mono@921642ea72d Put xunit tests in mcs/class/lib/PROFILE/tests too
* mono/mono@5e6ea6c806e Merge pull request #10909 from monojenkins/backport-pr-10899-to-2018-10
* mono/mono@aa3762656b1 [sdks] Ensure LLVM is cloned before trying to download (#10933)
* mono/mono@7f3b574ca75 Bump linker
* mono/mono@31b7ce52ad6 [runtime] Fix undefined pthread_main_np (#10930)
* mono/mono@be44769e177 [Reflection] Fix issue with finding types in module using an asterisk as filter criteria
* mono/mono@1bcf14ab41e [w32handle] Add coop state transitions in mono_w32handle_lock_handles (#10911)
* mono/mono@f362bfe257f [runtime] Disable stack guard for main thread on osx

Diff: mono/mono@a1c34de...8890b0c

* bump mono

* Bump to mono/2018-08/010e741b

Commit list for mono/mono:

* mono/mono@010e741bace [2018-08] Crash Reporter V2  (#11161)
* mono/mono@ec1a7362660 [corlib] Ensure that Console Streams are thread-safe

Diff: mono/mono@a9b1acb...010e741

* Bump to mono/2018-08/bc9d709e

Commit list for mono/mono:

* mono/mono@bc9d709e704 [sdks] Package what's missing for XA (#11256)
* mono/mono@31a6b877f6c [pipeline] Ensure only 1 build per-product is executed per-node (#11249)
* mono/mono@4b343e98f37 [interp] Implement interpreter entry trampolines on amd64 (#10978) (#11164)
* mono/mono@2bc1ed09a32 [aot] Ensure shared got entries are initialized before loading methods (#11226)

Diff: mono/mono@010e741...bc9d709

* Bump to system mono/2018-08/bc9d709e

* Bump to mono/2018-10/f743d425

Commit list for mono/mono:

* mono/mono@f743d4250cd [2018-10] Use Mono.Android as a reference for netstandard facade (#10974)
* mono/mono@dc9771601a4 [sdks] Package what's missing for XA (#11254)
* mono/mono@3986341b65d [tests] Embed Mono.Data.Sqlite test resource (#11245)
* mono/mono@0a919874d10 [pipeline] Ensure only 1 build per-product is executed per-node (#11248)
* mono/mono@4577597ce1a [aot] Ensure shared got entries are initialized before loading methods (#11224)
* mono/mono@59b1d815258 [2018-10] Crash Reporter V2 (#11160)
* mono/mono@980aef41b9a [ci] Move OSX .pkg build to a separate bot pool
* mono/mono@429bb0bae03 [corlib] Ensure that Console Streams are thread-safe (#11230)
* mono/mono@c0212dac5f2 Remove overflow exception catch from #MOBILE
* mono/mono@4f700983dfe [Reflection] Handle overflow exception on constructor invocation
* mono/mono@790f4122755 [pkg] Add preinstall which removes existing Mono of the same version (#11207)
* mono/mono@3b5cacc15cd [2018-10] [System]: Reenable native Apple Certificate support on WatchOS. (#11198)
* mono/mono@b261706d884 [sdks] Fix Archive Jenkins job (#11218)

Diff: mono/mono@8890b0c...f743d42

* Fix build

* Remove _Autogen target, it's part of _Build already

* bump mono

* Removes wrong main entry point name for mono-api-info

* Bump to mono/2018-08/0522076f

Commit list for mono/mono:

* mono/mono@0522076f0ba [interp] throw overflow exception when {float,double}.NaN is converted to an int type (#11411)
* mono/mono@6034c589df8 [interp] enable more BCL tests (#11399)
* mono/mono@aebff6ce012 [SDKS, LLVM] Disable detection and use of libxml2 (#11340)
* mono/mono@818a27a386e [2018-08] [aot] add unbox_arbitrary_trampoline for fullaot/interp mixed mode (#11363)
* mono/mono@b5e8de91821 [2018-08][corlib] Adds back accidentaly removed legacy COM API to Binder (#11368)
* mono/mono@205b8129d59 [tests] lower recursion depth of PerformNoPinAction (#11323)
* mono/mono@c2c764dfc6a [2018-08] Replace mono_object_get_class with mono_object_class to avoid gc transitions. (#11338)
* mono/mono@b7784994542 [wasm] Add missing include (#11337)

Diff: mono/mono@b7ad1c6...0522076

* Bump mono to tip of 2018-10

* [build] Download correct mono archive URL (#2366)

Context: https://github.com/mono/mono/blob/8e0cbf1044fb86f40c41f4317ef9154f82a94bb4/scripts/ci/pipeline/sdks-archive.groovy#L84
Context: https://jenkins.mono-project.com/view/Per-commit%20packages/job/archive-mono/

The mono archives have a different filename format than that used in
commit f970cd5.  As per [`sdks-archive.groovy`][0], the filename to
download *should* be:

	${product}-${configuration}-${platform}-${commitHash}.zip

Update `$(_MonoArchiveName)` accordingly, and fix the output paths so
that the mono archive can actually be used.  (As noted in f970cd5,
*actual* support for building with the mono archive hadn't been
tested, as one didn't exist for the mono xamarin-android uses.)

[0]: https://github.com/mono/mono/blob/8e0cbf1044fb86f40c41f4317ef9154f82a94bb4/scripts/ci/pipeline/sdks-archive.groovy

* Bump to mono/2018-10/d02b6c05

Commit list for mono/mono:

* mono/mono@d02b6c0583f [crash] Fix async setting for crash reporter

Diff: mono/mono@3d170b9...d02b6c0

* Bump to mono/2018-10/24e7d7d5

Commit list for mono/mono:

* mono/mono@24e7d7d5e8d [csproj] Update project files
* mono/mono@a65b7d8b44d [csproj] Update project files
* mono/mono@6bbc707eb3f "Mono.Native - Halloween Edition"
* mono/mono@114f88aaf12 [corlib] Remove incorrectly converted silverlight check
* mono/mono@dc57395fd6b [2018-10] Add .NET 4.7.2 reference assemblies (#11391) (#11503)
* mono/mono@86ba8ff9640 [System]`lock` protect `SystemCertificateProvider.EnsureInitialized()`.

Diff: mono/mono@d02b6c0...24e7d7d

* Bump to mono/2018-10/3c2b25ce

Commit list for mono/mono:

* mono/mono@3c2b25ce23b [System]`lock` protect `SystemCertificateProvider.EnsureInitialized()`.
* mono/mono@5fedefe43eb [tests] reduce recursion depth
* mono/mono@53a21a0e844 [crash] Fix async setting for crash reporter
* mono/mono@04bdf8852b3 [2018-08] [crash] Fix merp invocation (#11468)
* mono/mono@8df60a29bfe [delegates] do not use CEE_CALLVIRT for non-virtual methods (#11451)
* mono/mono@d90fbe3a0ab [llvm] Fix passing vtypes received by value as arguments, they need to be copied. Fixes mono/mono#11378. (#11429)
* mono/mono@ea740d2bc8d Disable hybrid suspend default for 2018-08

Diff: mono/mono@0522076...3c2b25c

* Revert "[build] Download correct mono archive URL (#2366)"

This reverts commit c2f6f46.

* Bump to mono/2018-10/e45b97c6

Commit list for mono/mono:

* mono/mono@e45b97c68e3 [ci] Switch to new syntax of Azure Storage plugin

Diff: mono/mono@24e7d7d...e45b97c

* Bump to mono/2018-10/5e1b1153

Commit list for mono/mono:

* mono/mono@5e1b11535d1 [llvm] bump for armhf callingconv fix (#11608)
* mono/mono@f28a0c04db8 [sdks] Exit with non-zero exit code if the simulator test fails on ios. (#11547)
* mono/mono@ae5ff1b4bcd [android sdk] Package resource assemblies into app bundle (#11583)
* mono/mono@0e6a3e0c856 [ios sdk] Package resource assemblies into app bundle (#11575)
* mono/mono@2d04a8f274e Bump API snapshot submodule
* mono/mono@2f9dcaf1fc4 [2018-10] Bump corefx
* mono/mono@39ee7a08f92 [ios] remove DISABLE_POLICY_EVIDENCE (#11582)
* mono/mono@36cac594854 Bump roslyn-binaries submodule to pull in System.Xml.dll file name fix in vbc.rsp (#11573)
* mono/mono@f5e27e160c0 Added missing cts.Cancel() in HttpClient Dispose() method (#11539)
* mono/mono@6d2ea1b0044 [interp] transform delegate invoke in method body too (#11550)
* mono/mono@4023a6233e2 [2018-10] Fix ref return for structs in runtime invoke wrapper. (#11555)
* mono/mono@78662419dfd [ci] Fix Windows .msi build
* mono/mono@35d1ff89a0e Fix the issue when ParameterInfo.RawDefaultValue returns Missing.Value for non-null default values of DateTime?` and decimal? parameters (#11537)
* mono/mono@267470152af [bcl] avoid false pinning in GCTest (#11540)
* mono/mono@aab7377d4fd [interp] accept typed-by-ref as return type from a JIT call (#11535)
* mono/mono@bdf42f000e6 Make the test compile on mobile. (#11544)

Diff: mono/mono@e45b97c...5e1b115

* Bump to mono/2018-08/32d4b6f2

Commit list for mono/mono:

* mono/mono@32d4b6f22a1 [llvm] bump for armhf callingconv fix (#11609)
* mono/mono@925e0c0d0cf [ios] remove DISABLE_POLICY_EVIDENCE (#11581)
* mono/mono@65cd16c227e Bump roslyn-binaries submodule to pull in System.Xml.dll file name fix in vbc.rsp (#11573)
* mono/mono@b5891e25acf [ci] Fix Windows .msi build
* mono/mono@d4d1d1ec246 [bcl] avoid false pinning in GCTest (#11536)
* mono/mono@3837f0c276b [interp] accept typed-by-ref as return type from a JIT call (#11533)
* mono/mono@2e5c0d8f1ee [interp] transform delegate invoke in method body too (#11551)
* mono/mono@60c21beaeb8 [ci] Switch to new syntax of Azure Storage plugin

Diff: mono/mono@3c2b25c...32d4b6f

* [build] Download correct mono archive URL (#2389)

Context: https://github.com/mono/mono/blob/8e0cbf1044fb86f40c41f4317ef9154f82a94bb4/scripts/ci/pipeline/sdks-archive.groovy#L84
Context: https://jenkins.mono-project.com/view/Per-commit%20packages/job/archive-mono/

The mono archives have a different filename format than that used in
commit f970cd5.  As per [`sdks-archive.groovy`][0], the filename to
download *should* be:

	${product}-${configuration}-${platform}-${commitHash}.zip

Update `$(_MonoArchiveName)` accordingly, and fix the output paths so
that the mono archive can actually be used.  (As noted in f970cd5,
*actual* support for building with the mono archive hadn't been
tested, as one didn't exist for the mono xamarin-android uses.)

[0]: https://github.com/mono/mono/blob/8e0cbf1044fb86f40c41f4317ef9154f82a94bb4/scripts/ci/pipeline/sdks-archive.groovy

* Remove debug spew

* Bump to mono/2018-10/64c566d8

Commit list for mono/mono:

* mono/mono@64c566d8da2 [sdks] Compile support/{zlib-helper,nl}.c so XI/XM/XA does not have to cherry-pick them (#11676)
* mono/mono@d51ed697a0e [ci] Clean acceptance-tests/external before build
* mono/mono@4d294287415 [2018-10][System.Data]: GSS is not available on tvOS and watchOS. (#11677)
* mono/mono@f285f82c8d2 Bumping reference assemblies generated with latest GenAPI (#11633)

Diff: mono/mono@5e1b115...64c566d

* [monodroid] Remove dependency on `$(MonoSourceFullPath)/support/{zlib-helper,nl}.c` (#2431)

* Revert unintended changes in previous merge

```
git diff 42656af $THIS_COMMIT

diff --git a/.gitmodules b/.gitmodules
index b305840f..7f835877 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -25,7 +25,7 @@
 [submodule "external/mono"]
     path = external/mono
     url = https://github.com/mono/mono.git
-    branch = 2018-08
+    branch = 2018-10
 [submodule "external/mxe"]
     path = external/mxe
     url = https://github.com/xamarin/mxe.git

diff --git a/Configuration.props b/Configuration.props
index a1785e4d..803438ab 100644
--- a/Configuration.props
+++ b/Configuration.props
@@ -73,8 +73,8 @@
     <JavaInteropSourceDirectory Condition=" '$(JavaInteropSourceDirectory)' == '' ">$(MSBuildThisFileDirectory)external\Java.Interop</JavaInteropSourceDirectory>
     <LlvmSourceDirectory Condition=" '$(LlvmSourceDirectory)' == '' ">$(MSBuildThisFileDirectory)external\llvm</LlvmSourceDirectory>
     <MonoSourceDirectory>$(MSBuildThisFileDirectory)external\mono</MonoSourceDirectory>
-    <MonoRequiredMinimumVersion Condition=" '$(MonoRequiredMinimumVersion)' == '' ">5.18.0</MonoRequiredMinimumVersion>
-    <MonoRequiredMaximumVersion Condition=" '$(MonoRequiredMaximumVersion)' == '' ">5.19.0</MonoRequiredMaximumVersion>
+    <MonoRequiredMinimumVersion Condition=" '$(MonoRequiredMinimumVersion)' == '' ">5.20.0</MonoRequiredMinimumVersion>
+    <MonoRequiredMaximumVersion Condition=" '$(MonoRequiredMaximumVersion)' == '' ">5.21.0</MonoRequiredMaximumVersion>
     <IgnoreMaxMonoVersion Condition=" '$(IgnoreMaxMonoVersion)' == '' ">True</IgnoreMaxMonoVersion>
     <MonoRequiredDarwinMinimumVersion>$(MonoRequiredMinimumVersion).0</MonoRequiredDarwinMinimumVersion>
     <LinkerSourceDirectory>$(MSBuildThisFileDirectory)external\mono\external\linker</LinkerSourceDirectory>

diff --git a/build-tools/dependencies/dependencies.projitems b/build-tools/dependencies/dependencies.projitems
index c9a26b9e..37612ea3 100644
--- a/build-tools/dependencies/dependencies.projitems
+++ b/build-tools/dependencies/dependencies.projitems
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <_DarwinMonoFramework>MonoFramework-MDK-5.18.0.162.macos10.xamarin.universal.pkg</_DarwinMonoFramework>
+    <_DarwinMonoFramework>MonoFramework-MDK-5.20.0.81.macos10.xamarin.universal.pkg</_DarwinMonoFramework>
     <_AptGetInstall>apt-get -f -u install</_AptGetInstall>
   </PropertyGroup>
   <ItemGroup>
@@ -59,7 +59,7 @@
       <MaximumVersion Condition=" '$(IgnoreMaxMonoVersion)' == '' Or '$(IgnoreMaxMonoVersion)' == 'False' " >$(MonoRequiredMaximumVersion)</MaximumVersion>
       <DarwinMinimumVersion>$(MonoRequiredDarwinMinimumVersion)</DarwinMinimumVersion>
       <CurrentVersionCommand>$(MSBuildThisFileDirectory)..\scripts\mono-version</CurrentVersionCommand>
-      <DarwinMinimumUrl>https://xamjenkinsartifact.azureedge.net/build-package-osx-mono/2018-08/128/bc9d709e704fb157eaf4935cb67d272f154cff75/$(_DarwinMonoFramework)</DarwinMinimumUrl>
+      <DarwinMinimumUrl>https://xamjenkinsartifact.azureedge.net/build-package-osx-mono/2018-10/68/3d170b9afe0cd3b219eadeceb06ad49ac670f48d/$(_DarwinMonoFramework)</DarwinMinimumUrl>
       <DarwinInstall>installer -pkg "$(AndroidToolchainCacheDirectory)\$(_DarwinMonoFramework)" -target /</DarwinInstall>
     </RequiredProgram>
   </ItemGroup>

diff --git a/external/mono b/external/mono
index 51c4f454..64c566d8 160000
--- a/external/mono
+++ b/external/mono
@@ -1 +1 @@
-Subproject commit 51c4f454022c7a94115a82998556e92d4b8724a2
+Subproject commit 64c566d8da21a29215c8abfc90fafe9e825404bf

```

* [mono] Change source path for System.IO.Compression test assets

* [mono] Bump to include libmono-native.so

This is needed because Android on Mono 2018-10 uses System.Native CoreFX code for the first time, via System.IO.FileSystemWatcher

* Bump to mono/mono@e632442

* Fix build

This commit (9f08ff5) was somehow lost or reverted(!) So it had to be re-applied.

* Bump to mono/mono@15fb740

* Run XUnit tests for System.dll

These tests include operational tests for the CoreFX FileSystemWatcher and so are also a canary for System.Native issues (at 2018-10, mscorlib.dll still does not use System.Native/libmono-native code)

* Revert "Revert unintended changes in previous merge"

This reverts commit 5d65346.

* Revert "Revert "Revert unintended changes in previous merge""

(So, re-apply "Revert unintended changes in previous merge")

This reverts commit e1a31da.

This commit broke the build (NUnit test suites crash).

* [mono-runtimes] Bundle libmono-native

* Include 'libmono-native.so' in .apk

* Bump to mono/mono@4a7563ff852

* Test bump

* Test bump

* Test bump

* Remove some of Mono.Android's System.Drawing types which for monodroid is now available via Mono's System.Drawing.Common assembly + CoreFX implementation

The types removed from this codebase's side were the ones now conflicting with the System.Drawing.Common assembly as of mono/mono@003bf5d

* Add assembly ref to replace removed types

* More of the 'replacing types'

* Another bump for:

[monodroid] Forward the Mono.Android.dll System.Drawing types from System.Drawing.dll too, as that's where Xamarin.Forms.Core.dll (as used by Xamarin Android) expects them to be.

* Another bump for:

[netstandard] Update for Mono.Android change

* Bump 'external/xamarin-android-api-compatibility' for xamarin/xamarin-android-api-compatibility@c704b2a

* Update Mono Mac SDK package version used

* Complete 'Update Mono Mac SDK package version used'

* [Mono.Android] Add type forwarders for the removed System.Drawing types

* [tests] repro breaking change with System.Drawing.Common

This test was originally failing to build with:

    The "LinkAssemblies" task failed unexpectedly.

    Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Drawing.Color' (defined in assembly 'Acr.UserDialogs.Interface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null') with scope 'Splat, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null'. When the scope is different from the defining assembly, it usually means that the type is forwarded. ---> Mono.Cecil.ResolutionException: Failed to resolve System.Drawing.Color
    at Mono.Linker.Steps.MarkStep.HandleUnresolvedType (Mono.Cecil.TypeReference reference) [0x0001a] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.MarkType (Mono.Cecil.TypeReference reference) [0x00055] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at MonoDroid.Tuner.MonoDroidMarkStep.MarkType (Mono.Cecil.TypeReference reference) [0x00001] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.MarkGenericArguments (Mono.Cecil.IGenericInstance instance) [0x00018] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.GetOriginalType (Mono.Cecil.TypeReference type) [0x00013] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.MarkType (Mono.Cecil.TypeReference reference) [0x00010] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at MonoDroid.Tuner.MonoDroidMarkStep.MarkType (Mono.Cecil.TypeReference reference) [0x00001] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.MarkField (Mono.Cecil.FieldReference reference) [0x00058] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.InitializeFields (Mono.Cecil.TypeDefinition type) [0x00028] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.InitializeType (Mono.Cecil.TypeDefinition type) [0x0006f] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.InitializeAssembly (Mono.Cecil.AssemblyDefinition assembly) [0x00034] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.Initialize () [0x00016] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Steps.MarkStep.Process (Mono.Linker.LinkContext context) [0x00008] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at MonoDroid.Tuner.MonoDroidMarkStep.Process (Mono.Linker.LinkContext context) [0x0000d] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Pipeline.ProcessStep (Mono.Linker.LinkContext context, Mono.Linker.Steps.IStep step) [0x0000f] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Mono.Linker.Pipeline.Process (Mono.Linker.LinkContext context) [0x00011] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at MonoDroid.Tuner.Linker.Run (Mono.Linker.Pipeline pipeline, Mono.Linker.LinkContext context) [0x00001] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at MonoDroid.Tuner.Linker.Process (MonoDroid.Tuner.LinkerOptions options, Mono.Linker.ILogger logger, Mono.Linker.LinkContext& context) [0x0007c] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Xamarin.Android.Tasks.LinkAssemblies.Execute (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver res) [0x0030c] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    --- End of inner exception stack trace ---
    at Java.Interop.Tools.Diagnostics.Diagnostic.Error (System.Int32 code, System.Exception innerException, System.String message, System.Object[] args) [0x0000a] in <8df3e814509d4dc7bbff2ee4d062e14e>:0
    at Xamarin.Android.Tasks.LinkAssemblies.Execute (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver res) [0x004cf] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Xamarin.Android.Tasks.LinkAssemblies.Execute () [0x0001e] in <aa2861304e8349a69bf6f3dda2b1b5bd>:0
    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () [0x00029] in <1c1ea286ad81486b85647b7901984451>:0
    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) [0x00212] in <1c1ea286ad81486b85647b7901984451>:0

We should go ahead and add the test to catch this breakage sooner.

* [Mono.Android] add missing type foward to System.Drawing.Color

* Bump mono

Commit list for mono/mono:

* mono/mono@78e155f252d [2018-10] Fix mono conc hashtable lookup endless loop (#13293)
* mono/mono@af19147d0bb [Android] Fix runtime loading of DSOs for 64-bit processes
* mono/mono@e752907c5b8 [2018-10] [interp] mixed mode fixes for delegates (#13260)
* mono/mono@68fb0e0c9ca [mini] Inline Selector.GetHandle for tvOS and watchOS assemblies as well. (#13255)
* mono/mono@1f81468bd5d Update csproj file for System.Drawing.Common facade
* mono/mono@74cfbd2bb47 [sdks] Use throttle() instead of lock()
* mono/mono@f08a9ab1d28 Revert "[sdks] Make sure to run only one build per type per node"
* mono/mono@3151b5cea83 [Facades] Add System.Drawing.Common back to monotouch etc profiles
* mono/mono@91e8acb9245 [2018-10] [interp] compute size of generic valuetype correctly (#13227)
* mono/mono@5849bb2f221 [aot] Resolve profile against compiled assembly (#13182)
* mono/mono@f16d2d5d44b [2018-10] [aot] abort lookup early when a method isn\u0027t available in AOT image (#13179)
* mono/mono@da38bdc0e42 [ci] Use dl.internalx.com when building on private Jenkins
* mono/mono@ea3e93b191f [2018-10] AOT fixes for interp mixed mode (#13172)
* mono/mono@b4b86276a4f [System] Bump SocketTest.TestSelect1 socket timeout to 1ms (#13152)

Diff: mono/mono@5bd3f0b...78e155f

* Bump mono

* Bump timeout for a step that has timed out

* Fix copy-paste mistake in Xamarin.Android.Common.targets

* Bump mono
jonpryor pushed a commit that referenced this pull request Mar 27, 2019
Build `src/mono-runtimes` using the [Mono Archive][0] (f970cd5), and
update `@(MonoProfileAssembly)` and `@(MonoTestAssembly)`.

A "funny" thing happened around mono archive support: it didn't work.
Specifically, mono archive support was never added to the
[mono/2018-08 branch][1].  It *was* added to the
[mono/2018-10 branch][2], but mono/mono@dc977160 altered the filename
format, preventing `src/mono-runtimes` from using it.

There was an [attempt to fix xamarin-android][3], but in the interest
of "sanity" and "not doing too much at once," it was [removed][4]
from the [mono/2018-10 bump PR][5]:

> Is it necessary to intermix the "mono archives" changes along with
> the mono/2018-10 bump changes?
> 
> I mean sure, mono/2018-10 has improved support for the mono
> archive, but I fear/suspect that the mono archive changes
> [are causing the NUnit tests to crash][6], and thus a smaller, more
> focused PR may be more desirable (and then deal with the mono
> archive changes in a separate PR).

Now that [xamarin-android is using mono/2018-10][7], it is time to
revisit mono archive support:

 1. Fix the mono archive URL that we attempt to download, so that
    we can actually *find* a mono archive.

 2. Fix `src/mono-runtimes` so that we can *build* with the archive.

 3. Fix BCL unit test resource usage.

 4. Update `@(MonoProfileAssembly)` and `@(MonoTestAssembly)`.

 5. Improve unit test name exclusion behavior


~~ Build fixes ~~

Many of the paths that `src/mono-runtimes` looked for were wrong when
using the mono archive, e.g. using `external/mono/sdks/builds` when
that directory is used for building mono, but when the archive is
used that directory is empty.  Update those paths to instead use
`external/mono/sdks/out`, which is *also* valid for mono source
builds *and* for mono archive use.

Similarly, `Consts.cs` is a generated file which is included in the
mono archive, but we needed to update our path to use it from
`external/mono/sdks/out` and not the "normal" build location.

Finally, use the `<SystemUnzip/>` task to extract the mono archive
`.zip` file.  This at least has a *plausible* chance of working on
Windows, should we wish to pursue Windows-native support of mono
archives.


~~ Unit test resources ~~

The `tests/BCL-Tests`-related projects execute mono-built unit test
assemblies, which are included in the mono archive.  When we first
added support for executing the mono-provided unit test assemblies
in e9daf5e, we also included "unit test resources" for extraction
on the Android device.  These unit test resources were files that the
unit test expected to exist as files on the filesystem.

The mono unit tests have since been fixed so that these extra
resources are now included within the unit test assemblies as
`@(EmbeddedResource)`s.  There is thus no longer a need to separately
package and extract  `@(_BclTestContent)`.  This allows us to remove
and simplify `mono-runtimes.targets`.  (Yay!)

One ramification of this change is around *satellite assemblies*:
`Xamarin.Android.Bcl-Tests.targets` previously would execute the
`<AL/>` task in order to compile certain resources into satellite
assemblies.  This is no longer necessary, as the satellite assemblies
are included in the mono archive.  However, we do need a way of
specifying what the satellite assemblies are; introduce a new
`@(MonoTestSatelliteAssembly)` item group to specify them.


~~ Update `@(MonoProfileAssembly)` and `@(MonoTestAssembly)` ~~

Once we had things building, a possible mistake was made: we updated
the `@(MonoProfileAssembly)` and `@(MonoTestAssembly)` item groups
to include what was in the mono archive.

Add a new `build-tools/scripts/gen-ProfileAssemblies.sh` script which
will generate the contents of
`src/mono-runtimes/ProfileAssemblies.projitems` based on the contents
of `external/mono/sdks/out`, which is where the mono archive is
extracted.  This will generate appropriate `@(MonoFacadeAssembly)`,
`@(MonoProfileAssembly)`, `@(MonoTestAssembly)`, and
`@(MonoTestSatelliteAssembly)` item groups:

	build-tools/scripts/gen-ProfileAssemblies.sh > src/mono-runtimes/ProfileAssemblies.projitems

On the plus side, updating these item groups needed to be done
*anyway*: if there are new unit tests, we should execute them!
(This should have been done as part of the mono bumps, but it's
easily overlooked.)


~~ Unit test exclusion ~~

Unfortunately, not all of the new unit tests pass: `System.IO.Pipes`
doesn't support Android or Linux:

	[$xUnit] Test FAILED [monodroid_System.Core_xunit-test, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]
	   Test name: System.IO.Pipes.Tests.AnonymousPipeTest_CreateClient.CreateClientStreamFromStringHandle_Valid
	   Exception messages: System.PlatformNotSupportedException : Operation is not supported on this platform.
	   Exception stack traces:   at System.IO.Pipes.AnonymousPipeServerStream.Create (System.IO.Pipes.PipeDirection direction, System.IO.HandleInheritability inheritability, System.Int32 bufferSize)

The `MonoTests.System.Web.Services.Description.ServiceDescriptionTest`
unit tests also fail:

	System.TypeInitializationException : The type initializer for 'System.Web.Services.Description.ExtensionManager' threw an exception.
	  ----> System.InvalidOperationException : There was an error reflecting type 'System.Web.Services.Description.HttpAddressBinding'.
	  ----> System.InvalidOperationException : System.Web.Services.Description.HttpAddressBinding cannot be serialized because it does not have a default public constructor

Additionally, several of the added `System.Linq.Expressions` tests
are not "linker safe" and would fail in Release builds but not Debug
builds.

Finally, we discovered that our unit test name exclusion strategy in
`xunit-excluded-tests.txt` was insufficient, as when xUnit has
parameterized tests, those parameters become part of the test name:

	System.IO.Pipes.Tests.AnonymousPipeTest_Read_ServerIn_ClientOut.AsyncReadWriteChain_ReadWrite(iterations: 5000, writeBufferSize: 1, readBufferSize: 1, cancelableToken: True)

I don't want to have to repeat every one of those parameterized
variations, as it could quickly become out of date, and determining
a complete list would be harder.

Improve `XUnitTestRunner.IsIncluded()` twofold:

 1. Only require `testCase.Traits` when performing
    `XUnitFilterType.Trait` filtering.  (Some unit tests *lack*
    traits, and without this change we'd never get around to test
    name checks.)

 2. Improve `XUnitFilterType.TypeName` checking so that if a test
    name starst with an excluded name followed by a `(`, the test is
    also skipped.  This allows excluding parameterized tests by
    providing only the name before the `(`.

Exclude all of the tests which currently fail in Release builds.

[0]: https://github.com/xamarin/xamarin-android/projects/10
[1]: https://github.com/mono/mono/commits/2018-08
[2]: https://github.com/mono/mono/commits/2018-10
[3]: #2366
[4]: #2253 (comment)
[5]: #2253
[6]: #2253 (comment)
[7]: d87d00f
@github-actions github-actions bot locked and limited conversation to collaborators Feb 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
full-mono-integration-build For PRs; run a full build (~6-10h for mono bumps), not the faster PR subset (~2h for mono bumps)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant