import/elpa: Abort early on failure to fetch meta data.

* guix/import/elpa.scm (elpa->guix-package): Raise condition instead of
returning #FALSE.
* guix/scripts/import/elpa.scm (guix-import-elpa): Handle conditions when
importing recursively.
This commit is contained in:
Ricardo Wurmus 2020-12-31 15:50:48 +01:00
parent e3eea177c8
commit f249af3086
No known key found for this signature in database
GPG key ID: 197A5888235FACAC
2 changed files with 17 additions and 8 deletions

View file

@ -3,6 +3,7 @@
;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -29,6 +30,8 @@ (define-module (guix import elpa)
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module ((guix download) #:select (download-to-store))
#:use-module (guix import utils)
#:use-module (guix http-client)
@ -392,7 +395,12 @@ (define melpa-source
(define* (elpa->guix-package name #:key (repo 'gnu) version)
"Fetch the package NAME from REPO and produce a Guix package S-expression."
(match (fetch-elpa-package name repo)
(#f #f)
(#false
(raise (condition
(&message
(message (format #false
"couldn't find meta-data for ELPA package `~a'."
name))))))
(package
;; ELPA is known to contain only GPLv3+ code. Other repos may contain
;; code under other license but there's no license metadata.

View file

@ -96,13 +96,14 @@ (define (parse-options)
(match args
((package-name)
(if (assoc-ref opts 'recursive)
(map (match-lambda
((and ('package ('name name) . rest) pkg)
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(elpa-recursive-import package-name
(or (assoc-ref opts 'repo) 'gnu)))
(with-error-handling
(map (match-lambda
((and ('package ('name name) . rest) pkg)
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(elpa-recursive-import package-name
(or (assoc-ref opts 'repo) 'gnu))))
(let ((sexp (elpa->guix-package package-name
#:repo (assoc-ref opts 'repo))))
(unless sexp