From Fedora Project Wiki
No edit summary
Line 65: Line 65:
At the moment on copr we use monolite a little version of mono compiler shipped in the tarball for first build time.
At the moment on copr we use monolite a little version of mono compiler shipped in the tarball for first build time.


We have two option to upgrade:
We have two options to upgrade:
* Upgrade mono to version 3.4, then to version 3.12 and then to version 4.0.1 on rawhide (actually 3.4 don't build on rawhide this need fixed)
* Upgrade mono to version 3.4, then to version 3.12 and then to version 4.0.1 on rawhide (3.4 now builds on rawhide: https://copr.fedoraproject.org/coprs/tpokorra/mono-3.4/monitor/)
* Make a one time exception of the rule for build mono 4.0.1-1 using monolite, later make mono depend again on it self and rebuild mono 4.0.1-2 using mono-4.0.1-1
* Make a one time exception of the rule for build mono 4.0.1-1 using monolite, later make mono depend again on it self and rebuild mono 4.0.1-2 using mono-4.0.1-1
** this is the favoured option, because there are new architectures anyway: armv7hl, aarch64, ppc64, ppc64l
** it would be best to bootstrap Mono 4 for all of the primary and secondary architectures at the same time (https://fedoraproject.org/wiki/Architectures#Structure)
=== Steps for Bootstrapping ===
<!-- according to https://fedoraproject.org/wiki/Packaging:Guidelines#Exceptions and https://fedoraproject.org/wiki/Packaging:Guidelines#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.
* 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.
* After Mono has been built for all primary and secondary architectures, and for Epel, we enable the deletion of the monolite binaries again in the spec file.


== Benefit to Fedora ==
== Benefit to Fedora ==

Revision as of 14:20, 12 May 2015


Mono 4

Summary

Update the Mono stack in Fedora from 2.10 to 4.*

Owner

Current status

Detailed Description

Support for Mono versions 3.0 and 2.10 is been discontinued. No further development of bug fixing is planned for those branches. Mono 4 is the active branch an have many improvements . See upstream notes http://www.mono-project.com/docs/about-mono/releases/4.0.0/

Mono require it self to build. Actual version 2.10.8 is to old to build version 4 that require at less version 3.4. At the moment on copr we use monolite a little version of mono compiler shipped in the tarball for first build time.

We have two options to upgrade:

  • Upgrade mono to version 3.4, then to version 3.12 and then to version 4.0.1 on rawhide (3.4 now builds on rawhide: https://copr.fedoraproject.org/coprs/tpokorra/mono-3.4/monitor/)
  • Make a one time exception of the rule for build mono 4.0.1-1 using monolite, later make mono depend again on it self and rebuild mono 4.0.1-2 using mono-4.0.1-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.
  • 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.
  • After Mono has been built for all primary and secondary architectures, and for Epel, we enable the deletion of the monolite 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 4.0.1

It will have the ability to run cross-platform applications that require compatibility with Microsoft. Net Framework 4.5

Scope

  • Proposal owners:

Update mono spec and build in copr and/or koji until is ready.

  • Other developers:

See Upgrade/compatibility impact and Dependencies section

  • Release engineering: None
  • Policies and guidelines: None

Upgrade/compatibility impact

Mono 4 includes most of the features of Mono 2.10 and Mono 3 branch.

The profiles 2.0, 3.5 and 4.0 will not be build any more in favor of profile 4.5

Many packages may need to be revised, updated or rebuilt because Mono 4 require that all application use target 4.5. In general is a simple task to sed .sln, .cproj, configure, configure.in, configure.am, Makefile, Makefile.in, Makefile.am for use mcs instead gmcs and change profile < 4.5 to 4.5. The files to sed change depending in what form is distributed the sources. In most off the cases only configure files need sed. A few package work without changes like gnome-subtitle or pinta

The fixes is work in progress on https://github.com/elsupergomez/lbs-mono-fedora and https://github.com/tpokorra/lbs-mono-fedora


How To Test

Interested testers do not need special hardware. Take a given Mono application and test it against the Mono at this copr repo and verify it works:

* http://copr.fedoraproject.org/coprs/tpokorra/mono/

Any issue will be reported in github https://github.com/elsupergomez/lbs-mono-fedora or https://github.com/tpokorra/lbs-mono-fedora

User Experience

User should note speedy improvement running Mono applications.

Some applications will have features only supported if used Mono 4

Dependencies

The current status of the fixes for build and run on Mono 4 is in https://github.com/elsupergomez/lbs-mono-fedora/blob/master/README.md

  • OpenTK
  • RepetierHost
  • avahi-sharp
  • banshee
  • banshee-community-extensions
  • bareftp
  • bless
  • boo
  • cdcollect
  • dbus-sharp
  • dbus-sharp-glib
  • docky
  • gbrainy
  • gdata-sharp
  • gecko-sharp2
  • gio-sharp
  • giver
  • gkeyfile-sharp
  • gmime
  • gnome-desktop-sharp
  • gnome-do
  • gnome-guitar
  • gnome-keyring-sharp
  • gnome-rdp
  • gnome-sharp
  • gnome-subtitles
  • graphviz
  • gsf-sharp
  • gtk-sharp-beans
  • gtk-sharp2
  • gtksourceview-sharp
  • gudev-sharp
  • hyena
  • keepass
  • kimono
  • libappindicator
  • libgpod
  • log4net
  • mono-addins
  • mono-basic
  • mono-bouncycastle
  • mono-cecil-flowanalysis
  • mono-debugger
  • mono-reflection
  • mono-tools
  • mono-zeroconf
  • monobristol
  • monodevelop
  • monodevelop-debugger-gdb
  • monosim
  • nant
  • ndesk-dbus
  • ndesk-dbus-glib
  • nini
  • notify-sharp
  • pdfmod
  • pinta
  • poppler-sharp
  • python-elasticsearch
  • qyoto
  • rescene
  • shogun
  • sparkleshare
  • syntastic
  • taglib-sharp
  • themonospot-base
  • themonospot-console
  • themonospot-gui-gtk
  • themonospot-gui-qt
  • themonospot-plugin-avi
  • themonospot-plugin-mkv
  • thrift
  • tomboy
  • uwsgi
  • webkit-sharp
  • xsp

New packages for mono stack

Contingency Plan

  • Contingency mechanism: Still in Mono 2.10
  • Contingency deadline: Beta freeze
  • Blocks release? No
  • Blocks product? Monodevelop >= 5

Documentation

https://fedoraproject.org/wiki/Packaging:Mono

https://github.com/mono/mono

Release Notes

http://www.mono-project.com/docs/about-mono/releases/