[GRASS-dev] [GRASS GIS] #2895: Define dependencies for GRASS addons

Moritz Lennert mlennert at club.worldonline.be
Fri Dec 18 03:18:07 PST 2020



Am 18. Dezember 2020 09:57:53 MEZ schrieb GRASS GIS <trac at osgeo.org>:
>#2895: Define dependencies for GRASS addons
>--------------------------+-------------------------
>  Reporter:  pmav99       |      Owner:  grass-dev@…
>      Type:  enhancement  |     Status:  new
>  Priority:  normal       |  Milestone:  7.8.3
> Component:  Default      |    Version:  unspecified
>Resolution:               |   Keywords:  g.extension
>       CPU:  Unspecified  |   Platform:  Unspecified
>--------------------------+-------------------------
>
>Comment (by sbl):
>
> Replying to [comment:20 wenzeslaus]:
> > > Silently installing stuff can be a bit scary...
> >
> > Why do you think it is scary for GRASS GIS? pip, R, conda, apt, yum, ...
> all install dependencies of a package you asked for. Why this should not
> happen for GRASS GIS?

I would personally plead for the automatic installation of dependencies only as optional. I always prefer to install dependencies via my distribution's package manager instead of automatic installation via tools such as conda, pip or others. And I don't think it realistic to take into account all different package management systems within GRASS GIS.

So, +1 to a dependency check accompanied by the option to install the missing dependencies, but not automatic installation per se.

 




>
> Yes, you are right.
>
> So, how would we setup a requirements.txt?
>
> Should it contain different sections, like e.g.
> {{{
> GRASS_addons
>     r.area
>
> R_packages
>     ggplot2
>
> Python_libraries
>     rpy2>=1.1
>
> cmd_tools
>     iconv
>     cs2cs
>
> libraries
>     libgdal-grass
> }}}
>
> Cause the way these dependencies are installed varies a bit, with a
> dpendency_check function for each of them...
>
> Maybe better with a dependency json:
>
> {{{
> {
> "GRASS_addons": [
>     {
>       "name": "r.area"
>     }],
> "Python_libraries": [
>     {
>       "name": "rpy2",
>       "version": "1.1"
>       "version_check": ">="
>     }], ...
> }
> }}}
>
>
> In the functions we might have to think about OS specific aspects (package
> manager (incl. conda vs. pip), library names) as well as maybe versions
> (e.g. numpy>=1.17).


More information about the grass-dev mailing list