[GRASS-dev] winGRASS native

Hamish hamish_nospam at yahoo.com
Mon Nov 20 20:30:54 EST 2006


> > > > > Things that could not work on GRASS GIS native:
> > > > > - r.watershed (Neither GUI nor CLI worked)
> > ..
> > > > > About r.watershed, it mentioned something about /RAM that was
> > > > > making the problem. sorry for this poor info, i dont have
> > > > > Windows box around.
HB:
> > IIUC, r.watershed/seg/Makefile and r.watershed/ram/Makefile need to
> > have $(EXE) added to the end of the support binaries so they'll get
> > .exe extensions. (I'm not sure where/how in the Makefile to do this)
GC:
> There are two possible approaches:
> 
> 1. Add $(EXE) to the definition of PGM= in the Makefile.
> 
> 2. Add $(EXE) to the "etc" rules in Module.make, and add it to the
> $(INSTALL) command in the Makefile.


compare:
  raster/r.support/modhead/Makefile 
and
  raster/r.watershed/ram/Makefile


r.support/modhead:
---
MODULE_TOPDIR = ../../..

PGM = modhead$(EXE)

LIBES = $(EDITLIB) $(VASKLIB) $(GISLIB) $(CURSES)
DEPENDENCIES = $(GISDEP) $(EDITDEP) $(VASKDEP)

include $(MODULE_TOPDIR)/include/Make/Module.make

default: etc
        $(MKDIR) $(ETC)/support
        mv $(ETC)/$(PGM) $(ETC)/support

htmletc1:
        @echo "No docs to generate."
---


r.watershed/ram:
---
MODULE_TOPDIR = ../../..

PGM = r.watershed.ram

LIBES = $(GISLIB)
DEPENDENCIES = $(GISDEP)

include $(MODULE_TOPDIR)/include/Make/Module.make

default: etc 
        $(MKDIR) $(ETC)/water
        $(INSTALL) -m 755 $(ETC)/$(PGM) $(ETC)/water

htmletc1:
        @echo "No docs to generate." 
---


* in r.support $(EXE) gets added to $(PGM) so no need for it to be used
with each $(INSTALL) as well.

* r.support uses "mv" while r.watershed uses $(INSTALL). This explains
why there end up being two copies of seg and ram in etc/ and etc/water/.
(cp vs mv). The solution eludes me.

* after renaming "ram" and "seg" to "r.watershed.{ram|seg}" it complains
that those module are missing man pages when rebuilding grass. does it
have anything to do with raster/r.watershed/Makefile missing this line:
  include $(MODULE_TOPDIR)/include/Make/Dir.make
?


> I prefer the latter option, as this is consistent with the way that
> "normal" programs are handled. Module.make automatically adds $(EXE)
> to $(PGM) for "cmd" and "inter" rules, but not for "etc". This means
> that the definition of PGM in the module's Makefile has to include
> $(EXE) for "etc" but mustn't include it for "cmd" or "inter".

I agree. Better to be consistent and control it from one place.

I leave it to someone else to implement as I don't use windows & can't
test.

> > Any more thoughts on a hierarchy for the $GISBASE/etc/ dir?
> > To help with multi-platform packaging it would be nice to segregate
> > scripts and tcl from binaries, but as far as GRASS is concerned a
> > support program is a support program regardless of what language was
> > used to write it. 
> 
> I suggest treating scripts the same as binary executables, even though
> that means having multiple copies on multi-architecture filesystems. 

I agree for shell scripts, but what about big tcl files? (etc/ gis.m,
d.m, nviz,..) and in future large amounts of python code..
 
> They don't take up much space, and we won't have to track down their
> callers if someone replaces a binary with an equivalent script (or
> vice-versa).

agree.

> Separating programs (whether binaries or scripts) from data files
> seems a reasonable goal. However, some binary data files may be
> platform dependent (byte order, sizeof(long) etc). Aren't some of the
> datum grids architecture-specific?

sounds vaugely familiar.


Hamish




More information about the grass-dev mailing list