* gnu/packages/machine-learning.scm (ghmm): Remove trailing #t.
[phases]: Do not reorder the check phase after the install phase.
{fix-PYTHONPATH}: Remove phase.
* gnu/packages/check.scm (python-pyhamcrest): Update to 2.0.2.
[propagated-inputs]: Remove python-six.
[phases]{check}: Do not set PYTHONPATH.
(python2-pyhamcrest): Remove variable.
* gnu/packages/virtualization.scm (ganeti): Remove trailing #t.
[phases]{build-bash-completions}: Do not set PYTHONPATH.
{pre-check}: Do patch PYTHONPATH from script.
{wrap}: Use the new GUIX_PYTHONPATH environment variable.
* gnu/packages/web.scm (linkchecker): Remove trailing #t.
[phases]: Do not reorder the check phase after the install phase.
{check}: Do not set PYTHONPATH.
* gnu/packages/bioinformatics.scm (bamm): Delete trailing #t.
[phases]{check}: Override rather than delete phase. Remove trailing #t.
{post-install-check}: Delete phase.
{wrap-executable}: Also wrap with the new GUIX_PYTHONPATH.
* gnu/packages/bioinformatics.scm (python-pysam)[arguments]: Remove the
'#:modules' argument.
[phases]: Remove trailing #t.
{check}: Do not manually set PYTHONPATH.
* gnu/packages/bioinformatics.scm (python-pybedtools): Remove trailing #t.
[phases]{check}: Do not manually set PYTHONPATH.
[arguments]: Remove the '#:modules' argument.
Add a new phase validating the usability of installed Python packages.
* gnu/packages/aux-files/python/sanity-check.py: New file.
* Makefile.am (AUX_FILES): Register it.
* guix/build-system/python.scm (sanity-check.py): New variable.
(lower): Add the script as an implicit input.
* guix/build/python-build-system.scm: Remove trailing #t.
(sanity-check): New phase.
(%standard-phases): Use it.
* tests/builders.scm: (make-python-dummy)
(dummy-ok, dummy-dummy-nosetuptools, dummy-fail-requirements)
(dummy-fail-import, dummy-fail-console-script): New variables.
("python-build-system: dummy-ok")
("python-build-system: dummy-dummy-nosetuptools")
("python-build-system: dummy-fail-requirements")
("python-build-system: dummy-fail-import")
("python-build-system: dummy-fail-console-script"): Add tests.
This also to reduce the need for boilerplate code found in check phase
overrides.
* guix/build/python-build-system.scm (add-install-to-path): New phase.
(%standard-phases): Order it before the check phase.
This is to remove the need for common boilerplate code in check phase
overrides.
* guix/build/python-build-system.scm
(add-installed-pythonpath): Streamline. This phase depends on the presence of
a "python" input; thus GUIX_PYTHONPATH is guaranteed to be defined. Update doc.
(add-install-to-pythonpath): New phase.
(%standard-phases): Order it before the check phase.
Using PYTHONPATH as a mean to discover the Python packages had the following
issues:
1. It is not versioned, so different versions of Python would clash if
installed in a shared profile.
2. It would interfere with the host Python site on foreign
distributions, sometimes preventing a a user to login their GDM
session (!).
3. It would take precedence over user installed Python packages
installed through pip.
4. It would leak into Python virtualenvs, which are supposed to create
isolated Python environments.
This changes fixes the above issues by making use of a sitecustomize.py
module. The newly introduced GUIX_PYTHONPATH environment variable is read
from the environment, filtered for the current Python version of the
interpreter, and spliced in 'sys.path' just before Python's own site location,
which provides the expected behavior.
* gnu/packages/aux-files/python/sitecustomize.py: New file.
* Makefile.am: Register it.
* gnu/packages/python.scm (customize-site)
(guix-pythonpath-search-path): New procedures.
(python-2.7)[phases]{install-sitecustomize.py}: New phase.
[native-inputs]{sitecustomize.py}: New input.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
(python-3.9)[native-search-paths]: Likewise.
[phases]{install-sitecustomize}: Override with correct version.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
* gnu/packages/commencement.scm (python-boot0):
[phases]{install-sitecustomize}: Likewise.
[native-inputs]{sitecustomize.py}: New input.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
* guix/build/python-build-system.scm (site-packages): Do not add a trailing
'/'.
squash! gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH.
* guix/channels.scm (sexp->channel, manifest-entry-channel): New
procedures.
(profile-channels): Replace lambda by 'manifest-entry-channel'.
(channel-instance->sexp): New procedure.
(channel-instances->manifest)[instance->entry]: Use
'channel-instance->sexp' instead of inline code.
* guix/scripts/package.scm (export-manifest): New procedure.
(show-help, %options): Add '--export-manifest'.
(process-query): Honor it.
* guix/build/profiles.scm (build-profile): Mention it.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Document it.
This test goes from 58s to 10s wall-clock time.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.
* tests/packages.scm ("fold-available-packages with/without cache"):
Remove 'find-duplicates'. Add 'list->set*' and use it instead of
'find-duplicates', 'delete-duplicates', and 'lset='.
This allows users to use '--with-debug-info=rdma-core' and is otherwise
equivalent to "Release".
* gnu/packages/linux.scm (rdma-core)[arguments]: Remove #:build-type.
Fixes <https://bugs.gnu.org/46229>.
This flag was added in commit 2b14c60d38.
It is apparently no longer needed. Worse, it now causes segfaults when
used with Omni-Path devices, as reported in the bug above.
* gnu/packages/linux.scm (rdma-core)[arguments]: Remove
"-DIOCTL_MODE=write" from #:configure-flags.