[Mono-dev] Announce: Mono.Fuse (+ Required Mono.Posix Changes)

Paolo Molaro lupus at ximian.com
Wed Aug 30 12:07:55 EDT 2006

Trimmed the CC list to only include mono-devel-list.

On 08/29/06 Jonathan Pryor wrote:
> Once I started writing Mono.Fuse, I discovered a good reason to avoid
> Mono.Posix: it's currently impossible to use from outside of Mono.
> I figured this would be a good opportunity to rectify that, making it
> easier for additional libraries to build upon the Mono.Posix
> infrastructure.
> The biggest problem with the mono module is that no headers are
> installed, making it difficult to make use of libMonoPosixHelper.so.

This is for a good reason. libMonoPosixHelper.so is an internal
implementation detail, it is not a good library to export for a million
reasons and no header should be installed for it. It would be a
compatibility nightmare.

> Changes:
>   - Modify `configure' to generate a mono-config.h file, installed as
>     $libdir/mono/include/mono-config.h.  (Basic idea "borrowed" from
>     GLib's $libdir/glib-2.0/include/glibconfig.h).
>   - Add a mono-posix-helper.pc file
>   - Install the files $includedir/mono/posix/helper.h and
>     $includedir/mono/posix/map.h.
> map.h is the current map.h file generated by make-map.exe, with some
> major additions (detailed in the mcs section).
> helper.h is the main include file, which includes map.h and declares
> all types/functions which cannot be generated by make-map.exe.
> mono-config.h is necessary because it needs to contain
> platform-specific macros.  In particular, Linux needs:

Sorry, but there is no way to grab the mono-config.h name for this.

> mcs:
> ---
> There are two major changes:
>   * The addition of one public attributes to the API:
>     // targets Class, Delegate, Enum, Field, Struct
>     class Mono.Unix.Native.MapAttribute {
>       public MapAttribute ();
>       public MapAttribute (string nativeType);
>       public string NativeType {get;}
>       public string NativeSymbolPrefix {get; set;}
>     }
>   * A major revamp to make-map.exe

I don't think these changes are appropriate for mcs/. The Map attribute
and make-map.exe are hacks that are tolerated only because they are used
only internally. Exposing them for public use would only create
comaptibility issues: they are not tools that can be maintained with the
needed API and ABI stability required by a mono release.
If people need them, they can always make a copy and include them in their
own tarball outside of the mcs module.

>     1. What Mono seems to do, with the GAC in $prefix/lib no matter
>        what the architecture:
>         /usr/lib/mono-fuse/Mono.Fuse.dll
>         /usr/lib64/libMonoFuseHelper.so
>     2. Be consistent, and toss everything in @libdir@:
>         /usr/lib64/mono-fuse/Mono.Fuse.dll
>         /usr/lib64/libMonoFuseHelper.so

We should very likely do this.



lupus at debian.org                                     debian/rules
lupus at ximian.com                             Monkeys do it better

More information about the Mono-devel-list mailing list