[GRASSLIST:2797] Re: mailing list for beginners

Glynn Clements glynn.clements at virgin.net
Mon Mar 1 11:50:58 EST 2004

James Plante wrote:

> > Really I was just saying that questions about NVIZ not working are not
> > usually 'beginner's questions' and there is no need for a separate list
> > for them.
> Well, as a beginner myself, I can say that questions about NVIZ may 
> truly be beginners' questions. Being principally a Mac user, I'm not 
> fluent with compilation of source code, so I obtained a binary 
> installation of GRASS 5.0.3 from OpenOSX.

Yeah, but unfortunately there's a big difference between compiling
source code and compiling the NVIZ source code. The latter regularly
causes problems for people who otherwise have no problems compiling
source code.

Part of the problem is that NVIZ creates an additional Tk widget class
(Togl, the OpenGL canvas widget), which relies upon Tk internals. To
do this, it requires header files which aren't normally shipped with
binary Tk packages, so we have to include local copies of those
headers (and if the system's Tk library was built with modified
headers, we lose). It also involves using aspects of Tk which aren't
particularly well documented (and, I suspect, which may have changed
significantly between 8.3 and 8.4).

Another part of the problem is that OpenGL may use both the pthread
and C++ libraries, while Tk may use the pthread library. Both of those
libraries may have certain "quirks" that don't occur with other

Unfortunately, there's also a difference between compiling source code
on MacOSX and compiling it on "normal" Unices. MacOSX is similar
enough that Unix code can be made to compile and run on it, but
different enough to cause problems. Here, the main issues are:

1. The OSX linker is significantly different from that on other
Unices, e.g. GNU ld.

2. OSX has "native" versions of both OpenGL and Tcl/Tk, in addition to
the traditional Unix/X11 versions. The native versions won't work with
Unix code (e.g. NVIZ), so if they end up getting used, the program
won't work. Unfortunately, getting "configure" to detect the presence
or absence of a header file or library is a lot easier than getting it
to determine whether the file which it detected is actually suitable
for the intended purpose.

Glynn Clements <glynn.clements at virgin.net>

More information about the grass-user mailing list