guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Python: inputs vs. propagated inputs


From: Hartmut Goebel
Subject: Python: inputs vs. propagated inputs
Date: Sun, 18 Sep 2016 20:53:56 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0

Hi,

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 hints.

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 like this:
For Python modules
- Every Python-package required at run-time need to go into propagated inputs.
- 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.

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | address@hidden               |
| www.crazy-compilers.com | compilers which you thought are impossible |

reply via email to

[Prev in Thread] Current Thread [Next in Thread]