[GRASS-dev] grass-addons and nested module libraries

Dear devs,

I've noticed that r.green module is installing his libraries in the wrong place:

{{{
$ # rm -r $GRASS_ADDON_BASE
$ g.extension extension=r.green
Fetching <r.green> from GRASS GIS Addons repository (be patient)...
Compiling...
Installing...
Updating addons metadata file...
ERROR: Unable to read manual page: [Errno 2] No such file or directory:
       '/home/pietro/.grass7/addons/docs/html/r.green.html'
}}}

that generate a tree directory like:

{{{
$ tree $GRASS_ADDON_BASE
/home/pietro/.grass7/addons
├── bin
├── docs
│ ├── html
│ │ ├── grassdocs.css
│ │ ├── r.green.biomassfor.co2.html
│ │ └── ...
│ ├── man
│ │ └── man1
│ │ ├── r.green.biomassfor.co2.1
│ │ ├── r.green.biomassfor.economic.1
│ │ └── ...
│ └── rest
├── etc
├── libgreen
│ ├── checkparameter.py
│ └── ...
├── libhydro
│ ├── basin.py
│ └── ...
├── modules.xml
└── scripts
    ├── r.green.biomassfor.co2
    ├── r.green.biomassfor.economic
    └── ...
}}}

I would like that both the directories: libgreen and libhydro are
installed inside $GRASS_ADDON_BASE/etc/r.green:

{{{
$ tree $GRASS_ADDON_BASE
/home/pietro/.grass7/addons
├── bin
├── docs
│ ├── html
│ │ ├── grassdocs.css
│ │ ├── r.green.biomassfor.co2.html
│ │ └── ...
│ ├── man
│ │ └── man1
│ │ ├── r.green.biomassfor.co2.1
│ │ ├── r.green.biomassfor.economic.1
│ │ └── ...
│ └── rest
├── etc
│ └── r.green
│ ├── libgreen
│ │ ├── checkparameter.py
│ │ └── ...
│ └──libhydro
│ ├── basin.py
│ └── ...
├── modules.xml
└── scripts
    ├── r.green.biomassfor.co2
    ├── r.green.biomassfor.economic
    └── ...
}}}

I think the problem is due that when in the Makefile I create the
ETCDIR the LIBGREENDIR does not exist yet:
https://trac.osgeo.org/grass/browser/grass-addons/grass7/raster/r.green/libgreen/Makefile#L18

Therefore I've tried adding to the Makefile something like:

{{{
$ svn diff libgreen/Makefile
Index: libgreen/Makefile

--- libgreen/Makefile (revision 65945)
+++ libgreen/Makefile (working copy)
@@ -15,6 +15,9 @@

default: $(PYFILES) $(PYCFILES) $(ETCDIR)/__init__.py $(ETCDIR)/__init__.pyc

+$(LIBGREENDIR):
+ $(MKDIR) $@
+
$(ETCDIR):
        $(MKDIR) $@

}}}

But it continue to install libgreen and libhydro in the
$GRASS_ADDONS_BASE root...

NOTE: if I compile the module with: make MODULE_TOPDIR=$GISBASE both
the directories are created in the correct place:

{{{
$ ls -l $GISBASE/etc/r.green
total 8.0K
drwxr-xr-x 2 pietro pietro 4.0K Aug 17 12:52 libgreen/
drwxr-xr-x 2 pietro pietro 4.0K Aug 17 12:52 libhydro/
}}}

Why?

Someone has an idea on how I could/should fix this?

Pietro

Dear Pietro, devs,

···

2015-08-17 12:57 GMT+02:00 Pietro <peter.zamb@gmail.com>:

Dear devs,

I’ve noticed that r.green module is installing his libraries in the wrong place:

{{{
$ # rm -r $GRASS_ADDON_BASE
$ g.extension extension=r.green
Fetching <r.green> from GRASS GIS Addons repository (be patient)…
Compiling…
Installing…
Updating addons metadata file…
ERROR: Unable to read manual page: [Errno 2] No such file or directory:
‘/home/pietro/.grass7/addons/docs/html/r.green.html’
}}}

that generate a tree directory like:

{{{
$ tree $GRASS_ADDON_BASE
/home/pietro/.grass7/addons
├── bin
├── docs
│ ├── html
│ │ ├── grassdocs.css
│ │ ├── r.green.biomassfor.co2.html
│ │ └── …
│ ├── man
│ │ └── man1
│ │ ├── r.green.biomassfor.co2.1
│ │ ├── r.green.biomassfor.economic.1
│ │ └── …
│ └── rest
├── etc
├── libgreen
│ ├── checkparameter.py
│ └── …
├── libhydro
│ ├── basin.py
│ └── …
├── modules.xml
└── scripts
├── r.green.biomassfor.co2
├── r.green.biomassfor.economic
└── …
}}}

I would like that both the directories: libgreen and libhydro are
installed inside $GRASS_ADDON_BASE/etc/r.green:

{{{
$ tree $GRASS_ADDON_BASE
/home/pietro/.grass7/addons
├── bin
├── docs
│ ├── html
│ │ ├── grassdocs.css
│ │ ├── r.green.biomassfor.co2.html
│ │ └── …
│ ├── man
│ │ └── man1
│ │ ├── r.green.biomassfor.co2.1
│ │ ├── r.green.biomassfor.economic.1
│ │ └── …
│ └── rest
├── etc
│ └── r.green
│ ├── libgreen
│ │ ├── checkparameter.py
│ │ └── …
│ └──libhydro
│ ├── basin.py
│ └── …
├── modules.xml
└── scripts
├── r.green.biomassfor.co2
├── r.green.biomassfor.economic
└── …
}}}

I think the problem is due that when in the Makefile I create the
ETCDIR the LIBGREENDIR does not exist yet:
https://trac.osgeo.org/grass/browser/grass-addons/grass7/raster/r.green/libgreen/Makefile#L18

Therefore I’ve tried adding to the Makefile something like:

{{{
$ svn diff libgreen/Makefile
Index: libgreen/Makefile

— libgreen/Makefile (revision 65945)
+++ libgreen/Makefile (working copy)
@@ -15,6 +15,9 @@

default: $(PYFILES) $(PYCFILES) $(ETCDIR)/init.py $(ETCDIR)/init.pyc

+$(LIBGREENDIR):

  • $(MKDIR) $@

$(ETCDIR):
$(MKDIR) $@

}}}

But it continue to install libgreen and libhydro in the
$GRASS_ADDONS_BASE root…

NOTE: if I compile the module with: make MODULE_TOPDIR=$GISBASE both
the directories are created in the correct place:

{{{
$ ls -l $GISBASE/etc/r.green
total 8.0K
drwxr-xr-x 2 pietro pietro 4.0K Aug 17 12:52 libgreen/
drwxr-xr-x 2 pietro pietro 4.0K Aug 17 12:52 libhydro/
}}}

Why?

Someone has an idea on how I could/should fix this?

Pietro


grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

I have exactly the same problem(described bellow) with installation wx.metadata from addons. Have you figured out this issue?

1)Local installation works well:


matt@matt-pc:~/addons/grass7/gui/wxpython/wx.metadata$ make MODULE_TOPDIR=$HOME/grass_trunk & make MODULE_TOPDIR=$HOME/grass_trunk install
…no errors

matt@matt-pc:~/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/wx.metadata$ tree
.
├── config
│ ├── connections_resources.xml
│ ├── default-sample.cfg
│ ├── init_md.txt
│ ├── keywordConcepts.txt
│ ├── keywordGroups.txt
│ ├── keywordThemes.txt
│ ├── record_metadata_dc.html
│ ├── service_metadata.html
│ ├── xml_highlight.html
│ └── xml_render.html
├── mdlib
│ ├── cswlib.py
│ ├── cswlib.pyc
│ ├── cswutil.py
│ ├── cswutil.pyc
│ ├── mdeditorfactory.py
│ ├── mdeditorfactory.pyc
│ ├── mdgrass.py
│ ├── mdgrass.pyc
│ ├── mdjinjaparser.py
│ ├── mdjinjaparser.pyc
│ ├── mdpdffactory.py
│ ├── mdpdffactory.pyc
│ ├── mdpdftheme.py
│ ├── mdpdftheme.pyc
│ ├── mdutil.py
│ └── mdutil.pyc
└── profiles
├── basicProfile.xml
├── inspireProfile.xml
└── temporalProfile.xml

…everything is correctly placed

  1. Installation from addons doesn’t work correctly


GRASS 7.1.svn (cr-wgs84):~ > g.extension wx.metadata

…successful

matt@matt-pc:~/.grass7/addons$ tree
.
├── bin
├── docs
│ ├── html
│ │ ├── db.csw.admin.html
│ │ ├── db.csw.harvest.html
│ │ ├── db.csw.run.html
│ │ ├── g.gui.cswbrowser.html
│ │ ├── g.gui.metadata.html
│ │ ├── grassdocs.css
│ │ ├── grass_logo.png
│ │ ├── r.info.iso.html
│ │ ├── t.info.iso.html
│ │ └── v.info.iso.html
│ ├── man
│ │ └── man1
│ │ ├── db.csw.admin.1
│ │ ├── db.csw.harvest.1
│ │ ├── db.csw.run.1
│ │ ├── g.gui.cswbrowser.1
│ │ ├── g.gui.metadata.1
│ │ ├── r.info.iso.1
│ │ ├── t.info.iso.1
│ │ └── v.info.iso.1
│ └── rest
├── etc
├── mdlib
│ ├── cswlib.py
│ ├── cswlib.pyc
│ ├── cswutil.py
│ ├── cswutil.pyc
│ ├── mdeditorfactory.py
│ ├── mdeditorfactory.pyc
│ ├── mdgrass.py
│ ├── mdgrass.pyc
│ ├── mdjinjaparser.py
│ ├── mdjinjaparser.pyc
│ ├── mdpdffactory.py
│ ├── mdpdffactory.pyc
│ ├── mdpdftheme.py
│ ├── mdpdftheme.pyc
│ ├── mdutil.py
│ └── mdutil.pyc
├── modules.xml
└── scripts
├── db.csw.admin
├── db.csw.harvest
├── db.csw.run
├── g.gui.cswbrowser
├── g.gui.metadata
├── r.info.iso
├── t.info.iso
└── v.info.iso

failed:

  • dir mdlib is not placed in etc

  • dir config is missing

  • dir profiles is missing

thanks for any advice
Matej

Dear Matej,

On Fri, Aug 21, 2015 at 11:31 AM, Matej Krejci <matejkrejci@gmail.com> wrote:

Dear Pietro, devs,

[...]

I have exactly the same problem(described bellow) with installation
wx.metadata from addons. Have you figured out this issue?

No, not yet... I've also noticed that the link to other grass-addons
it is working properly in the GUI, but not on the manual web page, see
for example:

https://grass.osgeo.org/grass70/manuals/addons/r.modis.html

in SEE ALSO, you can find two links at: r.modis.import and
r.modis.dowload both the links are broken and should be change:

from: https://grass.osgeo.org/grass70/manuals/r.modis.*.html
to: https://grass.osgeo.org/grass70/manuals/addons/r.modis.*.html

But if we change the line:

https://trac.osgeo.org/grass/browser/grass-addons/grass7/raster/r.modis/r.modis.html#L113

from: <a href="r.modis.import.html">r.modis.import</a>,
to: <a href="addons/r.modis.import.html">r.modis.import</a>,

I suspect it will break the manual page in the GUI.

Unfortunately my knowledge on the GRASS make chain is very poor and I
don't know from where should I start to fix these problems.

Any hints?

Pietro