all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Timothy Sample <samplet@ngyro.com>
To: John Soo <jsoo1@asu.edu>
Cc: 39309@debbugs.gnu.org
Subject: [bug#39309] [PATCH WIP] gnu: add stack.
Date: Sat, 22 Feb 2020 10:34:51 -0500	[thread overview]
Message-ID: <87mu9ahbz8.fsf@ngyro.com> (raw)
In-Reply-To: <8736b57t7v.fsf@ngyro.com> (Timothy Sample's message of "Wed, 19 Feb 2020 23:55:48 -0500")

[-- Attachment #1: Type: text/plain, Size: 858 bytes --]

Hello again,

Timothy Sample <samplet@ngyro.com> writes:

> On the other hand, there are probably less than a dozen Haskell
> packages that need flags [...].

Turns out there are thirteen!

> I will make a patch that does this and see what the damages are.

I’ve attached the patch.  The name of the keyword is not great, so
suggestions there are welcome.  I managed to build all of our Haskell
packages (except for some usual suspects that fail for other reasons).
It’s not so bad, but it’s a bit of a hack.

I’m now wondering why Guix’s treatment of “LIBRARY_PATH” is not just
solving this outright without the need for those flags.  Before I
consider pushing the patch, I’m going to answer that question.  Ideally,
Guix could do more of what it’s good at: understanding the complete
package graph.  :)


-- Tim


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-build-system-haskell-Add-extra-directories-keyword.patch --]
[-- Type: text/x-patch, Size: 9115 bytes --]

From 01ff315ee02d033fd5335f4f53405db89fd81c14 Mon Sep 17 00:00:00 2001
From: Timothy Sample <samplet@ngyro.com>
Date: Sat, 22 Feb 2020 09:56:36 -0500
Subject: [PATCH] build-system/haskell: Add 'extra-directories?' keyword.

See <https://bugs.gnu.org/39309>.

* 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


  reply	other threads:[~2020-02-22 15:35 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-27 14:56 [bug#39309] .[PATCH] WIP gnu: add stack John Soo
2020-01-29 15:17 ` [bug#39309] [PATCH WIP] " John Soo
2020-02-07 17:32   ` John Soo
2020-02-10  6:06     ` Timothy Sample
2020-02-13 13:52       ` John Soo
2020-02-13 13:59         ` John Soo
2020-02-13 17:36           ` John Soo
2020-02-13 22:59             ` Timothy Sample
2020-02-16  1:56               ` Timothy Sample
2020-02-19 14:56                 ` John Soo
2020-02-20  4:55                   ` Timothy Sample
2020-02-22 15:34                     ` Timothy Sample [this message]
2020-03-11  9:17                       ` John Soo
2020-03-11 14:18                         ` Timothy Sample
2020-03-13 15:05                           ` John Soo
2021-01-01 18:04                             ` [bug#39309] .[PATCH] WIP " John Soo
2021-01-01 18:18                               ` John Soo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mu9ahbz8.fsf@ngyro.com \
    --to=samplet@ngyro.com \
    --cc=39309@debbugs.gnu.org \
    --cc=jsoo1@asu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.