mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 05:48:07 -05:00
gnu: ghc: Fix build with binutils ≥ 2.39.
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
This commit is contained in:
parent
4840707013
commit
13b5b5d10f
4 changed files with 63 additions and 9 deletions
|
@ -1355,9 +1355,11 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/gettext-libunicode-update.patch \
|
%D%/packages/patches/gettext-libunicode-update.patch \
|
||||||
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
|
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
|
||||||
%D%/packages/patches/ghc-9.2-cabal-support-package-path.patch \
|
%D%/packages/patches/ghc-9.2-cabal-support-package-path.patch \
|
||||||
|
%D%/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch \
|
||||||
%D%/packages/patches/ghc-9.2-grep-warnings.patch \
|
%D%/packages/patches/ghc-9.2-grep-warnings.patch \
|
||||||
%D%/packages/patches/ghc-testsuite-dlopen-pie.patch \
|
%D%/packages/patches/ghc-testsuite-dlopen-pie.patch \
|
||||||
%D%/packages/patches/ghc-testsuite-grep-compat.patch \
|
%D%/packages/patches/ghc-testsuite-grep-compat.patch \
|
||||||
|
%D%/packages/patches/ghc-testsuite-recomp015-execstack.patch \
|
||||||
%D%/packages/patches/ghc-aeson-encodeDouble.patch \
|
%D%/packages/patches/ghc-aeson-encodeDouble.patch \
|
||||||
%D%/packages/patches/ghc-basement-fix-32bit.patch \
|
%D%/packages/patches/ghc-basement-fix-32bit.patch \
|
||||||
%D%/packages/patches/ghc-bytestring-handle-ghc9.patch \
|
%D%/packages/patches/ghc-bytestring-handle-ghc9.patch \
|
||||||
|
|
|
@ -1174,7 +1174,8 @@ (define-public ghc-8.6
|
||||||
"https://www.haskell.org/ghc/dist/"
|
"https://www.haskell.org/ghc/dist/"
|
||||||
version "/" name "-" version "-testsuite.tar.xz"))
|
version "/" name "-" version "-testsuite.tar.xz"))
|
||||||
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
|
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
|
||||||
"ghc-testsuite-grep-compat.patch"))
|
"ghc-testsuite-grep-compat.patch"
|
||||||
|
"ghc-testsuite-recomp015-execstack.patch"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91"))
|
"0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91"))
|
||||||
|
@ -1256,7 +1257,8 @@ (define-public ghc-8.8
|
||||||
"https://www.haskell.org/ghc/dist/"
|
"https://www.haskell.org/ghc/dist/"
|
||||||
version "/ghc-" version "-testsuite.tar.xz"))
|
version "/ghc-" version "-testsuite.tar.xz"))
|
||||||
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
|
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
|
||||||
"ghc-testsuite-grep-compat.patch"))
|
"ghc-testsuite-grep-compat.patch"
|
||||||
|
"ghc-testsuite-recomp015-execstack.patch"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0c55pj2820q26rikhpf636sn4mjgqsxjrl94vsywrh79dxp3k14z"))
|
"0c55pj2820q26rikhpf636sn4mjgqsxjrl94vsywrh79dxp3k14z"))
|
||||||
|
@ -1315,7 +1317,8 @@ (define-public ghc-8.10
|
||||||
"https://www.haskell.org/ghc/dist/"
|
"https://www.haskell.org/ghc/dist/"
|
||||||
version "/ghc-" version "-testsuite.tar.xz"))
|
version "/ghc-" version "-testsuite.tar.xz"))
|
||||||
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
|
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
|
||||||
"ghc-testsuite-grep-compat.patch"))
|
"ghc-testsuite-grep-compat.patch"
|
||||||
|
"ghc-testsuite-recomp015-execstack.patch"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz"))
|
"1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz"))
|
||||||
|
@ -1398,7 +1401,8 @@ (define-public ghc-9.0
|
||||||
"/ghc-" version "-src.tar.xz"))
|
"/ghc-" version "-src.tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"15wii8can2r3dcl6jjmd50h2jvn7rlmn05zb74d2scj6cfwl43hl"))))
|
"15wii8can2r3dcl6jjmd50h2jvn7rlmn05zb74d2scj6cfwl43hl"))
|
||||||
|
(patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(;; GHC 9.0.2 must be built with GHC >= 8.8
|
`(;; GHC 9.0.2 must be built with GHC >= 8.8
|
||||||
("ghc-bootstrap" ,ghc-8.10)
|
("ghc-bootstrap" ,ghc-8.10)
|
||||||
|
@ -1411,7 +1415,8 @@ (define-public ghc-9.0
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1m5fzhr4gjn9ni8gxx7ag3fkbw1rspjzgv39mnfb0nkm5mw70v3s"))
|
"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)))
|
(modules '((guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
;; collections.Iterable was moved to collections.abc in Python 3.10.
|
;; collections.Iterable was moved to collections.abc in Python 3.10.
|
||||||
|
@ -1444,7 +1449,8 @@ (define-public ghc-9.2
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"18b7ln4gx2vy62jpv3z5slv3zfxmxnmkgajznks15zglddwd24sz"))
|
"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
|
(arguments
|
||||||
(substitute-keyword-arguments (package-arguments base)
|
(substitute-keyword-arguments (package-arguments base)
|
||||||
((#:phases phases '%standard-phases)
|
((#:phases phases '%standard-phases)
|
||||||
|
@ -1475,7 +1481,8 @@ (define-public ghc-9.2
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0cmmwhcwv9fjzvmgjj85d354858qqbmqfzaz5160xqj4yl9zk225"))
|
"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
|
,@(filter (match-lambda
|
||||||
(("ghc-bootstrap" . _) #f)
|
(("ghc-bootstrap" . _) #f)
|
||||||
(("ghc-testsuite" . _) #f)
|
(("ghc-testsuite" . _) #f)
|
||||||
|
@ -1565,7 +1572,8 @@ (define-public ghc-9.4
|
||||||
"/ghc-" version "-src.tar.xz"))
|
"/ghc-" version "-src.tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))))
|
"1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))
|
||||||
|
(patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
|
||||||
(arguments
|
(arguments
|
||||||
(substitute-keyword-arguments (package-arguments base)
|
(substitute-keyword-arguments (package-arguments base)
|
||||||
((#:phases phases '%standard-phases)
|
((#:phases phases '%standard-phases)
|
||||||
|
@ -1583,7 +1591,8 @@ (define-public ghc-9.4
|
||||||
version "/ghc-" version "-testsuite.tar.xz"))
|
version "/ghc-" version "-testsuite.tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))))
|
"04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))
|
||||||
|
(patches (search-patches "ghc-testsuite-recomp015-execstack.patch"))))
|
||||||
("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
|
("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
|
||||||
("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
|
("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
|
||||||
,@(filter (match-lambda
|
,@(filter (match-lambda
|
||||||
|
|
33
gnu/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch
Normal file
33
gnu/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
From d61f742876bdf2cd32e76f7bca389106ad99a316 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ben Gamari <ben@smart-cactus.org>
|
||||||
|
Date: Tue, 3 May 2022 12:40:43 -0400
|
||||||
|
Subject: [PATCH] rts/ghc.mk: Only build StgCRunAsm.S when it is needed
|
||||||
|
|
||||||
|
Previously the make build system unconditionally included StgCRunAsm.S
|
||||||
|
in the link, meaning that the RTS would require an execstack
|
||||||
|
unnecessarily.
|
||||||
|
|
||||||
|
Fixes #21478.
|
||||||
|
---
|
||||||
|
rts/ghc.mk | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/rts/ghc.mk b/rts/ghc.mk
|
||||||
|
index 36a82f9f2c8..0e56515a569 100644
|
||||||
|
--- a/rts/ghc.mk
|
||||||
|
+++ b/rts/ghc.mk
|
||||||
|
@@ -57,8 +57,11 @@ ifneq "$(PORTING_HOST)" "YES"
|
||||||
|
|
||||||
|
# unregisterised builds use the mini interpreter
|
||||||
|
ifneq "$(GhcUnregisterised)" "YES"
|
||||||
|
+# use StgCRunAsm.S on ppc, ppc64, s390x, and riscv64
|
||||||
|
+ifneq "$(findstring $(TargetArch_CPP), ppc)$(findstring $(TargetArch_CPP), ppc64)$(findstring $(TargetArch_CPP), s390x)$(findstring $(TargetArch_CPP), riscv64)" ""
|
||||||
|
rts_S_SRCS += rts/StgCRunAsm.S
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
|
||||||
|
# select adjustor implementation. This much match the logic in rts.cabal.in.
|
||||||
|
ifneq "$(CLEANING)" "YES"
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
10
gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch
Normal file
10
gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- a/testsuite/tests/driver/recomp015/Makefile 2024-01-13 16:22:42.643106725 +0100
|
||||||
|
+++ b/testsuite/tests/driver/recomp015/Makefile 2024-01-13 16:23:18.406867917 +0100
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
# number of sections)
|
||||||
|
'$(TEST_HC)' $(TEST_HC_OPTS) Generate.hs
|
||||||
|
./Generate > ManySections.s
|
||||||
|
+ echo '.section .note.GNU-stack,"",@progbits' > ManySections.s
|
||||||
|
echo 'main = putStrLn "Running main..."' > Main.hs
|
||||||
|
'$(TEST_HC)' $(TEST_HC_OPTS) -c ManySections.s
|
||||||
|
'$(TEST_HC)' $(TEST_HC_OPTS) --make -O Main.hs ManySections.o
|
Loading…
Reference in a new issue