guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/05: gnu: ghc: Use a LibFFI variant without static trampolines.


From: guix-commits
Subject: 02/05: gnu: ghc: Use a LibFFI variant without static trampolines.
Date: Thu, 11 Aug 2022 16:48:44 -0400 (EDT)

mbakke pushed a commit to branch core-updates
in repository guix.

commit 462008057808ab02821d05979cb8d2f4d0769f66
Author: Marius Bakke <marius@gnu.org>
AuthorDate: Thu Aug 11 19:02:53 2022 +0200

    gnu: ghc: Use a LibFFI variant without static trampolines.
    
    * gnu/packages/haskell.scm (ghc-7, ghc-8.0, ghc-8.4)[inputs]: Change from
    LIBFFI to LIBFFI-SANS-STATIC-TRAMPOLINES.
    * gnu/packages/libffi.scm (libffi-sans-static-trampolines): New variable.
---
 gnu/packages/haskell.scm | 16 +++++++++++++---
 gnu/packages/libffi.scm  | 13 +++++++++++++
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index effc6eeb1b..ad2aa20ee1 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -423,7 +423,11 @@ libraries are included in this package.")
     (inputs
      `(("gmp" ,gmp)
        ("ncurses" ,ncurses)
-       ("libffi" ,libffi)
+
+       ;; Use a LibFFI variant without static trampolines to work around
+       ;; <https://gitlab.haskell.org/ghc/ghc/-/issues/20051>.
+       ("libffi" ,libffi-sans-static-trampolines)
+
        ("ghc-testsuite"
         ,(origin
            (method url-fetch)
@@ -597,7 +601,11 @@ interactive environment for the functional language 
Haskell.")
     (inputs
      `(("gmp" ,gmp)
        ("ncurses" ,ncurses)
-       ("libffi" ,libffi)
+
+       ;; Use a LibFFI variant without static trampolines to work around
+       ;; <https://gitlab.haskell.org/ghc/ghc/-/issues/20051>.
+       ("libffi" ,libffi-sans-static-trampolines)
+
        ("ghc-testsuite"
         ,(origin
            (method url-fetch)
@@ -696,7 +704,9 @@ interactive environment for the functional language 
Haskell.")
        (sha256
         (base32 "1ch4j2asg7pr52ai1hwzykxyj553wndg7wq93i47ql4fllspf48i"))))
     (inputs
-     (list gmp ncurses libffi))
+     ;; Note: GHC < 9 requires LibFFI < 3.4, or a variant without static
+     ;; trampolines.
+     (list gmp ncurses libffi-sans-static-trampolines))
     (native-inputs
      `(("perl" ,perl)
        ("python" ,python)               ; for tests
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 0c59509a91..923019c2ca 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -28,8 +28,10 @@
   #:use-module (gnu packages)
   #:use-module (guix licenses)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix utils)
   #:use-module (gnu packages check)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -78,6 +80,17 @@ conversions for values passed between the two languages.")
     ;; See <https://github.com/atgreen/libffi/blob/master/LICENSE>.
     (license expat)))
 
+;; Provide a variant without static trampolines as some packages
+;; (particularly GHC < 9) cannot handle them.  See
+;; <https://github.com/libffi/libffi/pull/647> for a discussion.
+(define-public libffi-sans-static-trampolines
+  (hidden-package
+   (package/inherit libffi
+     (arguments
+      (substitute-keyword-arguments (package-arguments libffi)
+        ((#:configure-flags flags #~'())
+         #~(append #$flags '("--disable-exec-static-tramp"))))))))
+
 (define-public python-cffi
   (package
     (name "python-cffi")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]