summaryrefslogtreecommitdiff
path: root/guix/build/python-build-system.scm
AgeCommit message (Collapse)Author
2021-06-04python-build-system: Look up the interpreter in 'inputs'.Maxime Devos
* guix/build/python-build-system.scm (wrap): Pass the shell interpreter from 'inputs' to 'wrap-program' using 'search-input-file'. Partially-Fixes: <https://issues.guix.gnu.org/47869> Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-22utils: Rename 'wrapper?' to 'wrapped-program?'.Brendan Tildesley
* guix/build/utils.scm (wrap-program): The wrapper? procedure is incorrectly named as it actually checks to see if prog is the original program that was moved, not the wrapper. * guix/build/python-build-system: (wrap): Use renamed wrapped-program?. * gnu/packages/ebook.scm (calibre)[arguments]: Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-02-03build: python: Fix build phases ordering.Maxim Cournoyer
The wrap phase was happening before the installed site location was added to GUIX_PYTHONPATH, causing wrapped commands to not find their own Python libraries. * guix/build/python-build-system.scm (%standard-phases): Explicit the sequential ordering of phases using add-after directives, so that the wrap phase occurs after the add-install-to-pythonpath and add-install-to-path phases.
2021-02-01build/python: Add a sanity check phase.Lars-Dominik Braun
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.
2021-02-01build/python: Adjust wrap phase to use the new GUIX_PYTHONPATH.Maxim Cournoyer
* guix/build/python-build-system.scm (wrap): Adjust to use the new GUIX_PYTHONPATH. Remove trailing #t.
2021-02-01build/python: Add the installation bin directory to PATH.Maxim Cournoyer
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.
2021-02-01build/python: Always add the install prefix to the Guix PYTHONPATH.Maxim Cournoyer
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.
2021-02-01build/python: Replace PYTHONPATH by GUIX_PYTHONPATH.Maxim Cournoyer
* guix/build/python-build-system.scm (add-installed-pythonpath): Replace "PYTHONPATH" by "GUIX_PYTHONPATH".
2021-02-01gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH.Maxim Cournoyer
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.
2020-12-13build/python: Fix cythonize check phase.Efraim Flashner
* guix/build/python-build-system.scm (ensure-no-cythonized-files): Use format when printing the warning.
2020-12-09build/python: Check for cythonized files.Efraim Flashner
* guix/build/python-build-system.scm (ensure-no-cythonized-files): New procedure. (%standard-phases): Add it.
2020-11-20build-system/python: Set PYTHONDONTWRITEBYTECODE.Maxim Cournoyer
* guix/build/python-build-system.scm (enable-bytecode-determinism): Set PYTHONDONTWRITEBYTECODE.
2020-10-20build-system/python: Revert changing of phase order.Maxim Cournoyer
Commit c94a2864d4 moved the 'check' phase back into its original place before the 'install' phase, but such a change would require adapting the definition of many Python packages which have come to rely on such phase ordering. * guix/build/python-build-system.scm (%standard-phases): Move the check phase back after the install phase, and update comment.
2020-10-19build-system/python: Do not embed timestamps in the .pyc byte code files.Maxim Cournoyer
Fixes <https://issues.guix.gnu.org/22129>. A previously worked around problem where running the test suite after byte compiling the sources in commit 6bbb37a545912c6bb2513ee08587ee4fe39cc330 could be broken by adding built sources to the PYTHONPATH, as is done for python-matplotlib and many others. This seems to be caused by the timestamps embedded in the sources (mtime), that can somehow change when running the tests, or by picking up the different installed source files mtimes when their location is added to the PYTHONPATH. Since Python 3.7.0, it is possible to produce .pyc byte code files that do not embed any timestamp, which solves the problem in a definitive way. This patch makes use of this new feature. * guix/build/python-build-system.scm (install): Add '--no-compile' parameter to setup.py, and instead invoke the 'compileall' module with the "--invalidation-mode=unchecked-hash" option to byte compile the source files. (%standard-phases): Revert the workaround that moved the check phase after the install phase, as it is no longer necessary. Update comment. Reported-by: Mark H Weaver <mhw@netris.org>
2020-07-18build-system/python: Install to the python output if present.Jakub Kądziołka
* gnu/build/python-build-system.scm (python-output): New procedure. (site-packages, install): Use python-output to find the output path. (wrap, rename-pth-file): Use site-packages where appropriate. * doc/guix.texi (Build Systems): Mention the new behavior.