>From 01ff315ee02d033fd5335f4f53405db89fd81c14 Mon Sep 17 00:00:00 2001
From: Timothy Sample
Date: Sat, 22 Feb 2020 09:56:36 -0500
Subject: [PATCH] build-system/haskell: Add 'extra-directories?' keyword.
See .
* guix/build-system/haskell.scm (haskell-build): Add
'extra-directories?' keyword and pass it through to the builder.
* guix/build/haskell-build-system.scm (configure): Use it to toggle
passing 'extra-include-dirs' and 'extra-lib-dirs' to Cabal.
* gnu/packages/haskell-xyz.scm (ghc-alsa-core, ghc-hmatrix,
ghc-hmatrix-gsl, ghc-hslua, ghc-iwlib, ghc-libyaml, ghc-ncurses,
ghc-openglraw, ghc-x11, ghc-x11-xft, ghc-zlib): Enable
'extra-directories?'.
gnu/packages/haskell-crypto.scm (ghc-digest, ghc-hsopenssl): Likewise.
---
gnu/packages/haskell-crypto.scm | 4 ++++
gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++----
guix/build-system/haskell.scm | 2 ++
guix/build/haskell-build-system.scm | 17 +++++++++--------
4 files changed, 37 insertions(+), 12 deletions(-)
diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm
index 4170ec82f0..637a5d421e 100644
--- a/gnu/packages/haskell-crypto.scm
+++ b/gnu/packages/haskell-crypto.scm
@@ -343,6 +343,8 @@ generators, and more.")
(base32
"04gy2zp8yzvv7j9bdfvmfzcz3sqyqa6rwslqcn4vyair2vmif5v4"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("zlib" ,zlib)))
(home-page
@@ -790,6 +792,8 @@ extensions.")
(base32
"0qivl9clmybfglwxqp2sq308rv4ia4rhwshcsc8b029bvpp0mpsi"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("ghc-network" ,ghc-network)
("openssl" ,openssl)))
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index e368082c03..9992744245 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -327,6 +327,8 @@ tool lex or flex for C/C++.")
(base32
"1avh4a419h9d2zsslg6j8hm87ppgsgqafz8ll037rk2yy1g4jl7b"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
("alsa-lib" ,alsa-lib)))
@@ -5352,6 +5354,8 @@ accessed or modified.")
(sha256
(base32 "1sqy1aci5zfagkb34mz3xdil7cl96z4b4cx28cha54vc5sx1lhpg"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("ghc-random" ,ghc-random)
("ghc-split" ,ghc-split)
@@ -5383,6 +5387,8 @@ numerical computations based on BLAS and LAPACK.")
(sha256
(base32 "0v6dla426x4ywaq59jm89ql1i42n39iw6z0j378xwb676v9kfxhm"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("ghc-hmatrix" ,ghc-hmatrix)
("ghc-vector" ,ghc-vector)
@@ -5600,7 +5606,8 @@ handler built in.")
"183bgl5jcx5y2r94lviqfw0a5w9089nxjd1z40k8vx9y2h60pm6j"))))
(build-system haskell-build-system)
(arguments
- `(#:configure-flags '("-fsystem-lua")))
+ `(#:configure-flags '("-fsystem-lua")
+ #:extra-directories? #t))
(inputs
`(("lua" ,lua)
("ghc-exceptions" ,ghc-exceptions)
@@ -6210,6 +6217,8 @@ instances for conversion to and from JSON .ipynb files.")
(sha256
(base32 "0khmfwql4vwj55idsxmhjhrbqzfir3g9wm5lmpvnf77mm95cfpdz"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("wireless-tools" ,wireless-tools)))
(home-page "https://github.com/jaor/iwlib")
@@ -6556,7 +6565,8 @@ compiler versions.")
#t))))
(build-system haskell-build-system)
(arguments
- `(#:configure-flags `("--flags=system-libyaml")))
+ `(#:configure-flags `("--flags=system-libyaml")
+ #:extra-directories? #t))
(inputs
`(("ghc-conduit" ,ghc-conduit)
("ghc-resourcet" ,ghc-resourcet)
@@ -7698,7 +7708,8 @@ between 2 and 3 times faster than the Mersenne Twister.")
"0gsyyaqyh5r9zc0rhwpj5spyd6i4w2vj61h4nihgmmh0yyqvf3z5"))))
(build-system haskell-build-system)
(arguments
- '(#:phases
+ '(#:extra-directories? #t
+ #:phases
(modify-phases %standard-phases
(add-before 'build 'fix-includes
(lambda _
@@ -8036,6 +8047,8 @@ version 1.3).")
(base32
"0zgllb4bcash2i2cispa3j565aw3dpxs41ghmhpvyvi4a6xmyldx"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("ghc-half" ,ghc-half)
("ghc-fixed" ,ghc-fixed)
@@ -13150,6 +13163,8 @@ modernized interface.")
(sha256
(base32 "0gg6852mrlgl8zng1j84fismz7k81jr5fk92glgkscf8q6ryg0bm"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("libx11" ,libx11)
("libxrandr" ,libxrandr)
@@ -13174,6 +13189,8 @@ bindings are a direct translation of the C bindings.")
"X11-xft-" version ".tar.gz"))
(sha256
(base32 "1lgqb0s2qfwwgbvwxhjbi23rbwamzdi0l0slfr20c3jpcbp3zfjf"))))
+ (arguments
+ `(#:extra-directories? #t))
(inputs
`(("ghc-x11" ,ghc-x11)
("ghc-utf8-string" ,ghc-utf8-string)
@@ -13374,7 +13391,8 @@ modifying, and extracting files from zip archives in Haskell.")
"1l11jraslcrp9d4wnhwfyhwk4fsiq1aq8i6vj81vcq1m2zzi1y7h"))))
(build-system haskell-build-system)
(arguments
- `(#:phases
+ `(#:extra-directories? #t
+ #:phases
(modify-phases %standard-phases
(add-before 'configure 'strip-test-framework-constraints
(lambda _
diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm
index 1ec11c71d8..25f4797d16 100644
--- a/guix/build-system/haskell.scm
+++ b/guix/build-system/haskell.scm
@@ -106,6 +106,7 @@ version REVISION."
(tests? #t)
(test-target "test")
(configure-flags ''())
+ extra-directories?
(phases '(@ (guix build haskell-build-system)
%standard-phases))
(outputs '("out"))
@@ -134,6 +135,7 @@ provides a 'Setup.hs' file as its build system."
(derivation->output-path revision))
(revision revision))
#:configure-flags ,configure-flags
+ #:extra-directories? ,extra-directories?
#:haddock-flags ,haddock-flags
#:system ,system
#:test-target ,test-target
diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm
index 91f62138d0..f69e16582a 100644
--- a/guix/build/haskell-build-system.scm
+++ b/guix/build/haskell-build-system.scm
@@ -72,8 +72,8 @@ and parameters ~s~%"
(apply invoke "runhaskell" setup-file command params))
(error "no Setup.hs nor Setup.lhs found"))))
-(define* (configure #:key outputs inputs tests? (configure-flags '())
- #:allow-other-keys)
+(define* (configure #:key outputs inputs tests? extra-directories?
+ (configure-flags '()) #:allow-other-keys)
"Configure a given Haskell package."
(let* ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc"))
@@ -84,6 +84,10 @@ and parameters ~s~%"
(((_ . dir) ...)
dir)
(_ '())))
+ (include-dirs (map (cut string-append "--extra-include-dirs=" <>)
+ (search-path-as-list '("include") input-dirs)))
+ (lib-dirs (map (cut string-append "--extra-lib-dirs=" <>)
+ (search-path-as-list '("lib") input-dirs)))
(ghc-path (getenv "GHC_PACKAGE_PATH"))
(params (append `(,(string-append "--prefix=" out))
`(,(string-append "--libdir=" (or lib out) "/lib"))
@@ -94,12 +98,9 @@ and parameters ~s~%"
'("--libsubdir=$compiler/$pkg-$version")
`(,(string-append "--package-db=" %tmp-db-dir))
'("--global")
- `(,@(map
- (cut string-append "--extra-include-dirs=" <>)
- (search-path-as-list '("include") input-dirs)))
- `(,@(map
- (cut string-append "--extra-lib-dirs=" <>)
- (search-path-as-list '("lib") input-dirs)))
+ (if extra-directories?
+ (append include-dirs lib-dirs)
+ '())
(if tests?
'("--enable-tests")
'())
--
2.25.0