I still do not get whether python packages required at run-time need to
be inputs or propagated inputs.
The part about inputs, native-inputs and propagated-inputs in section
"package Reference" explicitly states Python as an example where
propagated-inputs are needed. Neither the section about the
python-build-system nor the python packaging guidelines give any other
In gnu/packages/python.scm there are modules using only inputs (e.g.
python-ccm), some are using propagated-inputs (e.g.
python-scikit-image), some using both (e.g. python-paramiko). I can not
see any clear rule being followed.
Also I see a lot of packages defining python-node, python-mock or
python-pytest as inputs (e.g. python-mathplotlib). But these package are
for tests only and tests AFAIK are never run when cross-compiling. Thus
these packages ASAIK are never needed as inputs, only as native-inputs.
I'd like to understand when to put a package where and have a clear rule
For Python modules
- Every Python-package required at run-time need to go into
- Python packages required only for building or testing go into
native-inputs. Examples are setuptools, pytest, mock, and nose. Of
course if one of these packages is required at run-time, it needs to
be set in propagated-inputs.
- "inputs" only contain programs or C-libraries (and such) required
for building python packages containing c-extensions (or such).
- If a Python package has optional extra dependencies
(extras_require), not these are not listed here at all - except if
there is a test-case in which case they are added to native-inputs.
- If a packages has complicated optional extra dependencies you may
want to define another package to ease resolving these dependencies
for the user. E.g. python-projectaaa-ssh inherits python-projectaaa
and adds the dependencies required for the "ssh" extra feature.
Please comment on these rules. If we agree on a ruleset, I'll prepare a
path for the documentation.
| Hartmut Goebel | h.goe...@crazy-compilers.com |
| www.crazy-compilers.com | compilers which you thought are impossible |