[Mono-list] MacOS packages.

Benjamin Reed ranger@befunk.com
Tue, 02 Mar 2004 17:56:10 -0500


Andy Satori wrote:

> Phase I:
> 
>     A .pkg installer that installs Mono and Mcs to /usr/local/, with a 
> detailed description on how to properly set up the environment to use 
> /usr/local/bin.  This package would use glib statically linked, to avoid 
> the need to also deploy glib to the users machine.

I know this is always a topic of religious war, but...

/usr/local is in the default compiler path.  Unless you're committing to 
always maintaining all of mono's dependencies, keeping them up-to-date, 
and making them compatible with other packaging systems, you're going to 
end up causing conflicts with things like fink and opendarwin that 
expect things in different places.

IMHO, /usr/local is for the *local* administrator to put things, not 
3rd-party packagers.  I would suggest /opt/mono or somesuch instead.  If 
people want to use those binaries for their own projects, they can with 
CFLAGS and LDFLAGS, without polluting the default compiler path.

At the very least, put them somewhere out of the way and ask if they 
want you to symlink them to /usr/local.

> The problem with the second is that as far as I can tell, it would 
> require XCode projects to build the framework, and all the associated 
> dylibs.  creating that project is going to be time consuming, and it 
> will require updating to be kept in sync with the ./configure & make 
> process.

You can make frameworks manually, by changing things around after 
building using install_name_tool (I do this with the Qt3 packages I made).

Generally you would do something like:

   install -d /Library/Frameworks/MonoVM.framework/Versions/A/Headers
   cp -a /mono/root/include/* \
	/Library/Frameworks/MonoVM.framework/Versions/A/Headers
   cp /mono/root/lib/libmono.dylib \
	/Library/Frameworks/MonoVM.framework/Versions/A/MonoVM
   ln -sf A/MonoVM /Library/Frameworks/MonoVM.framework/MonoVM
   ln -sf A/Headers /Library/Frameworks/MonoVM.framework/Headers
   install_name_tool -id \
	/Library/Frameworks/MonoVM.framework/Versions/A/MonoVM

...or something along those lines.  There's more to it for any 
reasonably complicated framework, but you get the idea.

-- 
Benjamin Reed, a.k.a. RangerRick
ranger@befunk.com / http://ranger.befunk.com/
Now Playing: "Hyperballad (Brodsky Quartet Version)" by Bjrk