Mono 2.10 Transition
With Mono 2.10.1 in Debian/Experimental another Mono transition is coming up as the support for the 1.0 runtime was dropped and 4.0 was added. Debian takes the lead again and will make a transition of all libraries and applications from 2.0 to 4.0. There are 2 different transition methods of how we can do it, that needs to be decided on.
- In total 103 source packages [0] are affected by this transition.
- Affected library source packages: 60 [1]
- Affected application source packages: 49 [2]
Mass binNMUs can't be used here as almost all packages are arch-all.
Status page of the Mono 2.10 transition: http://release.debian.org/transitions/html/mono.html
TODO page: http://wiki.debian.org/Teams/DebianMonoGroup/Mono210TransitionTODO
Transition Model 1 aka Fast Clean Cut
- Mono 2.10.1 upload to Debian/Experimental with mono-csc changed to dmcs (C# 4.0) (DONE)
- Rebuild all library source packages against Mono 2.10.1 in Debian/Experimental
- Fix possible FTBFS
- Rebuild all application source packages against Mono 2.10.1 in Debian/Experimental
- Upload Mono 2.10.1 to Debian/Unstable
- Upload all library source packages to Debian/Unstable
- Upload all application source packages to Debian/Unstable
- Rest and Enjoy
Transition Model 2 aka Slow Less Hurting Cut
As the Mono 2.10.1 binary packages are 100% ABI compatible with Mono 2.6.7 that is in Debian/Unstable, we could make a slow migration directly in Debian/Unstable:
Leave mono-csc to use the C# 3.0 compiler (gmcs) and start with the leaf node source packages to use the C# 4.0 compiler (dmcs)
- Mono 2.10.1 upload to Debian/Unstable with mono-csc unchanged
- Let Mono 2.10.1 migrate to Debian/Testing
- Patch each library source package to use dmcs instead of mono-csc
- Upload source package to Debian/Unstable
- Patch each application source package to use dmcs instead of mono-csc
- Upload source package to Debian/Unstable
- Rest and Enjoy
- Patch the source packages back to mono-csc :/
Transition Model 3 aka Dry Run
- Mono 2.10.1 upload to Debian/Experimental with mono-csc changed to dmcs (C# 4.0) (DONE)
- Rebuild all source packages against Mono 2.10.1 from Debian/Experimental without uploading the build results (DONE)
- Fix all possible FTBFS and upload backwards compatible FTBFS fixes to Debian/Unstable (DONE)
- Upload Mono 2.10.1 / cli-common 0.8 to Debian/Unstable (DONE)
- Upload nant built against Mono 2.10 to Debian/Unstable (DONE)
- Rebuild and upload all unstable library source packages to Debian/Unstable
- Rebuild and upload all application source packages to Debian/Unstable
- Rebuild and upload all library source packages to Debian/Unstable
- Rest and Enjoy
Exepected Issues
- FTBFS caused by a more stricter C# 4.0 compiler (dmcs) than the C# 3.0 compiler (gmcs). The source packages need patches in this case.
libmono-dev has been removed in mono 2.10. All build dependencies must be checked. The replacement is libmono-2.0-dev with a changed library name, soname and pc file.
dh_clideps >= 0.8 errors out on unresolved modulerefs. Optional modulerefs can be disabled ignored with --exclude-moduleref. This can be done for dh_clideps < 0.8 as it will just ignore the unknown command line.
mono-devel does not pull in mono-gmcs anymore. Instead it uses mono-dmcs. Projects setting ?ToolsVersion or ?TargetFrameworkVersion < 4.0 must depend on mono-gmcs directly or remove the tags to use the default mono-dmcs.
Mono.?GetOptions.dll does not exist anymore (replaced by Mono.Options?)
Prelimary rebuilds: a first rebuild of many packages against mono 2.10 in unstable: http://wiki.debian.org/Teams/DebianMonoGroup/Mono210Transition/jtaylor-rebuild
Mono 2.10 Transition Task Force
Mirco Bauer (Coordinator, Uploader (aka Sponsoring Bitch), Porter)
- Jo Shields
- Ian Lane
- Chow Loong Jin
What about you?
References
- [0] grep-dctrl -FBuild-Depends -FBuild-Depends-Indep mono-devel -sPackage /var/lib/apt/lists/*Sources | wc -l
- [1] grep-dctrl -FBinary -e lib.*-cil -sPackage /var/lib/apt/lists/*Sources
- [2] grep-dctrl -FBuild-Depends -FBuild-Depends-Indep mono-devel --and --not -FBinary -e lib.*-cil -sPackage /var/lib/apt/lists/*Sources | wc -l