[mono-packagers] Startup Scripts Inconsistency in Mono 2.0

Mirco Bauer meebey at debian.org
Sun Oct 19 11:00:40 EDT 2008


in Mono 2.0 I noticed a serious inconsistency in the startup scripts.
This makes is very difficult to package it correctly, as I am splitting
applications that target the 1.0 and 2.0 runtime.

It seems that most scripts without a version number are now call the 2.0
version instead of the 1.0 version.

I see major issues with this though as there are many applications that rely
on this scripts during the build, and suddenly the helper tools start using
the 2.0 profile and not 1.0 like they did before.

As example if an application builds using mcs and al, al is now 2.0 while
mcs (as expected) 1.0....

IMHO all development tools should ship 2 flavors (1.0 and 2.0) with 2 scripts
(one for 1.0 and one for 2.0) and a default script that either calls 1.0 for
_all_ scripts or 2.0, but not a mix between of that!

This is not only a build issue but also a packaging issue, as files shipped
in packages (at least for debian) are not allowed to overwrite files of other
packages (if not explicitly allowed). Thus making /usr/bin/al suddenly use /usr/lib/mono/2.0/al.exe
means the script has to be moved from mono-1.0-devel to mono-2.0-devel and existing
source packages in debian will now break as they have a build-dependency on
mono-1.0-devel and not mono-2.0-devel.

I am stopping packaging Mono 2.0 for Debian because of this issue, as regardless
of what the solution will be, moving things forth and back will make packaging
error prone, cause unexpected corner cases and needlessly complicated.

So please lets find a solution that is a) consistent and b) back-wards compatible!
(compared to < 2.0 of course)

Here a list of the scripts and which version they start:
al1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/al.exe "$@"
al2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/al.exe "$@"
al:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/al.exe "$@"

al was changed to 2.0

gacutil2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/gacutil.exe "$@"
gacutil:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/gacutil.exe "$@"

gacutil was not changed to 2.0? and no gacutil1 script?

genxs1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/genxs.exe "$@"
genxs2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/genxs.exe "$@"
genxs:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/genxs.exe "$@"

ilasm1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/ilasm.exe "$@"
ilasm2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/ilasm.exe "$@"
ilasm:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/ilasm.exe "$@"

ilasm was changed to 2.0

mcs1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/mcs.exe "$@"
mcs:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/mcs.exe "$@"

mcs1? what eh? :)

mkbundle1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/mkbundle.exe "$@"
mkbundle2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/mkbundle.exe "$@"
mkbundle:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/mkbundle.exe "$@"

mkbundle was changed to 2.0

mono-api-diff:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/mono-api-diff.exe "$@"

no 1 nor 2?

mono-api-info1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/mono-api-info.exe "$@"
mono-api-info2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/mono-api-info.exe "$@"
mono-api-info:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/mono-api-info.exe "$@"

mono-api-info was changed to 2.0

mono-service2:   exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/mono-service.exe $args
mono-service:   exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/mono-service.exe $args

mono-service is still 1.0, no mono-service1 script?

monolinker:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/monolinker.exe "$@"

no monolinker(1|2) and still 1.0?

monop1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/monop.exe "$@"
monop2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/monop.exe "$@"
monop:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/monop.exe "$@"

nunit-console2:exec /usr/bin/mono --debug $MONO_OPTIONS /usr/lib/mono/2.0/nunit-console.exe "$@"
nunit-console:exec /usr/bin/mono --debug $MONO_OPTIONS /usr/lib/mono/1.0/nunit-console.exe "$@"

resgen1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/resgen.exe "$@"
resgen2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/resgen.exe "$@"
resgen:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/resgen.exe "$@"

signcode:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/signcode.exe "$@"

sn:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/sn.exe "$@"

no sn(1|2) and still 1.0?

wsdl1:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/wsdl.exe "$@"
wsdl2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/wsdl.exe "$@"
wsdl:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/wsdl.exe "$@"

wsdsl was changed to 2.0

xbuild:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/xbuild.exe "$@"

well this is 2.0-only app, so nothing to fix.

xsd2:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/2.0/xsd.exe "$@"
xsd:exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/1.0/xsd.exe "$@"

no xsd1 and xsd still 1.0?


Mirco 'meebey' Bauer

PGP-Key ID: 0xEEF946C8

FOSS Developer    meebey at meebey.net  http://www.meebey.net/
PEAR Developer    meebey at php.net     http://pear.php.net/
Debian Developer  meebey at debian.org  http://www.debian.org/

More information about the mono-packagers-list mailing list