Differences between revisions 6 and 7
Revision 6 as of 2008-09-17 20:15:02
Size: 2711
Editor: meebey
Comment:
Revision 7 as of 2008-09-17 20:51:26
Size: 2729
Editor: meebey
Comment:
Deletions are marked like this. Additions are marked like this.
Line 24: Line 24:
Nope, with this 1.0 -> 2.0 transition we will also split the Mono packages to further reduce dependency chains.Tomboy for example only use the Mono.Posix.dll library from the libmono2.0-cil package or the libmono0 which is only needed by C applications that do calls into Mono. So we would put the Mono.Posix library into an extra package as it's used almost by all Mono based GUI applications, this gives us 4.8MB back of the harddisk, and with libmono0 we get 2.3MB back. Nope, with this 1.0 -> 2.0 transition we will also split the Mono packages to further reduce dependency chains.Tomboy for example only use the Mono.Posix.dll library from the libmono2.0-cil package or the libmono0 which is only needed by C applications that do calls into Mono. So we would put the Mono.Posix library into an extra package as it's used almost by all Mono based GUI applications, this gives us '''4.8MB''' back of the harddisk, and with libmono0 we get '''2.3MB''' back.
Line 26: Line 26:
So now we are at 10MB + 4.8MB + 2.3MB = 17.1MB So now we are at 10MB + 4.8MB + 2.3MB = '''17.1MB'''

New Mono 2.0 Package Layout

Why?

Because a simple application like tomboy still needs 49.9MB, which is too much to be included in the default debian install for example ?javascript:void(0);/*1221680473253*/ 0.

Aren't the Mono packages very split already?

Yes they are but not enough to get small enough installs. This is caused by * indirect native dependencies (e.g. sqlite, libgdiplus, gtk+, etc) * 2 different runtime profiles (1.0 vs 2.0)

So how to solve this mess?

With Lenny+1 (Squeeze) we will make the 1.0 runtime deprecated and compile all CLI libraries and CLI applications for only the 2.0 runtime. We will still ship the 1.0 runtime libs of Mono but they will only work for applications that do not require other Debian CLI library packages (such as GTK#).

Doesn't this require a transition?

Yes it does, all Debian CLI library and application packages need to be rebuild using gmcs instead of mcs (if they are not using gmcs by default already!). To get an idea of how many packages are build against the 2.0 runtime:

 apt-cache rdepends libmono-corlib1.0-cil | grep -v libmono- | grep -v mono- | wc -l 84 

So 84 binary packages are built using the 1.0 compiler (mcs) for targeting the 1.0 runtime. (btw libmono-* and mono-* packages don't count, as they will still be shipped for the 1.0 runtime for compatibility with external (as in non-debian) applications)

OK, so all this work for exactly what gain now?

As said a tomboy install needs 49.9MB of additional harddisk space when installed on a default debian/lenny system.

Tomboy is using the 2.0 runtime of Mono but uses libraries that was compiled for the 1.0 runtime and thus it pulls in 1.0 runtime libs + 2.0 runtime libs. If all libraries would use the 2.0 runtime it would reduce the tomboy install by over 10MB (and that just by recompiling the libs using gmcs).

Allright, just 10MB, that's all you got?

Nope, with this 1.0 -> 2.0 transition we will also split the Mono packages to further reduce dependency chains.Tomboy for example only use the Mono.Posix.dll library from the libmono2.0-cil package or the libmono0 which is only needed by C applications that do calls into Mono. So we would put the Mono.Posix library into an extra package as it's used almost by all Mono based GUI applications, this gives us 4.8MB back of the harddisk, and with libmono0 we get 2.3MB back.

So now we are at 10MB + 4.8MB + 2.3MB = 17.1MB

Tomboy itself is 10MB in size, this is mainly because it contains graphics with texts that need to be translated in many languages:

 du -sh /usr/share/gnome/help/tomboy
 5.7M    /usr/share/gnome/help/tomboy