[Mono-dev] Packaging NAnt

Rafael Teixeira monoman at gmail.com
Fri Jul 14 10:39:16 EDT 2006


On 7/13/06, Wade Berrier <wberrier at novell.com> wrote:
> Hi,
> In trying to build and package nant, I've found that nant has some
> internal libraries that reference the 1.0 profile of .NET:
> berrier:/usr/src/packages/SPECS # rpm
> -i ../RPMS/noarch/nant-0.85_rc4-1.noarch.rpm
> error: Failed dependencies:
>  mono(System) = 1.0.3300.0 is needed by nant-0.85_rc4-1.noarch
>  mono(System.Data) = 1.0.3300.0 is needed by nant-0.85_rc4-1.noarch
>  mono(System.Web) = 1.0.3300.0 is needed by nant-0.85_rc4-1.noarch
>  mono(System.Windows.Forms) = 1.0.3300.0 is needed by
> nant-0.85_rc4-1.noarch
>  mono(System.Xml) = 1.0.3300.0 is needed by nant-0.85_rc4-1.noarch
>  mono(mscorlib) = 1.0.3300.0 is needed by nant-0.85_rc4-1.noarch

Who packaged Nant as rpm? and Mono? Both should agree on version
numbers, although Mono runtime uses another criteria for version
matching, see further down below...

AFAIK, RPM dependency version-checking won't do what is needed so
maybe a check for any-version of Mono is the best solution.

> Even though the rpm won't install, nant appears to function (by
> installing it with --nodeps).
> My question is, why doesn't the runtime croak when trying to load the
> above missing assemblies?

Two possibilities:

1) The Mono RPM contains the right libraries but was packaged with the
version numbers, or not so fine grained as the error messages seem to
indicate the Nant package wants.
2) Mono is using version policies to load newer versions of the
libraries. Version policy files tell Mono Assembly loader that a newer
version of a library is safe to be used in any place one from a range
of older versions is requested.

> And my next question is, since the runtime doesn't croak, shouldn't
> monodis be reporting the above versions?  This would help for the rpm
> scripts, otherwise I'll have to use a manual rpm provides for the above
> assembly versions.

Mono nowadays packs the .NET 1.1 libraries (Version=1.0.5000.0) that
are compatible with the .NET 1.0 libraries (Version=1.0.3300.0). So
adapt your script to add a rpm provides for each 1.1 library you pack.
A better, but more complex solution, is to look at the version policy
files being packed to be sure what manual provides should be issued.

The ultimate solution would be Nant to be packaged asking for version
>= 1.0.3300.0 of Mono Libraries, as the runtime already knows what to
do as instructed by the version policy files.

> Suggestions?
> Wade
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list

Hope it helps,

Rafael "Monoman" Teixeira
"The reasonable man adapts himself to the world; the unreasonable one
persists in trying to adapt the world to himself. Therefore all
progress depends on the unreasonable man." George Bernard Shaw

More information about the Mono-devel-list mailing list