build-system: haskell: Add ‘hackage-uri’ procedure.

* guix/build-system/haskell (hackage-uri): New procedure.
* guix/import/hackage.scm (hackage-module->sexp, latest-release): Use it.
* tests/hackage.scm (match-ghc-foo, match-ghc-foo-6, match-ghc-foo-revision,
match-ghc-foo-import): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Xinglu Chen 2021-11-02 17:48:09 +01:00 committed by Ludovic Courtès
parent a955e4d7f6
commit 39f4ef59ff
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 17 additions and 19 deletions

View file

@ -2,6 +2,7 @@
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,7 +31,9 @@ (define-module (guix build-system haskell)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%haskell-build-system-modules
#:export (hackage-uri
%haskell-build-system-modules
haskell-build
haskell-build-system))
@ -41,6 +44,12 @@ (define-module (guix build-system haskell)
;;
;; Code:
(define (hackage-uri name version)
"Return a URI string for the Haskell package hosted on Hackage corresponding
to NAME and VERSION."
(string-append "https://hackage.haskell.org/package/" name "/"
name "-" version ".tar.gz"))
(define %haskell-build-system-modules
;; Build-side modules imported by default.
`((guix build haskell-build-system)

View file

@ -40,6 +40,7 @@ (define-module (guix import hackage)
#:use-module (guix memoization)
#:use-module (guix upstream)
#:use-module (guix packages)
#:autoload (guix build-system haskell) (hackage-uri)
#:use-module ((guix utils) #:select (call-with-temporary-output-file))
#:export (%hackage-url
hackage->guix-package
@ -303,7 +304,7 @@ (define (maybe-arguments)
(version ,version)
(source (origin
(method url-fetch)
(uri (string-append ,@(factorize-uri source-url version)))
(uri (hackage-uri ,name version))
(sha256
(base32
,(if tarball
@ -367,7 +368,7 @@ (define (latest-release package)
(hackage-cabal-url hackage-name))
#f)
((_ *** ("version" (version)))
(let ((url (hackage-source-url hackage-name version)))
(let ((url (hackage-uri hackage-name version)))
(upstream-source
(package (package-name package))
(version version)

View file

@ -170,10 +170,7 @@ (define-package-matcher match-ghc-foo
('source
('origin
('method 'url-fetch)
('uri ('string-append
"https://hackage.haskell.org/package/foo/foo-"
'version
".tar.gz"))
('uri ('hackage-uri "foo" 'version))
('sha256
('base32
(? string? hash)))))
@ -215,10 +212,7 @@ (define-package-matcher match-ghc-foo-6
('source
('origin
('method 'url-fetch)
('uri ('string-append
"https://hackage.haskell.org/package/foo/foo-"
'version
".tar.gz"))
('uri ('hackage-uri "foo" 'version))
('sha256
('base32
(? string? hash)))))
@ -343,10 +337,7 @@ (define-package-matcher match-ghc-foo-revision
('source
('origin
('method 'url-fetch)
('uri ('string-append
"https://hackage.haskell.org/package/foo/foo-"
'version
".tar.gz"))
('uri ('hackage-uri "foo" 'version))
('sha256
('base32
(? string? hash)))))
@ -409,10 +400,7 @@ (define-package-matcher match-ghc-foo-import
('source
('origin
('method 'url-fetch)
('uri ('string-append
"https://hackage.haskell.org/package/foo/foo-"
'version
".tar.gz"))
('uri ('hackage-uri "foo" 'version))
('sha256
('base32
(? string? hash)))))