[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.
Thanks.
lupus
--
-----------------------------------------------------------------
lupus at debian.org debian/rules
lupus at ximian.com Monkeys do it better
More information about the Mono-devel-list
mailing list