[GRASS-dev] [GRASS GIS] #2895: Define dependencies for GRASS addons
GRASS GIS
trac at osgeo.org
Fri Mar 12 20:23:34 PST 2021
#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 wenzeslaus):
Replying to [comment:24 hcho]:
> Replying to [comment:23 sbl]:
> {{{
> cmd R 3.4 >=
> cmd cmdfail 3.4 >=
> R_package igraph 0.7.1 >=
> R_package R_fail_test 0.7.1 >=
> }}}
> looks unnatural and error-prone. Would it be possible to change this
format to
> {{{
> cmd R >= 3.4
> cmd cmdfail >= 3.4
> R_package igraph >= 0.7.1
> R_package R_fail_test >= 0.7.1
> }}}
Instead of adding another dependency format which is a custom format, I
would suggest at least using an existing general format, e.g., JSON.
However, going a step further might be even better, Conda has a somewhat
general dependency file format (environment.yml) or, alternatively, tools
like [https://mybinder.readthedocs.io/en/latest/using/config_files.html
Binder] take advantage of existing dependency formats, i.e., use
requirements.txt for Python, DESCRIPTION for R, environment.yml for Conda,
etc. When you consider setup.py for Python, this transitions nicely to my
suggestion about supporting modules which are packages.
> Also, how about defining dependency information inside modules
themselves instead of using an external file? We already have
`G_option_*()` functions to handle option dependency. Maybe,
`G_module_requires(void *first, ...), G_module_requires_python(void
*first, ...), G_module_requires_r(void *first, ...)` ... Then, add a new
global flag `--dependencies` to spit out dependency information?
In this case, you would have to compile and run the module before figuring
out the dependencies. This would not be possible for C/C++ and it still
insist on lazy imports. Even if we say these two issues are not bothering
us in the end given other issues, this would be extra confusing since it
is exactly the opposite of what any other dependency/packaging system is
doing.
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/2895#comment:26>
GRASS GIS <https://grass.osgeo.org>
More information about the grass-dev
mailing list