From 6f8fe4b29e3f69b98c388e3c2a8babeb9232408c Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sat, 13 Dec 2014 22:19:08 +0100 Subject: [PATCH] build/python-build-system: Fix easy-install.pth collisions. * guix/build/python-build-system.scm (rename-pth-file): New rename-pth-file phase and corresponding function. --- guix/build/python-build-system.scm | 35 ++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm index 2f3d04a5d8..74ba0c765d 100644 --- a/guix/build/python-build-system.scm +++ b/guix/build/python-build-system.scm @@ -105,19 +105,36 @@ (define bindirs files))) bindirs))) +(define* (rename-pth-file #:key name inputs outputs #:allow-other-keys) + "Rename easy-install.pth to NAME.pth to avoid conflicts between packages +installed with setuptools." + (let* ((out (assoc-ref outputs "out")) + (python (assoc-ref inputs "python")) + (site-packages (string-append out "/lib/python" + (get-python-version python) + "/site-packages")) + (easy-install-pth (string-append site-packages "/easy-install.pth")) + (new-pth (string-append site-packages "/" name ".pth"))) + (when (file-exists? easy-install-pth) + (rename-file easy-install-pth new-pth)) + #t)) + (define %standard-phases ;; 'configure' and 'build' phases are not needed. Everything is done during ;; 'install'. - (alist-cons-after - 'install 'wrap - wrap - (alist-replace - 'build build + (alist-cons-before + 'strip 'rename-pth-file + rename-pth-file + (alist-cons-after + 'install 'wrap + wrap (alist-replace - 'check check - (alist-replace 'install install - (alist-delete 'configure - gnu:%standard-phases)))))) + 'build build + (alist-replace + 'check check + (alist-replace 'install install + (alist-delete 'configure + gnu:%standard-phases))))))) (define* (python-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args)