import: elpa: Also check NonGNU ELPA for updates.
* guix/import/elpa.scm (latest-release): Determine the repository based on the URL of the source. (package-from-gnu.org?): Rename to ... (elpa-repository): ...this; memoize. (package-from-elpa-repository?): New procedure. (%elpa-updater): Adjust accordingly. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
d7fb57bcd5
commit
82eb05c398
1 changed files with 17 additions and 7 deletions
|
@ -44,6 +44,7 @@
|
||||||
#:use-module (guix base32)
|
#:use-module (guix base32)
|
||||||
#:use-module (guix upstream)
|
#:use-module (guix upstream)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
|
#:use-module (guix memoization)
|
||||||
#:use-module ((guix utils) #:select (call-with-temporary-output-file))
|
#:use-module ((guix utils) #:select (call-with-temporary-output-file))
|
||||||
#:export (elpa->guix-package
|
#:export (elpa->guix-package
|
||||||
guix-package->elpa-name
|
guix-package->elpa-name
|
||||||
|
@ -424,7 +425,7 @@ type '<elpa-package>'."
|
||||||
(define (latest-release package)
|
(define (latest-release package)
|
||||||
"Return an <upstream-release> for the latest release of PACKAGE."
|
"Return an <upstream-release> for the latest release of PACKAGE."
|
||||||
(define name (guix-package->elpa-name package))
|
(define name (guix-package->elpa-name package))
|
||||||
(define repo 'gnu)
|
(define repo (elpa-repository package))
|
||||||
|
|
||||||
(match (elpa-package-info name repo)
|
(match (elpa-package-info name repo)
|
||||||
(#f
|
(#f
|
||||||
|
@ -443,11 +444,20 @@ type '<elpa-package>'."
|
||||||
(urls (list url))
|
(urls (list url))
|
||||||
(signature-urls (list (string-append url ".sig"))))))))
|
(signature-urls (list (string-append url ".sig"))))))))
|
||||||
|
|
||||||
(define package-from-gnu.org?
|
(define elpa-repository
|
||||||
(url-predicate (lambda (url)
|
(memoize
|
||||||
(let ((uri (string->uri url)))
|
(url-predicate (lambda (url)
|
||||||
(and uri
|
(let ((uri (string->uri url)))
|
||||||
(string=? (uri-host uri) "elpa.gnu.org"))))))
|
(and uri
|
||||||
|
(cond
|
||||||
|
((string=? (uri-host uri) "elpa.gnu.org")
|
||||||
|
'gnu)
|
||||||
|
((string=? (uri-host uri) "elpa.nongnu.org")
|
||||||
|
'nongnu)
|
||||||
|
(else #f))))))))
|
||||||
|
|
||||||
|
(define (package-from-elpa-repository? package)
|
||||||
|
(member (elpa-repository package) '(gnu nongnu)))
|
||||||
|
|
||||||
(define %elpa-updater
|
(define %elpa-updater
|
||||||
;; The ELPA updater. We restrict it to packages hosted on elpa.gnu.org
|
;; The ELPA updater. We restrict it to packages hosted on elpa.gnu.org
|
||||||
|
@ -455,7 +465,7 @@ type '<elpa-package>'."
|
||||||
(upstream-updater
|
(upstream-updater
|
||||||
(name 'elpa)
|
(name 'elpa)
|
||||||
(description "Updater for ELPA packages")
|
(description "Updater for ELPA packages")
|
||||||
(pred package-from-gnu.org?)
|
(pred package-from-elpa-repository?)
|
||||||
(latest latest-release)))
|
(latest latest-release)))
|
||||||
|
|
||||||
(define elpa-guix-name (cut guix-name "emacs-" <>))
|
(define elpa-guix-name (cut guix-name "emacs-" <>))
|
||||||
|
|
Reference in a new issue