[GRASS-dev] fixes before 6.2.1 [was: ps.map: scale wrong and no
output]
Hamish
hamish_nospam at yahoo.com
Sat Nov 18 03:05:36 EST 2006
Michael Barton wrote:
> The only possible outstanding bug is the slightly misleading error
> message generated when the GUI fails to start up because gdal is not
> installed or incorrectly installed. However, in discussions with
> Hamish, it is looking like this would be better trapped before the GUI
> tries to launch.
I wrote [offlist]:
re gis.m failing on startup with "parts(n)" error if libgdal is missing-
I get it now, so by that point g.region is history and we are dealing
with the downstream effects of the failure. It's informative /where/ it
broke for debugging by us, but not /why/ for self-debugging by the user.
Optimally we want to pick up and regurgitate the "libgdal.so not found"
message somehow.
did you figure out how to get the return code from a C module in tcl?
(like "$?" in bash scripts) to test if the module exited with an error
or not? [=0 is success, =something else is failure]
like $GISBASE/etc/grass-run.sh tests.
[see end of http://wiki.tcl.tk/902 ]
or maybe test that the values of n,s,e,w are not empty directly after
the g.region call?
mapcanvas.tcl: line 1035
# Zoom to something loaded from a g.region command
proc MapCanvas::zoom_gregion {mon args} {
global env
if {![catch {open [concat "|g.region" "-ug" $args] r} input]} {
while {[gets $input line] >= 0} {
regexp -nocase {^([a-z]+)=(.*)$} $line trash key value
set parts($key) $value
}
catch {close $input}
MapCanvas::zoom_new $mon $parts(n) $parts(s) $parts(e) \
$parts(w) $parts(nsres) $parts(ewres)
}
}
I don't fully understand the catch- does it get stderr?:
http://www.wellho.net/mouth/366_Error-handling-in-Tcl-through-catch.html
or maybe the solution is to run a tiny do-nothing C program at start up
which depends on all the compiled-in libraries that were configured
during the build step?
[...]
a little program for Init.sh that needs the core rast,vect,proj libraries:
$(VECTLIB) $(GPROJLIB) $(GISLIB)
Init.sh before starting the GUI:
"$GISBASE"/etc/g.testlibs
if [ $? -ne 0 ] ; then
echo "library failure of some sort. please fix." >&2
exit 1
fi
Hamish
More information about the grass-dev
mailing list