summaryrefslogtreecommitdiff
path: root/guix/import
diff options
context:
space:
mode:
authorXinglu Chen <public@yoctocell.xyz>2021-12-23 22:08:33 +0100
committerLudovic Courtès <ludo@gnu.org>2022-01-05 23:44:18 +0100
commit82eb05c3983f2fc3c69ed4190f05da72adf39bf8 (patch)
treeef1faff92c2dd61fca3c4668447a971326a73440 /guix/import
parentd7fb57bcd559fc1fea60cbed91990c06462d33fb (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.scm24
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-" <>))