~ruther/guix-local

824af8cadc1b4f1ac7a859f3d18cbe69b195a844 — Andreas Enge 12 years ago 73adf22
guix: python: Create module installation path and add it to PYTHONPATH during
  the installation phase.

* guix/build/python-build-system.scm (get-python-version): New procedure.
* guix/build/python-build-system.scm (install): Create and add path.
* gnu/packages/python.scm (python-setuptools): Drop path creation code.
2 files changed, 20 insertions(+), 19 deletions(-)

M gnu/packages/python.scm
M guix/build/python-build-system.scm
M gnu/packages/python.scm => gnu/packages/python.scm +1 -15
@@ 262,25 262,11 @@ etc. ")
        "0hl9sa5xr9bi2ifq51wy1bawsjv5nzvpbac7m9z1ciz778874csf"))))
    (build-system python-build-system)
    (arguments
     `(#:tests? #f
     `(#:tests? #f))
         ;;FIXME: test_sdist_with_utf8_encoded_filename fails in
         ;; /tmp/nix-build-python2-setuptools-1.1.4.drv-0/setuptools-1.1.4/setuptools/tests/test_sdist.py"
         ;; line 354
         ;; The tests pass with Python 2.7.5.
       #:phases
         (alist-replace
          'install
          (lambda* (#:key outputs #:allow-other-keys #:rest args)
            (let* ((install (assoc-ref %standard-phases 'install))
                   (out (assoc-ref outputs "out"))
                   (python (assoc-ref %build-inputs "python"))
                   (python-version (string-take (string-take-right python 5) 3))
                   (path (string-append out "/lib/python" python-version
                                        "/site-packages/")))
              (mkdir-p path)
              (setenv "PYTHONPATH" path)
              (apply install args)))
          %standard-phases)))
    (home-page "https://pypi.python.org/pypi/setuptools")
    (synopsis
     "Library designed to facilitate packaging Python projects")

M guix/build/python-build-system.scm => guix/build/python-build-system.scm +19 -4
@@ 54,12 54,27 @@
    (call-setuppy test-target '())
    #t))

(define* (install #:key outputs (configure-flags '())
(define (get-python-version python)
  (string-take (string-take-right python 5) 3))

(define* (install #:key outputs inputs (configure-flags '())
                  #:allow-other-keys)
  "Install a given Python package."
  (let* ((out (assoc-ref outputs "out"))
         (params (append (list (string-append "--prefix=" out))
                         configure-flags)))
                         configure-flags))
         (python-version (get-python-version (assoc-ref inputs "python")))
         (old-path (getenv "PYTHONPATH"))
         (add-path (string-append out "/lib/python" python-version
                                  "/site-packages/")))
        ;; create the module installation directory and add it to PYTHONPATH
        ;; to make setuptools happy
        (mkdir-p add-path)
        (setenv "PYTHONPATH"
                (string-append (if old-path
                                   (string-append old-path ":")
                                   "")
                               add-path))
        (call-setuppy "install" params)))

(define* (wrap #:key inputs outputs #:allow-other-keys)


@@ 79,10 94,10 @@

  (let* ((out  (assoc-ref outputs "out"))
         (python (assoc-ref inputs "python"))
         (python-version (string-take (string-take-right python 5) 3))
         (var `("PYTHONPATH" prefix
                ,(cons (string-append out "/lib/python"
                                      python-version "/site-packages")
                                      (get-python-version python)
                                      "/site-packages")
                       (search-path-as-string->list
                        (or (getenv "PYTHONPATH") ""))))))
    (for-each (lambda (dir)