From 13b5b5d10f32fde3543e7346c776f5734e6c9a6e Mon Sep 17 00:00:00 2001
From: Josselin Poiret <dev@jpoiret.xyz>
Date: Mon, 15 Jan 2024 23:05:37 +0100
Subject: gnu: ghc: Fix build with binutils ≥ 2.39.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

ld warns about exec stack now, making some tests fail.  Fix them (and also
remove an unwarranted exec stack from libHSrts along with it).

* gnu/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch
* gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch: New patches.
* gnu/local.mk (dist_patch_DATA): Register them.
* gnu/packages/haskell.scm (ghc-8.6, ghc-8.8, ghc-8.10, ghc-9.0, ghc-9.2,
ghc-9.4): Use them.

Change-Id: I8e5fc71d7394527d44ff37b1f9bd59d4971ec010
---
 gnu/packages/haskell.scm | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

(limited to 'gnu/packages/haskell.scm')

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 3f807dae36..10803f5afe 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1174,7 +1174,8 @@ (define-public ghc-8.6
                  "https://www.haskell.org/ghc/dist/"
                  version "/" name "-" version "-testsuite.tar.xz"))
            (patches (search-patches "ghc-testsuite-dlopen-pie.patch"
-                                    "ghc-testsuite-grep-compat.patch"))
+                                    "ghc-testsuite-grep-compat.patch"
+                                    "ghc-testsuite-recomp015-execstack.patch"))
            (sha256
             (base32
              "0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91"))
@@ -1256,7 +1257,8 @@ (define-public ghc-8.8
                  "https://www.haskell.org/ghc/dist/"
                  version "/ghc-" version "-testsuite.tar.xz"))
            (patches (search-patches "ghc-testsuite-dlopen-pie.patch"
-                                    "ghc-testsuite-grep-compat.patch"))
+                                    "ghc-testsuite-grep-compat.patch"
+                                    "ghc-testsuite-recomp015-execstack.patch"))
            (sha256
             (base32
              "0c55pj2820q26rikhpf636sn4mjgqsxjrl94vsywrh79dxp3k14z"))
@@ -1315,7 +1317,8 @@ (define-public ghc-8.10
                  "https://www.haskell.org/ghc/dist/"
                  version "/ghc-" version "-testsuite.tar.xz"))
            (patches (search-patches "ghc-testsuite-dlopen-pie.patch"
-                                    "ghc-testsuite-grep-compat.patch"))
+                                    "ghc-testsuite-grep-compat.patch"
+                                    "ghc-testsuite-recomp015-execstack.patch"))
            (sha256
             (base32
              "1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz"))
@@ -1398,7 +1401,8 @@ (define-public ghc-9.0
                                   "/ghc-" version "-src.tar.xz"))
               (sha256
                (base32
-                "15wii8can2r3dcl6jjmd50h2jvn7rlmn05zb74d2scj6cfwl43hl"))))
+                "15wii8can2r3dcl6jjmd50h2jvn7rlmn05zb74d2scj6cfwl43hl"))
+              (patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
     (native-inputs
      `(;; GHC 9.0.2 must be built with GHC >= 8.8
        ("ghc-bootstrap" ,ghc-8.10)
@@ -1411,7 +1415,8 @@ (define-public ghc-9.0
            (sha256
             (base32
              "1m5fzhr4gjn9ni8gxx7ag3fkbw1rspjzgv39mnfb0nkm5mw70v3s"))
-           (patches (search-patches "ghc-9.2-grep-warnings.patch"))
+           (patches (search-patches "ghc-9.2-grep-warnings.patch"
+                                    "ghc-testsuite-recomp015-execstack.patch"))
            (modules '((guix build utils)))
            (snippet
             ;; collections.Iterable was moved to collections.abc in Python 3.10.
@@ -1444,7 +1449,8 @@ (define-public ghc-9.2
                 (sha256
                  (base32
                   "18b7ln4gx2vy62jpv3z5slv3zfxmxnmkgajznks15zglddwd24sz"))
-                (patches (search-patches "ghc-9.2-cabal-support-package-path.patch"))))
+                (patches (search-patches "ghc-9.2-cabal-support-package-path.patch"
+                                         "ghc-9-StgCRunAsm-only-when-needed.patch"))))
       (arguments
        (substitute-keyword-arguments (package-arguments base)
          ((#:phases phases '%standard-phases)
@@ -1475,7 +1481,8 @@ (define-public ghc-9.2
              (sha256
               (base32
                "0cmmwhcwv9fjzvmgjj85d354858qqbmqfzaz5160xqj4yl9zk225"))
-             (patches (search-patches "ghc-9.2-grep-warnings.patch"))))
+             (patches (search-patches "ghc-9.2-grep-warnings.patch"
+                                      "ghc-testsuite-recomp015-execstack.patch"))))
          ,@(filter (match-lambda
                      (("ghc-bootstrap" . _) #f)
                      (("ghc-testsuite" . _) #f)
@@ -1565,7 +1572,8 @@ (define-public ghc-9.4
                                     "/ghc-" version "-src.tar.xz"))
                 (sha256
                  (base32
-                  "1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))))
+                  "1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))
+                (patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
       (arguments
        (substitute-keyword-arguments (package-arguments base)
          ((#:phases phases '%standard-phases)
@@ -1583,7 +1591,8 @@ (define-public ghc-9.4
                     version "/ghc-" version "-testsuite.tar.xz"))
              (sha256
               (base32
-               "04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))))
+               "04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))
+             (patches (search-patches "ghc-testsuite-recomp015-execstack.patch"))))
          ("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
          ("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
          ,@(filter (match-lambda
-- 
cgit v1.2.3