diff options
author | Xinglu Chen <public@yoctocell.xyz> | 2021-12-23 22:08:33 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-01-05 23:44:18 +0100 |
commit | 82eb05c3983f2fc3c69ed4190f05da72adf39bf8 (patch) | |
tree | ef1faff92c2dd61fca3c4668447a971326a73440 /guix/import | |
parent | d7fb57bcd559fc1fea60cbed91990c06462d33fb (diff) |
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>
Diffstat (limited to 'guix/import')
-rw-r--r-- | guix/import/elpa.scm | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm index edabb88b7a..5a092ebdc2 100644 --- a/guix/import/elpa.scm +++ b/guix/import/elpa.scm @@ -44,6 +44,7 @@ #:use-module (guix base32) #:use-module (guix upstream) #:use-module (guix packages) + #:use-module (guix memoization) #:use-module ((guix utils) #:select (call-with-temporary-output-file)) #:export (elpa->guix-package guix-package->elpa-name @@ -424,7 +425,7 @@ type '<elpa-package>'." (define (latest-release package) "Return an <upstream-release> for the latest release of PACKAGE." (define name (guix-package->elpa-name package)) - (define repo 'gnu) + (define repo (elpa-repository package)) (match (elpa-package-info name repo) (#f @@ -443,11 +444,20 @@ type '<elpa-package>'." (urls (list url)) (signature-urls (list (string-append url ".sig")))))))) -(define package-from-gnu.org? - (url-predicate (lambda (url) - (let ((uri (string->uri url))) - (and uri - (string=? (uri-host uri) "elpa.gnu.org")))))) +(define elpa-repository + (memoize + (url-predicate (lambda (url) + (let ((uri (string->uri url))) + (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 ;; The ELPA updater. We restrict it to packages hosted on elpa.gnu.org @@ -455,7 +465,7 @@ type '<elpa-package>'." (upstream-updater (name 'elpa) (description "Updater for ELPA packages") - (pred package-from-gnu.org?) + (pred package-from-elpa-repository?) (latest latest-release))) (define elpa-guix-name (cut guix-name "emacs-" <>)) |