import: hackage: Support mirror:// URLs

* guix/import/hackage.scm (guix-package->hackage-name): Support
mirror://-style URI’s.
(hackage-package?): Ditto.
This commit is contained in:
Lars-Dominik Braun 2021-09-17 11:09:04 +02:00
parent a01daed62c
commit edd912a128
No known key found for this signature in database
GPG key ID: F663943E08D8092A

View file

@ -121,12 +121,12 @@ (define (hackage-name->package-name name)
(string-append package-name-prefix (string-downcase 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\\.]+")))
(lambda (package)
"Given a Guix package name, return the corresponding Hackage name."
(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)
(#f name)
(m (match:substring m 1)))))))
@ -353,7 +353,7 @@ (define* (hackage-recursive-import package-name . args)
#:guix-name hackage-name->package-name))
(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 <>))))
(define (latest-release package)