* gnu/packages/python.scm (python-3.9)[arguments]: In the rebuild-bytecode
phase, actully run Python instead of defining an anonymous procedure. While
at it, create all optimization levels with the same command instead of running
once for each level.
"sitecustomize.py" is a native input, so look it up
in 'native-inputs', not 'inputs'.
* gnu/packages/python.scm (customize-site): Look up "sizecustomize.py"
in 'native-inputs', not 'inputs'.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
idle is a programming environment that is not useful for building
packages, but it is still useful for end users. This saves 5MB in the
default output.
* gnu/packages/python.scm (python-2.7)[outputs]: Add `idle'.
[arguments]: Move idle files in the new output.
(wrap-python): Do not wrap idle since it is in a different output.
This is something Fedora already does since 2010, so it should be safe,
and saves a lot of space.
* gnu/packages/patches/python-2.7-no-static-lib.patch: New file.
* gnu/packages/patches/python-3-no-static-lib.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add them.
* gnu/packages/python.scm (python-2.7, python-3): Use them.
As a result, python execution time of scripts is decreased by 6 to 40%.
gnu/packages/python (python-2.7)[arguments]: Add configure and make flags to
optimize the resulting python.
* gnu/packages/python.scm (python2)[arguments]: Remove files built
during the test phase.
(python3)[arguments]: Also remove windows binaries shipped with the
sources.
* gnu/packages/patches/python-2.7-CVE-2021-3177.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/python.scm (python-2.7)[replacement]: New field.
(python-2.7/fixed): New variable.
* gnu/packages/patches/python-3.8-CVE-2021-3177.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/python.scm (python-3.8)[replacement]: New field.
(python-3.8/fixed): New variable.
* gnu/packages/patches/python-3.9-CVE-2021-3177.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/python.scm (python-3.9)[source]: Use it.
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.
Python 3.9 implemented PEP 615 (<)https://www.python.org/dev/peps/pep-0615/>),
which relies on either a compiled time default value or the PYTHONTZPATH
environment variable to find the system tzdata database.
* gnu/packages/python.scm (python-3.9)[native-search-paths]: Add a new search
path specification for PYTHONTZPATH.
* gnu/packages/python.scm (python-3.8): Rename to...
(python-3.9): ... this. Update version to 3.9.1.
[arguments]{make-flags}: Restore test_socket test.
[phases]{unset-SOURCE_DATE_EPOCH, reset-SOURCE_DATE_EPOCH}: Remove phases.
{rebuild-bytecode}: Simplify code. Set the invalidation-mode argument of the
compileall module to "unchecked-hash", to ensure determinism.
(python-3): Adjust to refer to python-3.9.
* gnu/packages/patches/python-3-fix-tests.patch: Rebase and extend patch.
* gnu/packages/patches/python-3.8-fix-tests.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): De-register it.
* gnu/packages/patches/python-3-configure-hurd.patch: this New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/python.scm (python-3.8)[source]: Use it.
[arguments]: Remove "support-hurd-cross-compile" stage.
* gnu/packages/python.scm (python-2.7)[phases]{rebuild-bytecode}: Byte compile
using optimization level, -OO. Provide the output directory as the source
argument to 'compileall', instead of looping over each individual source file.
* gnu/packages/python.scm (pypy3): New public variable.
* gnu/packages/patches/pypy3-7.3.1-fix-tests.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/packages/python.scm (python-2.7)[arguments]: Add `fix-regen'
stage to correct a reference to "/usr".
(python-3.8): Remove build fix for 2.x..3.5.9 that breaks on 3.8.2.
This follows up 67ca82e6dd which was ineffective
when running 'guix build --system=armhf-linux python' on e.g. x86_64-linux
because the conditional would always return the native system.
* gnu/packages/python.scm (python-3.8)[native-inputs]: Add "arm-alignment.patch".
[arguments]: Add phase to apply it.
[source](patches): Remove it.
* gnu/packages/commencement.scm (python-boot0): Prevent inheriting the phase.
* gnu/packages/patches/python-3-arm-alignment.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/python.scm (python-3.8)[source](patches): Add it when the
current system is ARM.