summaryrefslogtreecommitdiff
path: root/guix/build
diff options
context:
space:
mode:
authorTimothy Sample <samplet@ngyro.com>2018-08-30 22:08:59 -0400
committerRicardo Wurmus <rekado@elephly.net>2018-10-01 12:12:08 +0200
commitbb6419f3745911aec87ad79c55bb953b36f246dd (patch)
treea9c5914ef7732230db2191cd3edb58b7bbb4a352 /guix/build
parentf54f04756f6d90c9fb3b5e45f3947329287f9b05 (diff)
build-system: haskell: Add #:cabal-revision argument.
Add a #:cabal-revision argument for specifying which Cabal file revision from Hackage should be used. * guix/build-system/haskell.scm (source-url->revision-url): New function. (lower): Accept a cabal-revision keyword argument, convert it to an origin record, and add it to the resulting bag's host-inputs. (haskell-build): Pass the cabal-revision input to the builder as an argument. * guix/build/haskell-build-system.scm (patch-cabal-file): New phase. (%standard-phases): Add it.
Diffstat (limited to 'guix/build')
-rw-r--r--guix/build/haskell-build-system.scm12
1 files changed, 12 insertions, 0 deletions
diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm
index 26519ce5a6..be4f5b583b 100644
--- a/guix/build/haskell-build-system.scm
+++ b/guix/build/haskell-build-system.scm
@@ -27,6 +27,7 @@
#:use-module (ice-9 regex)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
+ #:use-module (ice-9 ftw)
#:export (%standard-phases
haskell-build))
@@ -265,8 +266,19 @@ given Haskell package."
(run-setuphs "haddock" haddock-flags)
#t))
+(define* (patch-cabal-file #:key cabal-revision #:allow-other-keys)
+ (when cabal-revision
+ ;; Cabal requires there to be a single file with the suffix ".cabal".
+ (match (scandir "." (cut string-suffix? ".cabal" <>))
+ ((original)
+ (format #t "replacing ~s with ~s~%" original cabal-revision)
+ (copy-file cabal-revision original))
+ (_ (error "Could not find a Cabal file to patch."))))
+ #t)
+
(define %standard-phases
(modify-phases gnu:%standard-phases
+ (add-after 'unpack 'patch-cabal-file patch-cabal-file)
(delete 'bootstrap)
(add-before 'configure 'setup-compiler setup-compiler)
(add-before 'install 'haddock haddock)