[GRASS-dev] Quick gis.m test on Windows

Just tried it and it seems to have a few problems with Msys-based assumptions: I eventually found it works OK if I start it from the Msys terminal but we should in theory be able to get everything except scripts working without Msys.
Anyway I'm not great at debugging Tcl but when first starting up I got this error:
couldn't write file "/dev/null": no such file or directory
     while executing
"exec -- d.font romans >& /dev/null"
     ("eval" body line 1)
     invoked from within
"eval [list exec -- $cmd] $args >& $devnull"
     (procedure "run" line 12)
     invoked from within
"run d.font romans"
     ("eval" body line 1)
     invoked from within
"eval run $cmd $args"
     (procedure "runcmd" line 6)
     invoked from within
"runcmd "d.font romans""
     (procedure "MapCanvas::runprograms" line 63)
     invoked from within
"MapCanvas::runprograms $mon [expr {$mymodified != 0}]"
     (procedure "MapCanvas::drawmap" line 38)
     invoked from within
"MapCanvas::drawmap $mon"
     (procedure "MapCanvas::display_server" line 9)
     invoked from within
"MapCanvas::display_server"
     ("after" script)

Found a place in gm.tcl that seemed to be setting an mingw variable to true if Msys was detected - I changed that to be unconditional and got a bit further to the following error when trying to display a map:
can't read "_data(.gronsole.gronsole,2,donecmd)": no such element in array
     while executing
"set donecmd $_data($path,$ci,donecmd)"
     (procedure "Gronsole::done_command" line 3)
     invoked from within
"Gronsole::done_command $path $ci"
     (procedure "Gronsole::execout" line 26)
     invoked from within
"Gronsole::execout $path $cmd $ci Gronsole::execwait"
     (procedure "Gronsole::run_wait" line 6)
     invoked from within
"Gronsole::run_wait .gronsole.gronsole {d.rast map=geology@PERMANENT -o} gism"
     ("eval" body line 1)
     invoked from within
"eval Gronsole::$cmd .gronsole.gronsole $args"
     (procedure ".gronsole.gronsole" line 1)
     invoked from within
"$gronsole run_wait $cmd gism"
     (procedure "run_panel" line 4)
     invoked from within
"run_panel $cmd"
     (procedure "GmCommonLayer::display_commands" line 33)
     invoked from within
"GmCommonLayer::display_commands $namespace $id [list $cmd]"
     (procedure "GmCommonLayer::display_command" line 2)
     invoked from within
"GmCommonLayer::display_command [namespace current] $id $cmd"
     (procedure "GmRaster::display" line 63)
     invoked from within
"GmRaster::display $node $mod"
     ("raster" arm line 2)
     invoked from within
"switch $type {
         group {
             GmGroup::display $node $mod
     }
     raster {
       GmRaster::display $node $mod
     }
     labels {
       GmLabels::disp..."
     (procedure "GmTree::display_node" line 7)
     invoked from within
"GmTree::display_node $n $mod"
     (procedure "GmGroup::display" line 22)
     invoked from within
"GmGroup::display "root" $mod"
     (procedure "MapCanvas::runprograms" line 63)
     invoked from within
"MapCanvas::runprograms $mon [expr {$mymodified != 0}]"
     (procedure "MapCanvas::drawmap" line 38)
     invoked from within
"MapCanvas::drawmap $mon"
     (procedure "MapCanvas::display_server" line 9)
     invoked from within
"MapCanvas::display_server"
     ("after" script)

Hope it's helpful for debugging.

Paul

Paul Kelly wrote:

Just tried it and it seems to have a few problems with Msys-based
assumptions: I eventually found it works OK if I start it from the Msys
terminal but we should in theory be able to get everything except scripts
working without Msys.

Anyway I'm not great at debugging Tcl but when first starting up I got

this error:
couldn't write file "/dev/null": no such file or directory
couldn't write file "/dev/null": no such file or directory

It's called "NUL:" on Windows, although ...

     while executing
"exec -- d.font romans >& /dev/null"

... gis.m probably shouldn't be running d.font. I thought it was using
direct rendering now, in which case d.font won't work.

--
Glynn Clements <glynn@gclements.plus.com>

Paul,

I'm not sure exactly what you're trying to do. I'll offer a bit of insight
and maybe you can clarify your objective more.

I think that Huidae Cho put in the MinGW/Msys pieces into the TclTk code a
month or so back to get the current alpha winGRASS to run. I've pretty much
left them alone (except for once when I accidentally committed a new version
that left some out).

Later this week, I'll be committing some changes to the GIS Manager for
GRASS 6.3 now that 6.2 is out the door. The main thing is adding support for
a text layer based on the new d.text version. The second is mouse placement
for text items, legends, and barscales.

Doing this, led to a cascade of some other changes of course. One of these
is that the problematic d.font romans statement below is no more. Glynn's
recent changes to the display drivers made this unnecessary.

Cedric Shock did the gronsole stuff and I still don't quite follow it. It
looks like the second problem may be because it is getting hung up when
gronsole tries to echo the series of display commands back to the TclTk
command console (gronsole). I don't know why, however. What do you mean that
you changed the variable to be unconditional? Did you take out an if clause?
What did it do?

I'll try to help you as much as I can on this.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

From: Paul Kelly <paul-grass@stjohnspoint.co.uk>
Date: Mon, 6 Nov 2006 22:09:30 +0000 (GMT)
To: <grass-dev@grass.itc.it>
Subject: [GRASS-dev] Quick gis.m test on Windows

Just tried it and it seems to have a few problems with Msys-based
assumptions: I eventually found it works OK if I start it from the Msys
terminal but we should in theory be able to get everything except scripts
working without Msys.
Anyway I'm not great at debugging Tcl but when first starting up I got
this error:
couldn't write file "/dev/null": no such file or directory
couldn't write file "/dev/null": no such file or directory
     while executing
"exec -- d.font romans >& /dev/null"
     ("eval" body line 1)
     invoked from within
"eval [list exec -- $cmd] $args >& $devnull"
     (procedure "run" line 12)
     invoked from within
"run d.font romans"
     ("eval" body line 1)
     invoked from within
"eval run $cmd $args"
     (procedure "runcmd" line 6)
     invoked from within
"runcmd "d.font romans""
     (procedure "MapCanvas::runprograms" line 63)
     invoked from within
"MapCanvas::runprograms $mon [expr {$mymodified != 0}]"
     (procedure "MapCanvas::drawmap" line 38)
     invoked from within
"MapCanvas::drawmap $mon"
     (procedure "MapCanvas::display_server" line 9)
     invoked from within
"MapCanvas::display_server"
     ("after" script)

Found a place in gm.tcl that seemed to be setting an mingw variable to
true if Msys was detected - I changed that to be unconditional and got a
bit further to the following error when trying to display a map:
can't read "_data(.gronsole.gronsole,2,donecmd)": no such element in array
can't read "_data(.gronsole.gronsole,2,donecmd)": no such element in array
     while executing
"set donecmd $_data($path,$ci,donecmd)"
     (procedure "Gronsole::done_command" line 3)
     invoked from within
"Gronsole::done_command $path $ci"
     (procedure "Gronsole::execout" line 26)
     invoked from within
"Gronsole::execout $path $cmd $ci Gronsole::execwait"
     (procedure "Gronsole::run_wait" line 6)
     invoked from within
"Gronsole::run_wait .gronsole.gronsole {d.rast map=geology@PERMANENT -o}
gism"
     ("eval" body line 1)
     invoked from within
"eval Gronsole::$cmd .gronsole.gronsole $args"
     (procedure ".gronsole.gronsole" line 1)
     invoked from within
"$gronsole run_wait $cmd gism"
     (procedure "run_panel" line 4)
     invoked from within
"run_panel $cmd"
     (procedure "GmCommonLayer::display_commands" line 33)
     invoked from within
"GmCommonLayer::display_commands $namespace $id [list $cmd]"
     (procedure "GmCommonLayer::display_command" line 2)
     invoked from within
"GmCommonLayer::display_command [namespace current] $id $cmd"
     (procedure "GmRaster::display" line 63)
     invoked from within
"GmRaster::display $node $mod"
     ("raster" arm line 2)
     invoked from within
"switch $type {
         group {
             GmGroup::display $node $mod
}
raster {
GmRaster::display $node $mod
}
labels {
GmLabels::disp..."
     (procedure "GmTree::display_node" line 7)
     invoked from within
"GmTree::display_node $n $mod"
     (procedure "GmGroup::display" line 22)
     invoked from within
"GmGroup::display "root" $mod"
     (procedure "MapCanvas::runprograms" line 63)
     invoked from within
"MapCanvas::runprograms $mon [expr {$mymodified != 0}]"
     (procedure "MapCanvas::drawmap" line 38)
     invoked from within
"MapCanvas::drawmap $mon"
     (procedure "MapCanvas::display_server" line 9)
     invoked from within
"MapCanvas::display_server"
     ("after" script)

Hope it's helpful for debugging.

Paul