[GRASS-dev] Re: 'g.gui wxpython' won't work in wingrass as wxgui is a shell script

Ivan Shmakov ivan at theory.asu.ru
Thu Feb 28 23:03:49 EST 2008


>>>>> Michael Barton <michael.barton at asu.edu> writes:

[...]

 >> It may be a stupid question, but what scripting language is
 >> proposed to replace POSIX Shell in GRASS?  The GRASS environment
 >> seems to benefit a lot from relying on a Shell-like language.
 >> E. g., I could hardly imagine using any language other than Shell
 >> for the following:

 >> $ g.mlist type=rast pattern=2008-\*-temperature \
 >>       (while read r ; do
 >>            s="$r"-celsius ; r.mapcalc "\"$s\" = \"$r\" - 273.15" ; \
 >>        done)

 >> (Surely, there's an Olin Shivers et al work [1, 2], but it seems to
 >> me that Shell is a bit easier to explain to a non-programmer than
 >> Scheme [3, 4].)

 >> [1] http://www.scsh.net/
 >> [2] http://www.scsh.net/resources/commander-s.html
 >> [3] http://www.r6rs.org/
 >> [4] http://www.schemers.org/

 > For the foreseeable future, Linux/Unix systems will continue to have
 > a shell available to do the operation in your example. One of the
 > important features of GRASS is that many operations can be performed
 > in a variety of scripting environments--including bash or other
 > shells.

 > However, Windows does not have a shell. If GRASS is to be truly
 > cross- platform, then all basic GRASS functions need to operate on
 > all supported platforms. This poses a significant problem for Windows
 > users. Cygwin has been quite difficult to install for most users,
 > very difficult to use in a shared classroom/lab setting, and (in my
 > experience) somewhat unstable. There is now a 'native' Windows build
 > of GRASS, but it requires custom hacks for bash scripts and other
 > bashisms common in GRASS

	As Bash becomes somewhat less popular in the GNU world and being
	replaced by other POSIX-compatible Shells, it makes sense to get
	rid of bashisms irrespective of the platform.

 > --and installing msys--and these have been the most problematic part
 > of running GRASS in Windows so far.

	Strangely enough, I had no troubles installing Msys recently
	(along with Tcl & Tk I've cross-compiled for W32.)

 > Also, many users are not particularly comfortable with arcane bash
 > shell commands--like in your example above--although I know others
 > who have a special fondness for bash.

 > The current plan is ultimately for all core GRASS functions to run as
 > binaries in a cross-platform compiled language (C for most things) OR
 > in Python as a cross-platform scripting environment for GUI and
 > 'permanent' scripts (i.e., those that are distributed as part of
 > GRASS). I'm not familiar with Olin Shivers; I've heard of Scheme, but
 > don't know it.

	The point is that Scsh, designed by Olin Shivers, employs a
	special Shell-like notation for running external commands.  I
	don't know any other language to implement such a feature.

 > However, IMHO, Python is much easier to teach someone and to work
 > with than bash.

	Well, I've heard of Python, but don't know it.  Could you please
	show me the ``g.mlist ...'' fragment above rewritten in Python?

 > Nevertheless, for those on *nix systems, bash will continue to be a
 > scripting platform for GRASS into the near future.



More information about the grass-dev mailing list