WinGRASS 6 Current Status

From GRASS-Wiki
Jump to navigation Jump to search

This page describes the current status of winGRASS development:

  • Precompiled winGRASS/Cygwin packages are available here,
  • native winGRASS packages are here.

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: libpng, PROJ.4, GDAL, Zlib, XDR (1). 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?

Note: (1) XDR should no longer be necessary

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()

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:

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.