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
 | 
				
			||||||
 | 
					  (memoize
 | 
				
			||||||
   (url-predicate (lambda (url)
 | 
					   (url-predicate (lambda (url)
 | 
				
			||||||
                    (let ((uri (string->uri url)))
 | 
					                    (let ((uri (string->uri url)))
 | 
				
			||||||
                      (and uri
 | 
					                      (and uri
 | 
				
			||||||
                          (string=? (uri-host uri) "elpa.gnu.org"))))))
 | 
					                           (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