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.master
parent
e3eea177c8
commit
f249af3086
|
@ -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 @@
|
|||
#: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 @@ type '<elpa-package>'."
|
|||
(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.
|
||||
|
|
|
@ -96,13 +96,14 @@ Import the latest package named PACKAGE-NAME from an ELPA repository.\n"))
|
|||
(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
|
||||
|
|
Reference in New Issue