~ruther/guix-local

39f4ef59ffc37259de40f67c476a1a720aa8d007 — Xinglu Chen 4 years ago a955e4d
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>
3 files changed, 17 insertions(+), 19 deletions(-)

M guix/build-system/haskell.scm
M guix/import/hackage.scm
M tests/hackage.scm
M guix/build-system/haskell.scm => guix/build-system/haskell.scm +10 -1
@@ 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 @@
  #: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 @@
;;
;; 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)

M guix/import/hackage.scm => guix/import/hackage.scm +3 -2
@@ 40,6 40,7 @@
  #: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 @@ the hash of the Cabal file."
        (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 @@ respectively."
               (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)

M tests/hackage.scm => tests/hackage.scm +4 -16
@@ 170,10 170,7 @@ library
    ('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 @@ library
    ('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 @@ executable cabal
    ('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 @@ executable cabal
    ('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)))))