-
Notifications
You must be signed in to change notification settings - Fork 534
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
Bump to mono/2018-04 #1503
Bump to mono/2018-04 #1503
Conversation
Context: #1975 In newer versions of Mono, `xabuild` is failing with: /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets(2126,5): error MSB3248: Parameter "AssemblyFiles" has invalid value "xamarin-android/bin/Debug/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/mscorlib.dll". Could not load file or assembly 'System.Reflection.Metadata, Version=1.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Or another example: Mono: The following assembly referenced from monodroid/external/xamarin-android/bin/Debug/bin/Microsoft.Build.Tasks.Core.dll could not be loaded: Assembly: System.Reflection.Metadata (assemblyref_index=7) Version: 1.3.0.0 Public Key: b03f5f7f11d50a3a Looking at copies of `System.Reflection.Metadata` in my Mono installation: $ find /Library/Frameworks/Mono.framework/ | grep System.Reflection.Metadata.dll$ /Library/Frameworks/Mono.framework//Versions/5.12.0/lib/mono/msbuild/15.0/bin/System.Reflection.Metadata.dll /Library/Frameworks/Mono.framework//Versions/5.12.0/lib/mono/msbuild/15.0/bin/Roslyn/System.Reflection.Metadata.dll /Library/Frameworks/Mono.framework//Versions/5.12.0/lib/mono/fsharp/System.Reflection.Metadata.dll /Library/Frameworks/Mono.framework//Versions/5.12.0/lib/mono/4.5/System.Reflection.Metadata.dll /Library/Frameworks/Mono.framework//Versions/5.12.0/lib/mono/4.5/dim/System.Reflection.Metadata.dll It appears that the Mono version of MSBuild has its own copy of `System.Reflection.Metadata.dll`. Referencing this MSBuild-specific assembly from `xabuild.csproj` on non-Windows platforms appears to solve the problem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is a simple change, and if it’s green we should go for it.
I’ll figure out something better if #1975 pans out.
On the plus side, it built this time. (Yay!) On the minus side, we have 26 unit test failures. Progress! |
@jonp there are 0 test failures now |
build |
2 similar comments
build |
build |
Context: mono/mono#9868 `MonoAotOffsetsDumper` execution fails because `$(AndroidSupportedTargetAotAbis)` doesn't contain the value `armeabi`. `$(AndroidSupportedTargetAotAbis)` meanwhile comes from the `$(ALL_JIT_ABIS)` make variable, which *does* contain `armeabi`: export ALL_JIT_ABIS = \ armeabi \ armeabi-v7a \ arm64-v8a \ x86 \ x86_64 Which raises a question: why isn't `armeabi` in `$(AndroidSupportedTargetAotAbis)`? Shot in the dark time! Export the `$(ALL_JIT_ABIS)` variable so that it's value will be dumped and visible in the MSBuild `.binlog` files that are produced as part of the build and/or diag log output. What's *really* odd about this is that the xamarin/xamarin-android:mono-2018-04 branch hasn't otherwise touched `build-tools/scripts`, and on the xamarin/xamarin-android:master Jenkins build `armeabi` *is* in `$(AndroidSupportedTargetAotAbis)`, e.g. https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/1121/
Commit list for mono/mono: * mono/mono@f3a2216b65a backport #9800 to 2018-04 * mono/mono@07ac0897350 Bump msbuild to track mono-2018-04 (#9834) * mono/mono@d31dbe843a5 Apply F# portable pdb debug fix for pinvokes & bump (#9798) Diff: mono/mono@a4ac628...f3a2216
<AndroidGenerateJniMarshalMethods Condition=" '$(AndroidGenerateJniMarshalMethods)' == '' ">False</AndroidGenerateJniMarshalMethods> | ||
|
||
<MakeBundleKeepTemporaryFiles Condition=" '$(MakeBundleKeepTemporaryFiles)' == '' ">False</MakeBundleKeepTemporaryFiles> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should either be $(_MakeBundleKeepTemporaryFiles)
or $(AndroidMakeBundleKeepTemporaryFiles)
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So < _MakeBundleKeepTemporaryFiles Condition=" '$(_MakeBundleKeepTemporaryFiles)' == '' ">False</_MakeBundleKeepTemporaryFiles >
or <MakeBundleKeepTemporaryFiles Condition=" '$(_MakeBundleKeepTemporaryFiles)' == '' ">False</MakeBundleKeepTemporaryFiles>
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean that MSBuild properties that we use should either have a _
prefix (for "private" use) or should have an Android
prefix (for "public" use), e.g.
<AndroidMakeBundleKeepTemporaryFiles Condition=" '$(AndroidMakeBundleKeepTemporaryFiles)' == '' ">False</AndroidMakeBundleKeepTemporaryFiles>
This reverts commit 4475145.
… the variable by Android since it seems like it should be public
Fixes: #1130 Fixes: #1561 (comment) Fixes: #1845 Fixes: #1951 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=10087 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=11771 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=12850 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=18941 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=19436 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=25444 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=33208 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=58413 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=59184 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=59400 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=59779 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=60065 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=60843 Context: mono/mono#6174 Context: mono/mono#6178 Context: mono/mono#6180 Context: mono/mono#6181 Context: mono/mono#6186 Context: mono/mono#6187 Context: mono/mono#6211 Context: mono/mono#6266 Context: mono/mono#6579 Context: mono/mono#6666 Context: mono/mono#6752 Context: mono/mono#6801 Context: mono/mono#6812 Context: mono/mono#6848 Context: mono/mono#6940 Context: mono/mono#6948 Context: mono/mono#6998 Context: mono/mono#6999 Context: mono/mono#7016 Context: mono/mono#7085 Context: mono/mono#7086 Context: mono/mono#7095 Context: mono/mono#7134 Context: mono/mono#7137 Context: mono/mono#7145 Context: mono/mono#7184 Context: mono/mono#7240 Context: mono/mono#7262 Context: mono/mono#7289 Context: mono/mono#7338 Context: mono/mono#7356 Context: mono/mono#7364 Context: mono/mono#7378 Context: mono/mono#7389 Context: mono/mono#7449 Context: mono/mono#7460 Context: mono/mono#7535 Context: mono/mono#7536 Context: mono/mono#7537 Context: mono/mono#7565 Context: mono/mono#7588 Context: mono/mono#7596 Context: mono/mono#7610 Context: mono/mono#7613 Context: mono/mono#7620 Context: mono/mono#7624 Context: mono/mono#7637 Context: mono/mono#7655 Context: mono/mono#7657 Context: mono/mono#7661 Context: mono/mono#7685 Context: mono/mono#7696 Context: mono/mono#7729 Context: mono/mono#7786 Context: mono/mono#7792 Context: mono/mono#7805 Context: mono/mono#7822 Context: mono/mono#7828 Context: mono/mono#7860 Context: mono/mono#7864 Context: mono/mono#7903 Context: mono/mono#7920 Context: mono/mono#8089 Context: mono/mono#8143 Context: mono/mono#8267 Context: mono/mono#8311 Context: mono/mono#8340 Context: mono/mono#8409 Context: mono/mono#8417 Context: mono/mono#8430 Context: mono/mono#8698 Context: mono/mono#8701 Context: mono/mono#8712 Context: mono/mono#8721 Context: mono/mono#8726 Context: mono/mono#8866 Context: mono/mono#9023 Context: mono/mono#9031 Context: mono/mono#9033 Context: mono/mono#9044 Context: mono/mono#9179 Context: mono/mono#9318 Context: mono/mono#9318 Context: xamarin/maccore#628 Context: xamarin/maccore#629 Context: xamarin/maccore#673
Context: dotnet/android#1503 Context: https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/1126/ Context: mono/mono@ca9cbdc The [bump to mono:2018-04][0] introduced two "incompatible" changes which impact our API Compatibility checks: 1. `mono-api-html.exe` behavior has changed, and 2. `System.String.Concat(object, object, object, object)` was removed. `mono-api-html.exe` from mono:2018-02 and before had a bug wherein it didn't properly handle nested types. The immediate affect of this was that the `Android.App.Notification.Icon` property change which was handled/ignored in `inter-api-extra-v5.1-v6.0.txt` was seemingly ignored, resulting in an API compatibility failure: <h1>### API BREAK BETWEEN v5.1 and v6.0</h1> <h3>Type Changed: Android.App.Notification.Action.Action</h3> <p>Modified properties:</p> <pre> <div data-is-breaking> public <span class='removed removed-inline removed-breaking-inline'>int</span> <span class='added '>Android.Graphics.Drawables.Icon</span> Icon { get; <span class='removed removed-inline removed-breaking-inline'>set;</span> } </div></pre> Note that the `mono-api-html` output here is still somewhat buggy: *there is no* `Android.App.Notification.Action.Action` type -- nested type names appear to be duplicated now, instead of skipped entirely -- so it's possible that future `mono-api-html` changes may break us. Other errors were being reported as well [^0], all of which are *reasonable and correct* but weren't needed with mono:2018-02's `mono-api-html`, which is...worrying, but ¯\_(ツ)_/¯. The `System.String.Concat(object, object, object, object)` removal is a bit of a misnomer: *there is no* `String.Concat()` method which takes four `object` parameters. There *was* a `String.Concat()` method which took *three* `object` parameters and an `__arglist` parameter, and the `__arglist`-including overload was removed because [it was deemed safe to remove][1]: > @mark-safar: I let the change in because it believe it's safe to > remove (I don't think our AOT compiler support that fully either). [^0]: Brief summary of most "new" changes which `mono-api-html` from mono:2018-02 didn't need but are reported with mono:2018-04: <h1>### API BREAK BETWEEN v4.3 and v4.4</h1> <h3>Type Changed: Android.Media.RemoteControlClient.MetadataEditor</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Object</span> <span class='added '>Android.Media.MediaMetadataEditor</span> </div></pre> <h3>Type Changed: Android.Views.Surface.OutOfResourcesException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.RuntimeException</span> </div></pre> <h3>Type Changed: Java.Lang.ClassNotFoundException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.IllegalAccessException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.InstantiationException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.NoSuchFieldException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.NoSuchMethodException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.Reflect.InvocationTargetException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h1>### API BREAK BETWEEN v4.4.87 and v5.0</h1> <h3>Type Changed: Android.OS.Bundle</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Object</span> <span class='added '>Android.OS.BaseBundle</span> </div></pre> <h1>### API BREAK BETWEEN v5.1 and v6.0</h1> <h3>Type Changed: Android.App.Notification.Action.Action</h3> <p>Modified properties:</p> <pre> <div data-is-breaking> public <span class='removed removed-inline removed-breaking-inline'>int</span> <span class='added '>Android.Graphics.Drawables.Icon</span> Icon { get; <span class='removed removed-inline removed-breaking-inline'>set;</span> } </div></pre> [0]: dotnet/android#1503 [1]: dotnet/android#2051 (comment)
Context: dotnet/android#1503 Context: https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/1126/ Context: mono/mono@ca9cbdc The [bump to mono:2018-04][0] introduced two "incompatible" changes which impact our API Compatibility checks: 1. `mono-api-html.exe` behavior has changed, and 2. `System.String.Concat(object, object, object, object)` was removed. `mono-api-html.exe` from mono:2018-02 and before had a bug wherein it didn't properly handle nested types. The immediate affect of this was that the `Android.App.Notification.Icon` property change which was handled/ignored in `inter-api-extra-v5.1-v6.0.txt` was seemingly ignored, resulting in an API compatibility failure: <h1>### API BREAK BETWEEN v5.1 and v6.0</h1> <h3>Type Changed: Android.App.Notification.Action.Action</h3> <p>Modified properties:</p> <pre> <div data-is-breaking> public <span class='removed removed-inline removed-breaking-inline'>int</span> <span class='added '>Android.Graphics.Drawables.Icon</span> Icon { get; <span class='removed removed-inline removed-breaking-inline'>set;</span> } </div></pre> Note that the `mono-api-html` output here is still somewhat buggy: *there is no* `Android.App.Notification.Action.Action` type -- nested type names appear to be duplicated now, instead of skipped entirely -- so it's possible that future `mono-api-html` changes may break us. Other errors were being reported as well [^0], all of which are *reasonable and correct* but weren't needed with mono:2018-02's `mono-api-html`, which is...worrying, but ¯\_(ツ)_/¯. The `System.String.Concat(object, object, object, object)` removal is a bit of a misnomer: *there is no* `String.Concat()` method which takes four `object` parameters. There *was* a `String.Concat()` method which took *three* `object` parameters and an `__arglist` parameter, and the `__arglist`-including overload was removed because [it was deemed safe to remove][1]: > @mark-safar: I let the change in because it believe it's safe to > remove (I don't think our AOT compiler support that fully either). [^0]: Brief summary of most "new" changes which `mono-api-html` from mono:2018-02 didn't need but are reported with mono:2018-04: <h1>### API BREAK BETWEEN v4.3 and v4.4</h1> <h3>Type Changed: Android.Media.RemoteControlClient.MetadataEditor</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Object</span> <span class='added '>Android.Media.MediaMetadataEditor</span> </div></pre> <h3>Type Changed: Android.Views.Surface.OutOfResourcesException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.RuntimeException</span> </div></pre> <h3>Type Changed: Java.Lang.ClassNotFoundException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.IllegalAccessException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.InstantiationException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.NoSuchFieldException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.NoSuchMethodException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.Reflect.InvocationTargetException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h1>### API BREAK BETWEEN v4.4.87 and v5.0</h1> <h3>Type Changed: Android.OS.Bundle</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Object</span> <span class='added '>Android.OS.BaseBundle</span> </div></pre> <h1>### API BREAK BETWEEN v5.1 and v6.0</h1> <h3>Type Changed: Android.App.Notification.Action.Action</h3> <p>Modified properties:</p> <pre> <div data-is-breaking> public <span class='removed removed-inline removed-breaking-inline'>int</span> <span class='added '>Android.Graphics.Drawables.Icon</span> Icon { get; <span class='removed removed-inline removed-breaking-inline'>set;</span> } </div></pre> [0]: dotnet/android#1503 [1]: dotnet/android#2051 (comment)
No description provided.