~ruther/guix-local

22fc581db3a4985d1f8c6fd6b9763392c638c35b — Mathieu Othacehe 8 years ago db42760
import: pypi: Robustify latest-release.

* guix/import/pypi.scm (latest-release): Check if pypi-fetch has
  failed. If so return #f, else construct the <upstream-source>.
1 files changed, 12 insertions(+), 9 deletions(-)

M guix/import/pypi.scm
M guix/import/pypi.scm => guix/import/pypi.scm +12 -9
@@ 2,6 2,7 @@
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 322,15 323,17 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."

(define (latest-release package)
  "Return an <upstream-source> for the latest release of PACKAGE."
  (guard (c ((missing-source-error? c) #f))
    (let* ((pypi-name (guix-package->pypi-name package))
           (metadata (pypi-fetch pypi-name))
           (version (assoc-ref* metadata "info" "version"))
           (url (assoc-ref (latest-source-release metadata) "url")))
      (upstream-source
       (package (package-name package))
       (version version)
       (urls (list url))))))
  (let* ((pypi-name    (guix-package->pypi-name package))
         (pypi-package (pypi-fetch pypi-name)))
    (and pypi-package
         (guard (c ((missing-source-error? c) #f))
           (let* ((metadata pypi-package)
                  (version (assoc-ref* metadata "info" "version"))
                  (url (assoc-ref (latest-source-release metadata) "url")))
             (upstream-source
              (package (package-name package))
              (version version)
              (urls (list url))))))))

(define %pypi-updater
  (upstream-updater