WinGRASS 6 Current Status: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
No edit summary
Line 4: Line 4:
* Precompiled winGRASS/Cygwin packages are available [http://grass.itc.it/grass62/binary/mswindows/ here],  
* Precompiled winGRASS/Cygwin packages are available [http://grass.itc.it/grass62/binary/mswindows/ here],  
* native winGRASS packages are [http://geog-pc40.ulb.ac.be/grass/wingrass/ here].
* native winGRASS packages are [http://geog-pc40.ulb.ac.be/grass/wingrass/ here].
== Current status ==
The native windows port of GRASS is slowly coming to a stage where it can be considered beta status. All main functions seem to work, but much more testing is needed. The port is of the current cvs branch GRASS 6.3. There are no ports of earlier versions.
The general idea is to reach a point where GRASS runs in Windows without any kind of unix emulation. Currently, this is possible, but limits the use to compiled modules as scripts are all of unix-shell type and cannot run within a Windows cmd.exe environment without a series of unix tools such as a shell, awk, sed, etc. So in order to run such scripts a collection of unix-like tools needs to be installed, such as Msys, Gnuwin32, etc. It is planned that these scripts be rewritten in a more portable language such as Python.
Another major feature not available in the windows version are the old-style monitors (opened with d.mon), including the PNG, PS, etc monitors. Display is thus "limited" to the tcltk gui.


== Compilation ==
== Compilation ==


(based on work from Paul Kelly - [http://lists.osgeo.org/pipermail/grass-dev/2006-December/028097.html his message], but no more need to modify GRASS XDR in recent GRASS 6.3)
(based on work from Paul Kelly - [http://lists.osgeo.org/pipermail/grass-dev/2006-December/028097.html his message])


=== Requirements ===
=== Requirements ===


* To compile winGRASS natively, you need the following additional libraries: ''libpng, PROJ.4, GDAL, Zlib, <strike>XDR (1)</strike>''. They are available in a gzipped tar file (to get started quickly): http://www.stjohnspoint.co.uk/grass/ (get wingrass-extralibs.tar.gz).
* To compile winGRASS natively, you need the following additional libraries: ''libpng, PROJ.4, GDAL, Zlib, XDR''. 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 [http://www.mingw.org/download.shtml Msys & MingW] (current version)
* Additionally, you need [http://www.mingw.org/download.shtml Msys & MingW] (current version)
* [http://www.mingw.org/MinGWiki/index.php/bison bison]
* [http://www.mingw.org/MinGWiki/index.php/bison bison]
* [http://www.mingw.org/MinGWiki/index.php/flex flex] (or get [http://sourceforge.net/projects/gnuwin32/ gnuwin32]).
* [http://www.mingw.org/MinGWiki/index.php/flex flex]
 
Decompressing bison and flex in the root msys directory should position the files in the correct directories.


''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:'''
'''Optionally:'''

Revision as of 15:37, 30 November 2007

This page describes the current status of winGRASS development:

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

Current status

The native windows port of GRASS is slowly coming to a stage where it can be considered beta status. All main functions seem to work, but much more testing is needed. The port is of the current cvs branch GRASS 6.3. There are no ports of earlier versions.

The general idea is to reach a point where GRASS runs in Windows without any kind of unix emulation. Currently, this is possible, but limits the use to compiled modules as scripts are all of unix-shell type and cannot run within a Windows cmd.exe environment without a series of unix tools such as a shell, awk, sed, etc. So in order to run such scripts a collection of unix-like tools needs to be installed, such as Msys, Gnuwin32, etc. It is planned that these scripts be rewritten in a more portable language such as Python.

Another major feature not available in the windows version are the old-style monitors (opened with d.mon), including the PNG, PS, etc monitors. Display is thus "limited" to the tcltk gui.


Compilation

(based on work from Paul Kelly - his message)

Requirements

  • To compile winGRASS natively, you need the following additional libraries: libpng, PROJ.4, GDAL, Zlib, XDR. 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

Decompressing bison and flex in the root msys directory should position the files in the correct directories.


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.