Archived
1
0
Fork 0

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:
Xinglu Chen 2021-12-23 22:08:33 +01:00 committed by Ludovic Courtès
parent d7fb57bcd5
commit 82eb05c398
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -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-" <>))