Subject: [PATCH 4/7] gnu: python-numpy: Update to 1.12.0.

From: Thomas Danckaert <[email-masked]>
Date: Wed, 22 Feb 2017 12:22:50 +0100

From: Thomas Danckaert <[email-masked]>

* gnu/packages/python.scm (python-numpy): Update to 1.12.0.
  [source]: Use github instead of sourceforge.
  [native-inputs]: Add python-cython.

  To simplify the handling of dependency cycles (numpy documentation depends
  on matplotlib, which depends on numpy), we split out the documentation into
  a separate package:
  (python-numpy-bootstrap, python2-numpy-bootstrap): Remove variables.
  (python-numpy-documentation, python2-numpy-documentation): New variables.
---
 gnu/packages/python.scm | 146 ++++++++++++++++++++++++++----------------------
 1 file changed, 79 insertions(+), 67 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 95cea0e89..c45cc9db4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3278,24 +3278,26 @@ between language specification and implementation aspects.")
 
 ;; This version of numpy is missing the documentation and is only used to
 ;; build matplotlib which is required to build numpy's documentation.
-(define python-numpy-bootstrap
+(define-public python-numpy
   (package
-    (name "python-numpy-bootstrap")
-    (version "1.10.4")
+    (name "python-numpy")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://sourceforge/numpy/NumPy/" version
-                           "/numpy-" version ".tar.gz"))
+       (uri (string-append
+             "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1bjjhvncraka5s6i4lg644jrxij6bvycxy7an20gcz3a0m11iygp"))))
+         "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
     (build-system python-build-system)
     (inputs
      `(("openblas" ,openblas)
        ("lapack" ,lapack)))
     (native-inputs
-     `(("python-nose" ,python-nose)
+     `(("python-cython" ,python-cython)
+       ("python-nose" ,python-nose)
        ("gfortran" ,gfortran)))
     (arguments
      `(#:phases
@@ -3344,8 +3346,8 @@ and Fortran code, useful linear algebra, Fourier transform, and random number
 capabilities.")
     (license license:bsd-3)))
 
-(define python2-numpy-bootstrap
-  (package-with-python2 python-numpy-bootstrap))
+(define-public python2-numpy
+  (package-with-python2 python-numpy))
 
 (define-public python-munch
   (package
@@ -3401,69 +3403,79 @@ Models, is a program for performing both single-SNP and SNP-set genome-wide
 association studies (GWAS) on extremely large data sets.")
     (license license:asl2.0)))
 
-(define-public python-numpy
-  (package (inherit python-numpy-bootstrap)
-    (name "python-numpy")
-    (outputs '("out" "doc"))
-    (inputs
-     `(("which" ,which)
-       ,@(package-inputs python-numpy-bootstrap)))
-    (propagated-inputs
-     `(("python-matplotlib" ,python-matplotlib)
-       ("python-pyparsing" ,python-pyparsing)
-       ,@(package-propagated-inputs python-numpy-bootstrap)))
+(define-public python-numpy-documentation
+  (package (inherit python-numpy)
+    (name "python-numpy-documentation")
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("python-matplotlib" ,python-matplotlib)
+       ("python-numpy" ,python-numpy)
+       ("pkg-config" ,pkg-config)
        ("python-sphinx" ,python-sphinx)
        ("python-numpydoc" ,python-numpydoc)
        ("texlive" ,texlive)
        ("texinfo" ,texinfo)
        ("perl" ,perl)
-       ,@(package-native-inputs python-numpy-bootstrap)))
-    (arguments
-     `(,@(substitute-keyword-arguments
-             (package-arguments python-numpy-bootstrap)
-           ((#:phases phases)
-            `(alist-cons-after
-              'install 'install-doc
-              (lambda* (#:key inputs outputs #:allow-other-keys)
-                ;; Make installed package available for building the
-                ;; documentation
-                (add-installed-pythonpath inputs outputs)
-                (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
-                       (doc (string-append
-                             data "/doc/" ,name "-"
-                             ,(package-version python-numpy-bootstrap)))
-                       (info (string-append data "/info"))
-                       (html (string-append doc "/html"))
-                       (pyver ,(string-append "PYVER=")))
-                  (with-directory-excursion "doc"
-                    (mkdir-p html)
-                    (system* "make" "html" pyver)
-                    (system* "make" "latex" "PAPER=a4" pyver)
-                    (system* "make" "-C" "build/latex"
-                             "all-pdf" "PAPER=a4" pyver)
-                    ;; FIXME: Generation of the info file fails.
-                    ;; (system* "make" "info" pyver)
-                    ;; (mkdir-p info)
-                    ;; (copy-file "build/texinfo/numpy.info"
-                    ;;            (string-append info "/numpy.info"))
-                    (for-each (lambda (file)
-                                (copy-file (string-append "build/latex" file)
-                                           (string-append doc file)))
-                              '("/numpy-ref.pdf" "/numpy-user.pdf"))
-                    (with-directory-excursion "build/html"
-                      (for-each (lambda (file)
-                                  (let* ((dir (dirname file))
-                                         (tgt-dir (string-append html "/" dir)))
-                                    (unless (equal? "." dir)
-                                      (mkdir-p tgt-dir))
-                                    (install-file file html)))
-                                (find-files "." ".*"))))))
-              ,phases)))))))
-
-(define-public python2-numpy
-  (package-with-python2 python-numpy))
+       ("scipy-sphinx-theme"
+        ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/scipy/scipy-sphinx-theme.git")
+                 (commit "c466764e22")))
+           (sha256
+            (base32
+                "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
+       ,@(package-native-inputs python-numpy)))
+    (arguments
+     `(#:tests? #f ; we're only generating the documentation
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Make installed package available for building the
+             ;; documentation
+             (add-installed-pythonpath inputs outputs)
+             (let* ((data (string-append (assoc-ref outputs "out") "/share"))
+                    (doc (string-append
+                          data "/doc/" ,name "-"
+                          ,(package-version python-numpy)))
+                    (info-reader (string-append data "/info"))
+                    (html (string-append doc "/html"))
+                    (scipy-sphinx-theme "scipy-sphinx-theme")
+                    (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
+                    (pyver ,(string-append "PYVER=")))
+               (with-directory-excursion "doc"
+                 (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
+                 (mkdir-p html)
+                 (system* "make" "html" pyver)
+                 (system* "make" "latex" "PAPER=a4" pyver)
+                 (system* "make" "-C" "build/latex"
+                          "all-pdf" "PAPER=a4" pyver)
+                 ;; FIXME: Generation of the info file fails.
+                 ;; (system* "make" "info" pyver)
+                 ;; (mkdir-p info)
+                 ;; (copy-file "build/texinfo/numpy.info"
+                 ;;            (string-append info "/numpy.info"))
+                 (for-each (lambda (file)
+                             (copy-file (string-append "build/latex" file)
+                                        (string-append doc file)))
+                           '("/numpy-ref.pdf" "/numpy-user.pdf"))
+                 (with-directory-excursion "build/html"
+                   (for-each (lambda (file)
+                               (let* ((dir (dirname file))
+                                      (tgt-dir (string-append html "/" dir)))
+                                 (unless (equal? "." dir)
+                                   (mkdir-p tgt-dir))
+                                 (install-file file html)))
+                             (find-files "." ".*"))))))))))
+    (synopsis "Documentation for the python-numpy package")))
+
+(define-public python2-numpy-documentation
+  (let ((numpy-documentation (package-with-python2 python-numpy-documentation)))
+    (package
+      (inherit numpy-documentation)
+      (native-inputs `(("python2-functools32" ,python2-functools32)
+                       ,@(package-native-inputs numpy-documentation))))))
 
 (define-public python-pygit2
   (package
@@ -3682,7 +3694,7 @@ between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
        ("gobject-introspection" ,gobject-introspection)
        ("python-tkinter" ,python "tk")
        ("python-dateutil" ,python-dateutil-2)
-       ("python-numpy" ,python-numpy-bootstrap)
+       ("python-numpy" ,python-numpy)
        ("python-pillow" ,python-pillow)
        ("python-pytz" ,python-pytz)
        ("python-six" ,python-six)
-- 
2.11.1