From Fedora Project Wiki

Revision as of 15:39, 21 March 2019 by Bcotton (talk | contribs) (Approved by FESCo https://pagure.io/fesco/issue/2105)


Mono 5

Summary

Update the Mono stack in Fedora from 4.8 to 5.*

Owner

Current status

  • Targeted release: Fedora 31
  • Last updated: 2019-03-21
  • Tracker bug: <will be assigned by the Wrangler>

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)
  • 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)

Release Notes