Mono 5
Summary
Update the Mono stack in Fedora from 4.8 to 5.*
Owner
- Name: Timotheus Pokorra
- Email: tpokorra@fedoraproject.org
- Release notes owner:
Current status
- Targeted release: Fedora 30
- Last updated: 2019-04-15
- Tracker bug: #1691438
- Release notes tracker: #312
Detailed Description
Upgrading to Mono 5 has been delayed because Mono 5 compiles by default with csc rather than msc, and makes use of binary reference assemblies.
Only in the past months an effort was made to build Mono from source, as described in this upstream issue: https://github.com/mono/mono/issues/7445 This issue contains a description how the build was done for Debian so that building from itself is possible, using msc instead of csc, and rebuilding the reference assemblies from source.
Mono requires itself to build. The Mono version 4.8 currently included in Fedora is too old to build version 5. At the moment on copr we use monolite, a little version of mono compiler, and the .NET 4.7.1 reference assemblies, all shipped in the tarball for first build time. The sources of the spec file and the required patch files are currently maintained on Github.
We would like to request permission to make a one time exception of the rule for building mono 5.18.0-1 using monolite and the reference assemblies, later make mono depend again on itself and rebuild mono 5.18.0-2 using mono-5.18.0-1.
Steps for bootstrapping:
- The Monolite binaries are included in the Mono tarball which is provided by upstream. See also http://www.mono-project.com/docs/advanced/monolite/
- Monolite is a minimal binary distribution of mcs. This is the compiler that is able to build the rest of Mono.
- The binary reference assemblies are included in the Mono tarball which is provided by upstream. The tarball also includes the sources of the reference assemblies, which are maintained here: https://github.com/dotnet/source-build
- In the spec file, we usually delete all dlls and executables before the build section.
- For the bootstrap, we would once keep the monolite binaries and some binary reference assemblies.
- In the bootstrap, we rebuild the reference assemblies and include them in the mono-devel package, as well as the mono compiler.
- After Mono has been built for all primary and secondary architectures, we enable the deletion of the binaries again in the spec file.
Benefit to Fedora
Fedora aims to showcase the latest in free and open source software - we should have the most recent release of Mono 5.x
It will have the ability to run cross-platform applications that require compatibility with Microsoft .NET Framework 4.7 and later.
We already have issues upgrading packages like sharpziplib because the latest upstream version uses new compiler features that are not included in Mono 4.8 (see https://bugzilla.redhat.com/show_bug.cgi?id=1601129).
This will also resolve the issues we have because Mono 4.8 does not build on ppc64 anymore (see https://bugzilla.redhat.com/show_bug.cgi?id=1588734).
Scope
- Proposal owners:
Update mono spec and build in copr and/or koji until is ready. Members of the Mono SIG can rebuild their packages with Mono 5, but tests with keepass for example show that it works fine without rebuilding even with Mono 5.18. Rebuild of all packages depending on Mono can happen during the regular mass rebuild.
- Other developers: N/A (not a System Wide Change)
- Release engineering: #Releng issue number (a check of an impact with Release Engineering is needed)
- List of deliverables: N/A (not a System Wide Change)
- Policies and guidelines: N/A (not a System Wide Change)
- Trademark approval: N/A (not needed for this Change)
Upgrade/compatibility impact
N/A (not a System Wide Change)
Tests with keepass without rebuilding keepass worked fine on Mono 5.18.
How To Test
N/A (not a System Wide Change)
User Experience
Dependencies
N/A (not a System Wide Change)
This is not a system wide change, but only affects packages depending on Mono, and should be managed by the members of the Mono SIG.
Here is a list of packages that require mono-core in Rawhide, generated with this command: dnf repoquery --enablerepo=fedora-source --whatrequires mono-core | grep -v i686
This list even includes packages that are being built from the mono package (eg. mono-devel and others).
Last metadata expiration check: 0:00:56 ago on Fri Mar 1 23:42:49 2019. COPASI-0:4.24.197-6.fc30.src avahi-sharp-0:0.7-18.fc30.x86_64 avahi-ui-sharp-0:0.7-18.fc30.x86_64 banshee-0:2.6.2-32.fc30.x86_64 banshee-community-extensions-0:2.4.0-22.fc30.x86_64 bareftp-0:0.3.12-3.fc30.x86_64 bless-0:0.6.0-26.fc30.x86_64 boo-0:0.9.7.0-11.fc30.x86_64 cdcollect-0:0.6.0-32.fc30.x86_64 dbus-sharp-2:0.8.1-8.fc30.x86_64 dbus-sharp-glib-0:0.6.0-6.fc30.x86_64 gbrainy-1:2.3.5-3.fc30.x86_64 gdata-sharp-0:1.4.0.2-24.fc30.x86_64 gio-sharp-0:0.3-21.fc30.x86_64 gkeyfile-sharp-0:0.1-26.fc30.x86_64 gmime-sharp-0:2.6.23-7.fc30.x86_64 gnome-desktop-sharp-0:2.26.0-35.fc30.x86_64 gnome-do-0:0.95.3-13.fc30.x86_64 gnome-guitar-0:0.8.1-28.fc30.x86_64 gnome-keyring-sharp-0:1.0.1-0.28.133722svn.fc30.x86_64 gnome-rdp-0:0.3.1.0-22.fc30.x86_64 gnome-sharp-0:2.24.2-20.fc30.x86_64 gnome-subtitles-0:1.4-3.fc30.x86_64 graphviz-0:2.40.1-44.fc30.src graphviz-sharp-0:2.40.1-44.fc30.x86_64 gsf-sharp-0:0.8.1-27.fc26.x86_64 gtk-sharp-beans-0:2.14.0-24.fc30.x86_64 gtk-sharp2-0:2.12.45-6.fc30.x86_64 gtk-sharp2-gapi-0:2.12.45-6.fc30.x86_64 gtk-sharp3-0:2.99.3-23.fc30.x86_64 gtk-sharp3-gapi-0:2.99.3-23.fc30.x86_64 gudev-sharp-1:0.1-25.fc30.x86_64 hyena-0:0.5-20.fc30.x86_64 ibm-data-db2-0:4.8.0-17.fc30.x86_64 keepass-0:2.41-2.fc30.x86_64 libappindicator-sharp-0:12.10.0-24.fc30.x86_64 libgpod-sharp-0:0.8.3-27.fc30.x86_64 libsbml-0:5.17.0-13.fc30.src libsbml-sharp-0:5.17.0-13.fc30.x86_64 libsedml-1:0.4.3-20.fc30.src libsedml-sharp-1:0.4.3-20.fc30.x86_64 log4net-0:2.0.8-6.fc30.x86_64 mod_mono-0:3.13-3.fc30.x86_64 mono-0:4.8.0-17.fc30.src mono-addins-0:1.1-10.fc30.x86_64 mono-addins-devel-0:1.1-10.fc30.x86_64 mono-basic-0:4.7-3.fc30.x86_64 mono-bouncycastle-0:1.8.5-1.fc30.x86_64 mono-cecil-0:0.9.6-12.fc30.x86_64 mono-cecil-flowanalysis-0:0.1-0.34.20110512svn100264.fc30.x86_64 mono-data-0:4.8.0-17.fc30.x86_64 mono-data-oracle-0:4.8.0-17.fc30.x86_64 mono-data-sqlite-0:4.8.0-17.fc30.x86_64 mono-debugger-0:2.10-21.fc30.x86_64 mono-devel-0:4.8.0-17.fc30.x86_64 mono-extras-0:4.8.0-17.fc30.x86_64 mono-locale-extras-0:4.8.0-17.fc30.x86_64 mono-mvc-0:4.8.0-17.fc30.x86_64 mono-mvc-devel-0:4.8.0-17.fc30.x86_64 mono-reactive-0:4.8.0-17.fc30.x86_64 mono-reactive-devel-0:4.8.0-17.fc30.x86_64 mono-reactive-winforms-0:4.8.0-17.fc30.x86_64 mono-reflection-0:0.1-0.19.20110613git304d1d.fc30.x86_64 mono-shogun-0:6.0.0-15.fc30.x86_64 mono-tools-0:4.2-12.fc30.x86_64 mono-tools-gendarme-0:4.2-12.fc30.x86_64 mono-wcf-0:4.8.0-17.fc30.x86_64 mono-web-0:4.8.0-17.fc30.x86_64 mono-web-devel-0:4.8.0-17.fc30.x86_64 mono-winforms-0:4.8.0-17.fc30.x86_64 mono-winfx-0:4.8.0-17.fc30.x86_64 mono-yui-0:1.1.2-15.fc30.x86_64 mono-zeroconf-0:0.9.0-25.fc30.x86_64 monobristol-0:0.60.3.1-15.fc30.x86_64 monodevelop-0:5.10.0-14.fc29.x86_64 monodevelop-debugger-gdb-0:5.0.1-4.fc30.x86_64 monodoc-0:4.8.0-17.fc30.x86_64 monodoc-devel-0:4.8.0-17.fc30.x86_64 monosim-0:1.5.2-19.fc30.src monosim-0:1.5.2-19.fc30.x86_64 mysql-connector-net-0:6.9.9-8.fc30.x86_64 nant-1:0.92-22.fc30.x86_64 ndesk-dbus-0:0.6.1a-27.fc30.x86_64 ndesk-dbus-glib-0:0.4.1-28.fc30.x86_64 newtonsoft-json-0:9.0.1-14.fc30.x86_64 notify-sharp-0:0.4.1-0.6.20130131git28d2f65.fc30.x86_64 notify-sharp3-0:3.0.3-9.fc30.x86_64 nuget-0:2.8.7-8.fc30.x86_64 nunit-0:3.7.1-7.fc30.x86_64 nunit2-0:2.6.4-20.fc30.x86_64 nunit2-gui-0:2.6.4-20.fc30.x86_64 pdfmod-0:0.9.1-20.fc30.x86_64 pinta-0:1.6-13.fc30.x86_64 poppler-sharp-0:0.0.3-23.fc30.x86_64 rescene-0:1.2-19.fc30.src rescene-0:1.2-19.fc30.x86_64 restsharp-0:105.2.3-12.fc29.x86_64 sharpfont-0:4.0.1-7.fc30.x86_64 sharpziplib-0:0.86.0.518-9.fc30.x86_64 sparkleshare-0:1.5.0-5.fc30.x86_64 taglib-sharp-0:2.1.0.0-10.fc30.x86_64 themonospot-base-0:0.8.2-24.fc30.x86_64 themonospot-console-0:0.1.1-22.fc30.x86_64 themonospot-gui-gtk-0:0.2.2-23.fc30.x86_64 themonospot-plugin-avi-0:0.1.1-22.fc30.x86_64 themonospot-plugin-mkv-0:0.1.1-22.fc30.x86_64 tomboy-0:1.15.9-9.fc30.src tomboy-0:1.15.9-9.fc30.x86_64 uwsgi-plugin-mono-0:2.0.17.1-7.fc30.x86_64 vim-syntastic-cs-0:3.9.0-4.fc30.noarch webkit2-sharp-0:0-0.9.20170219gita59fd76.fc30.x86_64 wine-mono-0:4.7.5-1.fc30.src xsp-0:4.5-3.fc30.x86_64 xsp-tests-0:4.5-3.fc30.x86_64
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change)
- Blocks product? None
Documentation
N/A (not a System Wide Change)
- https://fedoraproject.org/wiki/Packaging:Mono
- https://github.com/mono/mono
- https://copr.fedorainfracloud.org/coprs/tpokorra/mono-5.18/
- https://github.com/tpokorra/mono-5.x-fedora/tree/master/mono-5.18