Gather ideas and resources on developing extensions. Especially for installing extensions external to the main GRASS installation.
- [[(Development) GEM}]] - Current GEM SVN setup
- GRASS 7 Conceptual Changes - formalizing a user GRASS prefs and addons dir
Setting environment variables should be left up to the user or build startup.
Currently, there is a relatively new
GRASS_ADDON_ETC. It is a list of paths which point directly to "etc/" directories where an external module can find any support data files or programs it needs (an example is the
adinit.dat file needed by v.in.dwg). It is used by the libgis function G_find_etc(), and the general module g.findetc.
There is also
GRASS_ADDON_PATH, which has been around for many years, and is a list of paths to "bin/" dirs where external modules can be found. This is appended to the shell
To simplify the possible need for an extension to need any of the standard dirs - bin, include, lib, etc, scripts, docs,... - I suggest a variable having paths point to the common root of those, say
GRASS_EXTN_DIR. Then, as necessary, the appropriate subdir would be added. ie init.sh would add */bin to the shell
PATH and */lib to
[DY]LD_LIBRARY_PATH. This can easily support the $HOME/.grass7 dir idea in the future.
GRASS_ADDON_PATH should be kept for backwards compatibility, and it can still be useful for random user scripts.
GRASS_ADDON_ETC should at least be deprecated, if not completely removed - it's a recent CVS addition and I doubt anyone has used it yet.
In 6.3CVS, the Makefiles are now installed. With a little Makefile cleanup, and a few extra necessary items installled (demolocation and a couple tools), an installed GRASS can support compiling an extension without needing the full GRASS source, and without needing any extra module setup (as is needed currently by GEM-enabled modules). A standard GRASS module Makefile is all the would be needed.
[...in progress... more to come...]