[Mono-devel-list] GAC and third party libraries: post Beta planning.

Michal Moskal malekith at pld-linux.org
Thu May 6 11:18:22 EDT 2004

On Thu, May 06, 2004 at 10:54:22AM -0400, Todd Berman wrote:
> > I believe -pkg: will use no symlinks, but only pkg-config. And in
> > gtk-sharp.pc will be: 
> > 
> >   libraries: /r:/usr/lib/mono/gac/gtk-sharp/
> > 
> > No need for any symlink.
> > 
> > > The problem with removing that /package argument is where do the
> > > gtk-sharp-2.0 assemblies go, the ones with the same filenames as the
> > > gtk-sharp assemblies. Note, this is a compile time issue, *NOT* a
> > > runtime issue as the gac solves this.
> > 
> > They have different version and go to GAC. And path in the GAC goes to
> > gtk-sharp-2.pc. Plain and simple.
> This was the original solution we had in mind with the gac, and was
> roundly rejected by many of our windows based developers.

On this list only issue of mcs using GAC to load assemblies was
discussed. There were no mention of pkg-config. Maybe I missed some
#mono discussion.

> The problem with that is apparently the gac shouldnt be used to
> reference assemblies at any time but runtime. It is designed to be an
> opaque black box that just works. For right now it is file based, but
> there are no promises in the future.

The pkg-config solution don't strictly speaking use GAC. It simply
happens to use the same file system location. Even if GAC is changed
to use some kind of database, it still needs to provide dlls as files
for compilers to link. And the /probe option makes the exact location
an implementation detail.

> Having the symlinks (because our current setup allows it) in a seperate
> place gives us something to migrate against if our gac setup changes
> radically.
> There are also other (believe it or not) uses for having a package
> subdir like that.
> I can think of a couple and list them here:
> Someplace for monodoc to look for docs, to make doc bundling easier than
> it is now.
> Somewhere to store other tiny helper executables (so as to avoid
> cluttering $prefix/bin with .exe'd files that arent exactly directly
> executable (easily at least))

Ok, I have no problem with applications having directories, but why
store any dlls there? Also /usr/lib as per FHS isn't good location for

> > I see no good reason to have two GAC locations. Even when you install
> > some other gtk-sharp files in /usr/local the dll's should IMHO go to
> > /usr/lib/mono/gac.
> what if the user installing doesnt have permissions to install
> to /usr/lib

Ah, I see. Then user can install it in ~/installs/lib/mono/gac or whatever
mono will support. The installation process uses gacutil /probe to find
the exact location and stores it in .pc file. And finally puts .pc file in
~/installs/lib/pkgconfig or whatever. And user sets his $PKG_CONFIG_PATH
(this may be required for some non-mono libs anyway). No need to have
separate mono solution.

: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?

More information about the Mono-devel-list mailing list