Subject: haskell build-system cannot build pcg-random

From: John Kehayias <[email-masked]>
Date: Wed, 23 Jun 2021 21:54:12 +0000

Hello,

I also see this error for building packages that need cabal-doctest, as the configure step needs the package database. There's actually some packages in guix that already modify the configure step to do this, like ghc-cairo: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/haskell-xyz.scm#n1465

As noted there, the package database should be passed to runhaskell itself, not just what it runs. This would allow other packages that need a module for configuring to work. Attached is a patch to modify haskell-build-system to do this, though not only for the configure command (seemed easiest to just do that for now). I'm submitting the patch with comments there about possible modifications.

I can confirm with this that pcg-random builds, as well as packages I've been trying that need cabal-doctest (note, I tested using guix's package of cabal-doctest, no need to add that as well).

Comments welcome here, especially as I'm pretty new to Haskell still and guix completely, or on patch submission (sending shortly).

John

diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm
index 28253ce2f0..be20f13e10 100644
--- a/guix/build/haskell-build-system.scm
+++ b/guix/build/haskell-build-system.scm
@@ -63,13 +63,14 @@
                      ((file-exists? "Setup.lhs")
                       "Setup.lhs")
                      (else
-                      #f))))
+                      #f)))
+        (pkgdb (string-append "-package-db=" %tmp-db-dir)))
     (if setup-file
         (begin
           (format #t "running \"runhaskell Setup.hs\" with command ~s \
 and parameters ~s~%"
                   command params)
-          (apply invoke "runhaskell" setup-file command params))
+          (apply invoke "runhaskell" pkgdb setup-file command params))
         (error "no Setup.hs nor Setup.lhs found"))))
 
 (define* (configure #:key outputs inputs tests? (configure-flags '())
-- 
2.32.0