summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-02-02 13:45:59 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-02-02 13:48:35 -0500
commit889f425b35290240e618d851d492453c4fc36b62 (patch)
tree8f3b65355f643e4e505b38a9d198b7ff8f54dbea
parent2c9d481c9098e18accd179f11edc1164e75f228e (diff)
downloadguix-889f425b35290240e618d851d492453c4fc36b62.tar.gz
import: gnu: Fix the detection of non-GNU packages.
* guix/import/gnu.scm (gnu->guix-package): Move the 'find-package' call before
the 'latest-release' call, which would fail when the package did not have an
entry on the FTP server.
-rw-r--r--guix/import/gnu.scm27
1 files changed, 13 insertions, 14 deletions
diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm
index c26faff04b..51d5b77d34 100644
--- a/guix/import/gnu.scm
+++ b/guix/import/gnu.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -111,19 +112,17 @@ download policy (see 'download-tarball' for details.)"
   "Return the package declaration for NAME as an s-expression.  Use
 KEY-DOWNLOAD as the OpenPGP key download policy (see 'download-tarball' for
 details.)"
-  (match (latest-release name)
-    ((? upstream-source? release)
-     (let ((version (upstream-source-version release)))
-       (match (find-package name)
-         (#f
-          (raise (formatted-message
-                  (G_ "couldn't find meta-data for GNU ~a")
-                  name)))
-         (info
-          (gnu-package->sexp info release #:key-download key-download)))))
-    (_
-     (raise (formatted-message
-             (G_ "failed to determine latest release of GNU ~a")
-             name)))))
+  (let ((package (find-package name)))
+    (unless package
+      (raise (formatted-message (G_ "no GNU package found for ~a") name)))
+
+    (match (latest-release name)
+      ((? upstream-source? release)
+       (let ((version (upstream-source-version release)))
+         (gnu-package->sexp package release #:key-download key-download)))
+      (_
+       (raise (formatted-message
+               (G_ "failed to determine latest release of GNU ~a")
+               name))))))
 
 ;;; gnu.scm ends here