[GRASS-dev] 6.2.2 RC1, Mac .app compilation, & Tcl/Tk

Scott Mitchell smitch at mac.com
Wed May 30 15:14:00 EDT 2007


On 30-May-07, at 10:27 , William Kyngesburye wrote:

> On May 30, 2007, at 7:52 AM, Scott Mitchell wrote:
>
>> I have tended to stick with the "unix version" of GRASS on my  
>> Macs.  I have occasionally played with either William's binaries  
>> (kyngchaos.com), or compiling from source with the --enable-macosx- 
>> app option, but I've never used these versions much beyond quick  
>> tests, since I work a lot over network connections in a mixed  
>> Linux/Mac environment.
>>
> You can start the .app GRASS from the Terminal with /Applications/ 
> GRASS-[version].app/Contents/Resources/grass.sh.  This is the  
> equivalent of grass62 in the unix build.

Great, thanks.

>
>> So for 6.2.2 RC1, I just tried compiling with the following:
>> branford:~/src/grass-6.2.2RC1 smitchl$ ./configure  --prefix=/ 
>> Applications --enable-macosx-app '--with-libs=/usr/X11R6/lib / 
>> Library/Frameworks/UnixImageIO.framework/unix/lib /sw/lib' '--with- 
>> includes=/usr/X11R6/include /Library/Frameworks/ 
>> UnixImageIO.framework/unix/include /sw/include' --with-freetype -- 
>> with-freetype-includes=/Library/Frameworks/FreeType.framework/unix/ 
>> include --with-freetype-libs=/Library/Frameworks/ 
>> FreeType.framework/unix/lib --with-gdal=/usr/local/bin/gdal-config  
>> --with-motif --with-postgres-includes=/sw/include/postgresql -- 
>> with-odbc --with-fftw-includes=/Library/Frameworks/FFTW3.framework/ 
>> unix/include --with-fftw-libs=/Library/Frameworks/FFTW3.framework/ 
>> unix/lib --with-sqlite --with-python --with-proj=/usr/local --with- 
>> cxx --with-tcltk-includes=/sw/include --with-tcltk-libs=/sw/lib
>>
> Quite a mix of stuff there.  A possible problem is the global libs/ 
> includes option, especially as it includes Fink (/sw) - that could  
> short circuit more specific options like FreeType and FFTW, and  
> link other installed copies.  It makes a longer configure command,  
> but I prefer to leave -libs and -includes as a last resort and  
> specify every option.

It has worked well for me, but I see your point.  I think it works as  
long as you don't have conflicting possibilities - e.g. I recently  
ran into trouble on a Solaris box because there was an ancient GDAL  
lying around in one of the search paths, conflicting with the modern  
version I installed.
>
> Note: since you're using my FreeType, FFTW and UnixImageIO  
> frameworks, have you considered the rest - GDAL, PROJ and SQLite3?

Yes, I've done that too - the mix is a result of some experimentation  
- I see the danger, and I don't recommend the mixed method to those  
I'm advising.

>
>> What I've ended up with, though, is a "unix version" installed  
>> under /Applications/grass-6.2.2RC1 instead of an .app/  -- I'm  
>> assuming this is because I specified "unix" tcltk (on this  
>> machine, installed through fink, so it's in /sw).
>>
> The OSX .app build is not in 6.2.  So that will still be a unix  
> build.  Nothing to do with using X11 TclTk.  It seemed like a new  
> feature, and so not appropriate to add to 6.2.

Oops, how embarrassing.  I knew that at one point, but forgot while  
doing this, and copied my configure options over from a 6.3 build.

>
>> It seems to work fine, with the exception of nviz, which generates:
>> Exception:  EXC_BAD_ACCESS (0x0001)
>> Codes:      KERN_INVALID_ADDRESS (0x0001) at 0x5c637273
>>
> I found an odd build issue with the X11 TclTk - it does not add the  
> unversioned symlinks to the libraries (libtcl.dylib, libtk.dylib).   
> So when linking to nviz (-ltcl -ltk) it doesn't find those and  
> moves on to link the system's tcltk, which doesn't work.
>
> Add the symlinks to your tcltk build and try building GRASS again.   
> I see your tcltk is in /sw, so:
>
> sudo ln -sf libtcl8.4.dylib /sw/lib/libtcl.dylib
> sudo ln -sf libtk8.4.dylib /sw/lib/libtk.dylib
>
> If that's already OK, then maybe it's something that Fink is doing  
> with the build?

Between this and Agustin's post, this sounds promising.  The machine  
in question is at home and turned off, but I'll try it out ASAP.

>
>> In the meantime, I'm wondering:
>> (1) Am I correct in inferring that if one wants a .app build, one  
>> needs to use the Aqua Tcl/Tk (i.e. don't specify a unix/X11  
>> version for the tcltk includes and libs) ?
>> ...
> No.  The .app can use the X11 TclTk.  And the unix build can use  
> Aqua.  OSX's TclTk is old, 8.3.  That should work, but I haven't  
> had any luck with it.  And, in Panther it's not really Aqua, and  
> not really X11, only in Tiger is it fully Aqua.
> \...
> And, there are still random problems with NVIZ and TclTk Aqua.  So,  
> X11 TclTk is still recommended (by me at least).  With the move to  
> Python for the GUI, I haven't bothered to look into NVIZ bugs with  
> Aqua.

OK, that's clear.  I prefer the X11 version myself anyway.  Now I  
realize my problem was just that I was using a 6.2 source tree, not a  
6.3.

>
>> (2) If someone wants to use X11 instead of Aqua, there's nothing  
>> wrong with an "external" build of Tcl/Tk, alongside Apple's,  
>> right?  If I understand William's writing in http://grass.itc.it/ 
>> platforms/macgrass/tcltk.php correctly, this is essentially what  
>> he has done by installing into /usr/X11R6, because Apple's is  
>> directly under /usr
>>
> I need to clean up those instructions and move them into the wiki.   
> Rather than install them in X11, install them in /usr/local.  As I  
> mention in the readme in CVS, /usr/local/tcltk is what I use, to  
> keep it isolated.  Though I see you're using TclTk from Fink.

I have done both, depending on the machine and how much I interact  
with it.  I have /usr/local/tcltk on other machines.  I've had no  
trouble either way most of the time.

>
> Installing extras into X11, I decided after writing those  
> instructions, was not safe since it's an 'Apple space' - their  
> updaters might trash something in the future.

Yeah, I was worried about that.  I've committed a change to tcltk.php  
accordingly, but if you want to clean up those pages yourself, I'll  
hold off other edits.

>
Thanks, it's great to see the logic!

Scott




More information about the grass-dev mailing list