diff options
-rw-r--r-- | gnu/packages/agda.scm | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/gnu/packages/agda.scm b/gnu/packages/agda.scm index 418025bc37..6bb38aac4d 100644 --- a/gnu/packages/agda.scm +++ b/gnu/packages/agda.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Alex ter Weele <alex.ter.weele@gmail.com> +;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,13 +52,13 @@ ("ghc-edisoncore" ,ghc-edisoncore) ("ghc-edit-distance" ,ghc-edit-distance) ("ghc-equivalence" ,ghc-equivalence) + ("ghc-filemanip" ,ghc-filemanip) ("ghc-geniplate-mirror" ,ghc-geniplate-mirror) ("ghc-gitrev" ,ghc-gitrev) ("ghc-happy" ,ghc-happy) ("ghc-hashable" ,ghc-hashable) ("ghc-hashtables" ,ghc-hashtables) ("ghc-ieee754" ,ghc-ieee754) - ("ghc-monadplus" ,ghc-monadplus) ("ghc-murmur-hash" ,ghc-murmur-hash) ("ghc-uri-encode" ,ghc-uri-encode) ("ghc-parallel" ,ghc-parallel) @@ -70,9 +71,50 @@ (arguments `(#:modules ((guix build haskell-build-system) (guix build utils) - (srfi srfi-26)) + (srfi srfi-26) + (ice-9 match)) #:phases (modify-phases %standard-phases + ;; FIXME: This is a copy of the standard configure phase with a tiny + ;; difference: this package needs the -package-db flag to be passed + ;; to "runhaskell" in addition to the "configure" action, because + ;; Setup.hs depends on filemanip. Without this option the Setup.hs + ;; file cannot be evaluated. The haskell-build-system should be + ;; changed to pass "-package-db" to "runhaskell" in any case. + (replace 'configure + (lambda* (#:key outputs inputs tests? (configure-flags '()) + #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (input-dirs (match inputs + (((_ . dir) ...) + dir) + (_ '()))) + (ghc-path (getenv "GHC_PACKAGE_PATH")) + (params (append `(,(string-append "--prefix=" out)) + `(,(string-append "--libdir=" out "/lib")) + `(,(string-append "--bindir=" out "/bin")) + `(,(string-append + "--docdir=" out + "/share/doc/" ((@@ (guix build haskell-build-system) + package-name-version) out))) + '("--libsubdir=$compiler/$pkg-$version") + '("--package-db=../package.conf.d") + '("--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 tests? + '("--enable-tests") + '()) + configure-flags))) + (unsetenv "GHC_PACKAGE_PATH") + (apply invoke "runhaskell" "-package-db=../package.conf.d" + "Setup.hs" "configure" params) + (setenv "GHC_PACKAGE_PATH" ghc-path) + #t))) (add-after 'compile 'agda-compile (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) |