import: hackage: Support mirror:// URLs
* guix/import/hackage.scm (guix-package->hackage-name): Support mirror://-style URI’s. (hackage-package?): Ditto.master
parent
a01daed62c
commit
edd912a128
|
@ -121,12 +121,12 @@ version is returned."
|
||||||
(string-append package-name-prefix (string-downcase name))))
|
(string-append package-name-prefix (string-downcase name))))
|
||||||
|
|
||||||
(define guix-package->hackage-name
|
(define guix-package->hackage-name
|
||||||
(let ((uri-rx (make-regexp "https?://hackage.haskell.org/package/([^/]+)/.*"))
|
(let ((uri-rx (make-regexp "(https?://hackage.haskell.org|mirror://hackage)/package/([^/]+)/.*"))
|
||||||
(name-rx (make-regexp "(.*)-[0-9\\.]+")))
|
(name-rx (make-regexp "(.*)-[0-9\\.]+")))
|
||||||
(lambda (package)
|
(lambda (package)
|
||||||
"Given a Guix package name, return the corresponding Hackage name."
|
"Given a Guix package name, return the corresponding Hackage name."
|
||||||
(let* ((source-url (and=> (package-source package) origin-uri))
|
(let* ((source-url (and=> (package-source package) origin-uri))
|
||||||
(name (match:substring (regexp-exec uri-rx source-url) 1)))
|
(name (match:substring (regexp-exec uri-rx source-url) 2)))
|
||||||
(match (regexp-exec name-rx name)
|
(match (regexp-exec name-rx name)
|
||||||
(#f name)
|
(#f name)
|
||||||
(m (match:substring m 1)))))))
|
(m (match:substring m 1)))))))
|
||||||
|
@ -353,7 +353,7 @@ respectively."
|
||||||
#:guix-name hackage-name->package-name))
|
#:guix-name hackage-name->package-name))
|
||||||
|
|
||||||
(define hackage-package?
|
(define hackage-package?
|
||||||
(let ((hackage-rx (make-regexp "https?://hackage.haskell.org")))
|
(let ((hackage-rx (make-regexp "(https?://hackage.haskell.org|mirror://hackage/)")))
|
||||||
(url-predicate (cut regexp-exec hackage-rx <>))))
|
(url-predicate (cut regexp-exec hackage-rx <>))))
|
||||||
|
|
||||||
(define (latest-release package)
|
(define (latest-release package)
|
||||||
|
|
Reference in New Issue