WinGRASS 6 Current Status
This page describes the current status of winGRASS development:
Compilation
(based on work from Paul Kelly - his message, but no more need to modify GRASS XDR in recent GRASS 6.3)
Requirements
- To compile winGRASS natively, you need the following additional libraries: XDR, Zlib, libpng, PROJ.4, GDAL. They are available in a gzipped tar file (to get started quickly): http://www.stjohnspoint.co.uk/grass/ (get wingrass-extralibs.tar.gz).
- Additionally, you need Msys & MingW (current version)
- bison
- flex (or get gnuwin32).
TODO: bison and flex: no idea if from MSYS or gnuwin32? if gnuwin32, just install it?
Optionally:
- Freetype
- FFTW
- PDCurses
TODO: is PDCurses really optionally?
winGRASS on MingW compilation
The prefix where you untar that file you will need to supply to the GRASS configure as:
--with-includes=prefix --with-libs=prefix
Before compilation, you need to set your path in msys in order to add the path to the lib/ and bin/ directories of Paul's tarball before compiling. You might also need to edit the first few lines of the gdal-config script in the bin/ directory, to reflect the path where it is actually installed.
You also have to erase $(MANDIR) $(MANPAGES) from line 13 of man/Makefile, i.e. 'default: $(MANDIR) $(MANPAGES)' -> 'default:'.
If you get an error such as 'cannot open file `/msys/share/bison/m4sugar/m4sugar.m4': No such file or directory', one solution is to move around the msys bison installation a bit, so that m4sugar.m4 is available in the indicated path.
A working configure line is:
./configure --prefix=c:/grass --bindir=c:/grass/bin \ --with-includes=/c/grass/forgrass/include \ --with-libs=/c/grass/forgrass/lib --with-cxx --without-jpeg --without-tiff \ --without-postgres --with-opengl=windows --without-fftw --without-x \ --enable-x11=no --enable-shared=yes --with-tcltk-includes=/c/tcl/include \ --with-tcltk-libs=/c/tcl/bin
After compiling you should copy libxdr.dll, libproj.dll, libpng.dll, libgdal-1.dll and libz.dll.1.2.3 into the GRASS lib directory and all the GDAL and PROJ .exe files in the bin directory into the GRASS bin directory, and then you have a more or less self-contained GRASS distribution.
You can also install Activestate Tcl/Tk 8.4.13 (in c:\tcl).
What is missing?
See also GRASS Mailing list archives.
Vector
v.digit: implement as pure tcl(Glynn)Vector-DB connection: This has been solved by rewriting the XDRlib (Glynn)
GUI
- TclTk interface: still some issues
Display
- Display drivers: socket
- Use gis.m instead of monitors.
- Make gis.m Output window more like xterm. No need to hit Run.
- Is there any way that the Map Display in gis.m can interact with console commands? IPC? File Alteration Monitor?
Imagery
- i.class: SIGALRM, SIGTSTP (are these signals important?)
- wait() in:
- i.ortho.photo/photo.2image: wait()
- i.ortho.photo/photo.2target: wait()
- i.points: wait()
- i.vpoints: wait()
- Note: also in lib/gis/popen.c and lib/gis/system.c (use those implementations?)
Raster
- r.terraflow: getrusage()
- check this octave patch email thread (check thread msgs)
Known problems
- metacharacter escape in "sh -c '$cmd'"
- modules not working: r.proj (v.proj too?), r.surf.rst, v.neighbors, v.kernel, r.cost
- Cannot open Help pages.
- Have to add c:\mingw\bin to PATH on some systems.
- You should have typed c:/mingw instead of c:\mingw when asked by the MinGW installer.
- Have to type "exit" in the console to save ~/.grassrc file. Then, close gis.m to finish the session.
- A previous installation of grass under cygwin is likely to cause problems with WinGrass. Follow the directions to remove cygwin at http://cygwin.com/faq/faq-nochunks.html#faq.setup.uninstall-all
The following items cannot be fixed in the near future:
- Cannot display a thematic layer.
- d.vect.thematic requires PNG driver, which is not available in winGRASS.
- can't read "_data(.gronsole.gronsole,4,donecmd)": no such element in array error
- Aqua TclTk solution: http://intevation.de/rt/webrt?serial_num=5096&display=History
TclTk issues
- cannot run shell scripts: only .com, .exe, .bat
- sh -c '$cmd'
- var=val style argument is not valid for batch files: equal sign is a separator like a space. http://support.microsoft.com/?kbid=71247 http://www.gatago.com/alt/msdos/batch/17358926.html
need .exe wrapper for shell scripts? grass-xterm-wrapper.exe- We now have .bat wrappers for each shell script, which run the shell specified by the GRASS_SH environment variable and pass the full path to the script to it
- file command returns bad code (catch is needed): http://sources.redhat.com/ml/insight/2003-q1/msg00079.html
- catch {file copy}
- catch {file delete}
- catch {file rename -force} does not work. Delete old file first: catch {file delete}; catch {file rename}
file redirection (>@stdout, 2>@stderr) does not work: http://wiki.tcl.tk/672- Worked around by using a small C-program (grocat.exe) to combine stdout and stderr
- exec a batch file doing redirection (>&2, 2>&1)
- no -permissions file attributes
- catch {file attributes -permissions}
Other libraries
GDAL
- lib/gis/OBJ.*/fmode.o is needed for any GRASS related modules.
- modified ltmain.sh to install binary files from wrapper scripts.