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
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev