[GRASS-dev] debugging nviz with TclTk 8.5 aqua

Michael Barton michael.barton at asu.edu
Sun Jul 27 03:22:43 EDT 2008



On Jul 26, 2008, at 9:36 PM, William Kyngesburye wrote:

> On Jul 26, 2008, at 8:26 PM, Michael Barton wrote:
>
>> AFAICT, the only things of TclTk that actually get into the Mac  
>> binary for GRASS proper are the ancient BWidgets folder, which goes  
>> into all GRASS distributions, a copy of tclsh8.4 that doesn't seem  
>> to get used for anything, and copies of wish. Currently, my GRASS 7  
>> binary, using TclTk aqua 8.5 has wish8.5 and wish8.4; GRASS_WISH is  
>> set to one or the other of these by grass.sh in $GISBASE. If I put  
>> in the x11 version of wish8.4 and change the settings for  
>> GRASS_WISH in grass.sh, I can get an x11 version of the GUI.
>>
>> There are tcl and tk directories in in %GISBASE/lib, along with  
>> libtcl8.4.dylib and libtk8.4.dylib. There are also some tcltk *.h  
>> files in $GISBASE/include. AFAICT, these are complete unused at  
>> least on my Mac. I can throw them away with no effect, regardless  
>> of whether I switch to wish 8.5 aqua or 8.4 x11. Are these used by  
>> any other system? While my aqua version of TclTk 8.5 is visible to  
>> my system, 8.4 for x11 is hidden away in /usr/local/tcltk and not  
>> in my path--in GRASS or outside of it. So I don't see how GRASS can  
>> find any files in that directory.
>>
> This is all from my OSX app default bundling, which I'm thinking  
> about how to simplify, considering Glynn's comments and the new  
> compatibility with Tcltk 8.5 and Tcltk Aqua.
>
>> In sum, the GRASS TclTk GUI seems to ONLY need wish of one flavor  
>> or another to run. So all that is needed is to include all 3 wish  
>> versions, default to one and have a Mac script that will let the  
>> user change to another one if desired. This is easy for all of  
>> GRASS except NVIZ.
>>
> As a compile & install on a single system, really no bundling of  
> tcltk is needed.  I'll probably drop that from the OSX app makefile.

A version of wish needs to be somewhere. It seems like a good thing to  
include it with GRASS if that is all it needs. Why not just include 2  
versions of wish: 8.5 aqua and 8.5 x11. Switching GRASS_WISH will make  
the GRASS aqua or x11 compatible. These are small files and then  
binary users would not need to worry about having TclTk installed or  
which version they have installed.

>
> For packaging for distribution, I'll leave it up to the packager,  
> using the bundle.make fragment.
>
>> NVIZ seems to use its own version of wish that must be coded into a  
>> C module somewhere. I certainly can't find it. But must be finding  
>> wish somewhere. If that path could be redirected to whatever  
>> GRASS_WISH is, then both GRASS and NVIZ could be in sync. The only  
>> fly in this ointment would be if Togl must have the same version of  
>> wish available (somewhere) that it was compiled against AND needs  
>> other TclTk files in addition to wish.
>>
> That's probably some application API thing in tcltk.  NVIZ just  
> needs the tcl and tk libraries that it was compiled with.

But where are these? Is it using the ones installed on the system?

Michael



More information about the grass-dev mailing list