[GRASS5] how to minimize dependencies in GRASS binaries - with specific application to Mac OS X systems

Scott Mitchell smitch at mac.com
Fri Feb 13 13:42:26 EST 2004


I'm corresponding with a few list members on issues around creating 
binaries that are as "prerequisite free" as possible, and would like 
some feedback on how library dependencies work.  Specifically, how to 
do this on a Mac OS X system, which tends to have a more restricted set 
of (Unix-ish) stuff installed by default than, say, a Linux system.  My 
lack of expertise plus lack of experience (my own systems normally have 
the full sources and required libraries) make it hard to figure this, 
so I'm appealing to the list.  I know that bits and pieces of the 
information I'm talking about are scattered throughout past mailing 
list traffic, but I appeal to your patience...  hopefully getting this 
straight will lead to better information as I write up some 
documentation on the web pages.

Kirk Wythers and I have both made attempts at building binaries.  Both 
of us have used the fink packaging system (essentially, a port of 
Debian's package tools plus a database of software ported to the Mac) 
to get many of GRASS' dependencies.  In the end, we get a package that 
seems to work well if the person using it also has fink.  As Michael 
Barton points out in the included message below, it would be nice if 
users did not all have to have fink installed to use the binary 
distribution.

We are also trying to stick to the "official" grass binary packaging 
system so that the end result is the same as the "official" packages 
provided for other platforms on the GRASS site.  I have learned a lot 
from the generous people that have alternative binaries available now, 
but we'd also like to make available a system that includes 
installation path flexibility and no "brute-force" installation of 
prerequisite libraries.

In order to try to figure out the means and feasibility to make that 
happen, I find myself questioning my understanding of libraries and 
linking.  I'll set out what I THINK I understand, and hope that some 
corrections and/or verifications would ease our task.

I think that the problem in the example depicted below was because the 
GNU internationalization libraries are referred to in GRASS, and on our 
compilation systems, it found them in the fink directories.

I will ignore for now one issue that I'm pretty sure about:  this 
particular library is probably only needed if you were compiling in the 
alternate language support, which I'm pretty sure right now is only 
done for Russian, and that if necessary, I think we could "hide" this 
library from configure and GRASS would compile without 
internationalization support.  That's all from a vague memory of past 
list traffic, not from research.

I think that if the compilation of this binary package had used static 
libraries instead of dynamic, then this problem would not have come up 
because the required functions would have been compiled into the GRASS 
binary modules.  This would get rid of some of the specific issue, but 
would potentially make the binary distribution much bigger.

Based on these (mis?)understandings, I suppose that as long as licenses 
allow it, any other libraries that are missing (e.g. in this case, 
libintl.*.dylib) could be copied in to the binary distribution's grass 
library directory, the same way we now provide libgdal.  As long as the 
number of libraries involved are reasonable, this could be the way to 
go.

I also know that some functions that are in standard dynamic libraries 
on most systems are included in "frameworks" in Mac OS X, which means 
that if the right flags are given at compile time, the system-provided 
versions can be used, and to maximize portability we would want to 
catch all of these to avoid packaging non-necessary extra bits.  I 
thought that libintl might have been in the IOKit framework, but an 
initial search seems to suggest that this is wrong.  Any corrections 
from Mac-savvy people most welcome.

Maybe I should stop here before I get too far ahead.  How am I doing so 
far?

Thanks,
Scott Mitchell

P.S.  Thanks again to all that have helped getting GRASS to "play nice" 
with Mac OS X systems in the past - in the mailing list archives that 
I've saved on this, Glynn Clements and Markus Neteler in particular 
have helped out many times...

Begin forwarded message:

>>> On Feb 12, 2004, at 12:38 PM, Michael Barton wrote:
>>>
>>>> Scott and Kirk,
>>>>
>>>> I have a student trying to install GRASS 5.3 using the binaries you 
>>>> and Kirk put up, packaged TclTk binaries, and NOT using fink. (I 
>>>> like fink a lot, but not everyone should have to install it just to 
>>>> use GRASS).
>>>>
>>>> It turns out that these binaries have a fink dependency that needs 
>>>> to be removed. Here is the result of trying start GRASS 5.3 without 
>>>> >> fink.
>>>>
>>>> [Steven-Schmichs-Computer:~] stevensc% /usr/local/bin/grass53
>>>> dyld: /usr/local/grass53/etc/lock can't open library: 
>>>> /sw/lib/libintl.1.dylib  (
>>>> No such file or directory, errno = 2)
>>>> /usr/local/grass53/etc/Init.sh: line 145:   599 Trace/BPT trap      
>>>>     "$ETC/lo
>>>> ck" "$lockfile" $$
>>>> Unable to properly access /Users/stevensc/.gislock5
>>>> Please notify system personel.
>>>>
>>>> The student just put fink on the computer and GRASS seems to be 
>>>> fine.
>>>>
>>>> Michael
>>>> ______________________________
>>>> Michael Barton, Professor & Curator
>>>> Department of Anthropology
>>>> Arizona State University
>>>> Tempe, AZ  85287-2402
>>>> USA
>>>>
------
Scott W. Mitchell		Scott_Mitchell at carleton.ca
Department of Geography and Environmental Studies
Carleton University, B349 Loeb Building (Office A209)
1125 Colonel By Drive, Ottawa, ON Canada K1S 5B6
+1-613-520-2600 ext 2695 Fax: 1-613-520-4301





More information about the grass-dev mailing list