From 91cf9d17f02fdf82424c7f2dda2c3651f992bf13 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 22 Jan 2021 09:15:46 -0500 Subject: [PATCH] build/python: Always add the install prefix to the Guix PYTHONPATH. 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. --- guix/build/python-build-system.scm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm index 8e359398e1..9f5fad7faf 100644 --- a/guix/build/python-build-system.scm +++ b/guix/build/python-build-system.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2018 Arun Isaac -;;; Copyright © 2019, 2020 Maxim Cournoyer +;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020 Efraim Flashner ;;; @@ -170,13 +170,14 @@ (define (site-packages inputs outputs) (string-append out "/lib/python" (python-version python) "/site-packages"))) (define (add-installed-pythonpath inputs outputs) - "Add the Python site-package of OUTPUT to GUIX_PYTHONPATH. This is useful -when running checks after installing the package." - (let ((old-path (getenv "GUIX_PYTHONPATH")) - (new-path (site-packages inputs outputs))) - (setenv "GUIX_PYTHONPATH" - (string-append new-path - (if old-path (string-append ":" old-path) ""))))) + "Prepend the site-package of OUTPUT to GUIX_PYTHONPATH. This is useful when +running checks after installing the package." + (setenv "GUIX_PYTHONPATH" (string-append (site-packages inputs outputs) ":" + (getenv "GUIX_PYTHONPATH")))) + +(define* (add-install-to-pythonpath #:key inputs outputs #:allow-other-keys) + "A phase that just wraps the 'add-installed-pythonpath' procedure." + (add-installed-pythonpath inputs outputs)) (define* (install #:key inputs outputs (configure-flags '()) use-setuptools? #:allow-other-keys) @@ -294,6 +295,7 @@ (define %standard-phases (replace 'install install) (add-after 'install 'check check) (add-after 'install 'wrap wrap) + (add-before 'check 'add-install-to-pythonpath add-install-to-pythonpath) (add-before 'strip 'rename-pth-file rename-pth-file))) (define* (python-build #:key inputs (phases %standard-phases)