[PATCH haskell-team 1/3] gnu: ghc-next: Update to version 9.4.8

  • Open
  • quality assurance status badge
Details
3 participants
  • Lars-Dominik Braun
  • Saku Laesvuori
  • Suhail
Owner
unassigned
Submitted by
Saku Laesvuori
Severity
normal
S
S
Saku Laesvuori wrote on 20 Dec 2023 08:10
(address . guix-patches@gnu.org)(name . Saku Laesvuori)(address . saku@laesvuori.fi)
5cdfcf3aadfbe42655b941764d5a700b6d4bca88.1703056111.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-9.4): Update to version 9.4.8.
[native-inputs]<ghc-testsuite>: Add a patch to fix the testsuite.
(ghc-happy-bootstrap-for-9.4): Update to version 1.20.1.1.
* gnu/packages/patches/ghc-9.4-testsuite-fixes.patch: New patch.

Change-Id: I5ef72f83e5feed1defb706bafa934077fda1553c
---
gnu/packages/haskell.scm | 11 +-
.../patches/ghc-9.4-testsuite-fixes.patch | 119 ++++++++++++++++++
2 files changed, 125 insertions(+), 5 deletions(-)
create mode 100644 gnu/packages/patches/ghc-9.4-testsuite-fixes.patch

Toggle diff (177 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 62815efbb1..88826fb31f 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1437,14 +1437,14 @@ (define ghc-happy-bootstrap-for-9.4
(hidden-package
(package
(name "ghc-happy")
- (version "1.20.0")
+ (version "1.20.1.1")
(source
(origin
(method url-fetch)
(uri (hackage-uri "happy" version))
(sha256
(base32
- "1346r2x5ravs5fqma65bzjragqbb2g6v41wz9maknwm2jf7kl79v"))))
+ "06w8g3lfk2ynrfhqznhp1mnp8a5b64lj6qviixpndzf5lv2psklb"))))
(build-system haskell-build-system)
(arguments
(list #:haskell ghc-bootstrap-for-9.4
@@ -1462,14 +1462,14 @@ (define-public ghc-9.4
(package
(inherit base)
(name "ghc-next")
- (version "9.4.4")
+ (version "9.4.8")
(source (origin
(method url-fetch)
(uri (string-append "https://www.haskell.org/ghc/dist/" version
"/ghc-" version "-src.tar.xz"))
(sha256
(base32
- "1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))))
+ "0pmqg9846lanb0hcyxhgr9ipzq33rfldxj7ln0j3qgpyczmhgx0b"))))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases '%standard-phases)
@@ -1487,7 +1487,8 @@ (define-public ghc-9.4
version "/ghc-" version "-testsuite.tar.xz"))
(sha256
(base32
- "04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))))
+ "159wsqnqpqb0pxa3zyhvyg07wxr2zz7v52h52wkplw4pn12dsidc"))
+ (patches (search-patches "ghc-9.4-testsuite-fixes.patch"))))
("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
,@(filter (match-lambda
diff --git a/gnu/packages/patches/ghc-9.4-testsuite-fixes.patch b/gnu/packages/patches/ghc-9.4-testsuite-fixes.patch
new file mode 100644
index 0000000000..f394632add
--- /dev/null
+++ b/gnu/packages/patches/ghc-9.4-testsuite-fixes.patch
@@ -0,0 +1,119 @@
+From 3acd8aa948a27465cffc8e2ab56229485e2a5b98 Mon Sep 17 00:00:00 2001
+From: Saku Laesvuori <saku@laesvuori.fi>
+Date: Tue, 5 Dec 2023 22:49:45 +0200
+Subject: [PATCH] Fix tests
+
+* replaces egrep with grep -E
+* removes unnecessary escaping in some grep regular expressions
+* adds a missing include header to a makefile
+---
+ testsuite/tests/cabal/cabal01/Makefile | 2 +-
+ testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile | 4 ++++
+ testsuite/tests/haddock/perf/Makefile | 8 ++++----
+ testsuite/tests/hsc2hs/Makefile | 4 ++--
+ testsuite/tests/numeric/should_run/T7014.primops | 4 ++--
+ testsuite/tests/simplCore/should_compile/Makefile | 4 ++--
+ 6 files changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/testsuite/tests/cabal/cabal01/Makefile b/testsuite/tests/cabal/cabal01/Makefile
+index 004e4c75..6ec499c9 100644
+--- a/testsuite/tests/cabal/cabal01/Makefile
++++ b/testsuite/tests/cabal/cabal01/Makefile
+@@ -5,7 +5,7 @@ include $(TOP)/mk/test.mk
+ # Find all the env variables starting with CI_ to unset them.
+ # Otherwise, we might run into environment length limitations on Windows.
+ # (See `xargs --show-limits`.)
+-VARS_TO_UNSET := $(shell env | grep ^CI_ | egrep -o '^[^=]+')
++VARS_TO_UNSET := $(shell env | grep ^CI_ | grep -E -o '^[^=]+')
+ unexport $(VARS_TO_UNSET)
+
+ clean:
+diff --git a/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile b/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile
+index fd64d23f..cb669db3 100644
+--- a/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile
++++ b/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile
+@@ -1,3 +1,7 @@
++TOP=../../../..
++include $(TOP)/mk/boilerplate.mk
++include $(TOP)/mk/test.mk
++
+ .PHONY: GHCiPrimCall
+ GHCiPrimCall:
+ '$(TEST_HC)' $(TEST_HC_OPTS) -fPIC -v0 -c GHCiPrimCall_cmm.cmm
+diff --git a/testsuite/tests/haddock/perf/Makefile b/testsuite/tests/haddock/perf/Makefile
+index b67b52f2..ff2f7ebb 100644
+--- a/testsuite/tests/haddock/perf/Makefile
++++ b/testsuite/tests/haddock/perf/Makefile
+@@ -4,12 +4,12 @@ include $(TOP)/mk/test.mk
+
+ # We accept a 5% increase in parser allocations due to -haddock
+ haddock_parser_perf :
+- WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Parser | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
+- WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Parser | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Parser | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Parser | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
+ awk "BEGIN { ratio = ($$WithHaddock / $$WithoutHaddock); if (ratio > 1.05) {print \"-haddock allocation ratio too high:\", ratio; exit 1} else {exit 0} }"
+
+ # Similarly for the renamer
+ haddock_renamer_perf :
+- WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Renamer | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
+- WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Renamer | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Renamer | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Renamer | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
+ awk "BEGIN { ratio = ($$WithHaddock / $$WithoutHaddock); if (ratio > 1.05) {print \"-haddock allocation ratio too high:\", ratio; exit 1} else {exit 0} }"
+diff --git a/testsuite/tests/hsc2hs/Makefile b/testsuite/tests/hsc2hs/Makefile
+index d0b2d249..95b011c8 100644
+--- a/testsuite/tests/hsc2hs/Makefile
++++ b/testsuite/tests/hsc2hs/Makefile
+@@ -52,9 +52,9 @@ T11004:
+ T12504:
+ '$(HSC2HS)' $(HSC2HS_OPTS) T12504/path/to/$@.hsc
+ ifeq "$(WINDOWS)" "YES"
+- grep '{-# LINE 1 \"T12504\\\\path\\\\to\\\\$@\.hsc\" #-}' T12504/path/to/$@.hs
++ grep '{-# LINE 1 "T12504\\\\path\\\\to\\\\$@\.hsc" #-}' T12504/path/to/$@.hs
+ else
+- grep '{-# LINE 1 \"T12504/path/to/$@\.hsc\" #-}' T12504/path/to/$@.hs
++ grep '{-# LINE 1 "T12504/path/to/$@\.hsc" #-}' T12504/path/to/$@.hs
+ endif
+
+ .PHONY: T15758
+diff --git a/testsuite/tests/numeric/should_run/T7014.primops b/testsuite/tests/numeric/should_run/T7014.primops
+index 3243666d..c807fb45 100644
+--- a/testsuite/tests/numeric/should_run/T7014.primops
++++ b/testsuite/tests/numeric/should_run/T7014.primops
+@@ -1,8 +1,8 @@
+ and#
+ or#
+ uncheckedShift.*#
+-\+#
+-\-#
+++#
++-#
+ \*#
+ quotInt#
+ remInt#
+diff --git a/testsuite/tests/simplCore/should_compile/Makefile b/testsuite/tests/simplCore/should_compile/Makefile
+index b5041800..c56e04f6 100644
+--- a/testsuite/tests/simplCore/should_compile/Makefile
++++ b/testsuite/tests/simplCore/should_compile/Makefile
+@@ -66,7 +66,7 @@ T13367:
+
+ T8832:
+ $(RM) -f T8832.o T8832.hi
+- '$(TEST_HC)' $(TEST_HC_OPTS) -O -c -ddump-simpl -dsuppress-ticks T8832.hs | egrep '^[a-zA-Z0-9]+ ='
++ '$(TEST_HC)' $(TEST_HC_OPTS) -O -c -ddump-simpl -dsuppress-ticks T8832.hs | grep -E '^[a-zA-Z0-9]+ ='
+
+ T12603:
+ $(RM) -f T12603.o T12603.hi
+@@ -259,7 +259,7 @@ str-rules:
+ # g should have been collapsed into one defininition by CSE.
+ .PHONY: T13340
+ T13340:
+- '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T13340.hs -ddump-simpl -dsuppress-all | grep -c '\+#'
++ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T13340.hs -ddump-simpl -dsuppress-all | grep -c '+#'
+
+
+ # We expect to see all dictionaries specialized away.
+--
+2.41.0
+

base-commit: dc2b59ddc1e8f510935777db40e881896f7a0cab
--
2.41.0
S
S
Saku Laesvuori wrote on 20 Dec 2023 08:13
[PATCH haskell-team 2/3] gnu: ghc: Use version 9.4.8 as the default
(address . 67921@debbugs.gnu.org)(name . Saku Laesvuori)(address . saku@laesvuori.fi)
c4f97924d832d52aa15366b4e2397568e2d96868.1703056111.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-9.4): Rename from ghc-next to ghc.
(ghc): Redefine as ghc-9.4 instead of ghc-9.2.

Change-Id: I5696907ea6e2fac656d21d68c2ac89d549767ec2
---
gnu/packages/haskell.scm | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

Toggle diff (39 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 88826fb31f..ebe5bc6dc8 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1392,12 +1392,6 @@ (define-public ghc-9.2
(file-pattern ".*\\.conf\\.d$")
(file-type 'directory)))))))
-;; Versions newer than ghc defined below (i.e. the compiler
-;; haskell-build-system uses) should use ghc-next as their name to
-;; ensure ghc (without version specification) and ghc-* packages are
-;; always compatible. See https://issues.guix.gnu.org/issue/47335.
-(define-public ghc ghc-9.2)
-
;; 9.4 is the last version to support the make-based build system,
;; but it boot with 9.2, only 9.0 is supported.
(define ghc-bootstrap-for-9.4 ghc-9.0)
@@ -1461,7 +1455,7 @@ (define-public ghc-9.4
(let ((base ghc-9.2))
(package
(inherit base)
- (name "ghc-next")
+ (name "ghc")
(version "9.4.8")
(source (origin
(method url-fetch)
@@ -1503,4 +1497,10 @@ (define-public ghc-9.4
(file-pattern ".*\\.conf\\.d$")
(file-type 'directory)))))))
+;; Versions newer than ghc defined below (i.e. the compiler
+;; haskell-build-system uses) should use ghc-next as their name to
+;; ensure ghc (without version specification) and ghc-* packages are
+;; always compatible. See https://issues.guix.gnu.org/issue/47335.
+(define-public ghc ghc-9.4)
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 20 Dec 2023 08:13
[PATCH haskell-team 3/3] guix: haskell-build-system: Hide dependecies from ghc's package db
(address . 67921@debbugs.gnu.org)(name . Saku Laesvuori)(address . saku@laesvuori.fi)
6030eebe203e81a45acda76c95bcbfb064ff5e74.1703056111.git.saku@laesvuori.fi
A Haskell package P contains information about all other haskell
packages P_n it depends on. This commit hides the packages P_n in the
package database stored in P, which enables being explicit about which
haskell packages one wants to be visible in their profile.

* guix/build/haskell-build-system.scm
(register)[install-transitive-deps]: Set the 'exposed' field to False in
the dependencies' .conf files. Remove a comment about symlinking because
the copied files are now modified.

Change-Id: I66332cd49e6036689873d9435036c9f876216f1b
---
guix/build/haskell-build-system.scm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

Toggle diff (18 lines)
diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm
index 0e94cf59a5..83c742427a 100644
--- a/guix/build/haskell-build-system.scm
+++ b/guix/build/haskell-build-system.scm
@@ -214,7 +214,10 @@ (define* (register #:key name system inputs outputs #:allow-other-keys)
(unless dep-conf*-exists?
(unless dep-conf-exists?
(error (format #f "File ~a does not exist. This usually means the dependency ~a is missing. Was checking conf-file ~a." dep-conf id conf-file)))
- (copy-file dep-conf dep-conf*)) ;XXX: maybe symlink instead?
+ (copy-file dep-conf dep-conf*)
+ (substitute* dep-conf*
+ (("(exposed:[ \t]*)True" _ field)
+ (string-append field "False"))))
(loop (vhash-cons id #t seen) next-tail))
(loop seen tail))))))
--
2.41.0
L
L
Lars-Dominik Braun wrote on 22 Dec 2023 11:07
Re: [bug#67921] [PATCH haskell-team 2/3] gnu: ghc: Use version 9.4.8 as the default
(name . Saku Laesvuori)(address . saku@laesvuori.fi)(address . 67921@debbugs.gnu.org)
ZYVfxTBW9lsUtMFW@noor.fritz.box
Hi,

Toggle quote (2 lines)
> * gnu/packages/haskell.scm (ghc-9.4): Rename from ghc-next to ghc.

why 9.4 and not 9.6? Stackage 22.0 for 9.6 has just been released and
if we go for a big upgrade (you’ll have to update the entire Haskell
ecosystem if you update GHC), we might as well just make the jump to
GHC 9.6 and Stackage 22.0.

Lars
S
S
Saku Laesvuori wrote on 22 Dec 2023 11:33
(name . Lars-Dominik Braun)(address . lars@6xq.net)(address . 67921@debbugs.gnu.org)
o22z5twrua57nzv5aqyldigbempxwglsa6xh2ytpxif4l2nacc@hgfkyqqcsbmt
Toggle quote (9 lines)
> Hi,
>
> > * gnu/packages/haskell.scm (ghc-9.4): Rename from ghc-next to ghc.
>
> why 9.4 and not 9.6? Stackage 22.0 for 9.6 has just been released and
> if we go for a big upgrade (you’ll have to update the entire Haskell
> ecosystem if you update GHC), we might as well just make the jump to
> GHC 9.6 and Stackage 22.0.

Because I wrote that patch when there wasn't yet a Stackage release for
ghc 9.6. But if a stackage release for it has now been released I'll try
updating it to 9.6.

Regarding the big upgrade, I have been wondering how could the cabal
revisions be updated automatically. Is there a simpler way than to

1. include a procedure for editing the declaration in the <upstream-updater>
2. refactor the entire updater code to use that procedure
3. implement completely new logic for adding fields to package definitions?

That seems like a lot of work in code that I don't know all that well.
Is there some reason why the revision is not part of the package
version? Moving it there would probably be much easier than modifying
guix refresh (but then again, if those modifications should be done
anyway it doesn't really reduce the amount of work)

- Saku
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoMkZR3NPB29fCOn/JX0oSiodOjIFAmWFZfEACgkQJX0oSiod
OjL3EhAAkQSMY/WVBDEndRqbgCc1TMLpeeC6GXP1xFY6xmlkNG5CRPjVEpf7Yq2N
YaMbQq1qAnLRRa4WHmq/hFvbpgaNXut6BiOruePQ+0LWl6Zay4ITd0OO8Bjq8weu
gaNdBpLbCKBWw3mEBbZdVPpjFtI6xBWf/FZRMbLTvOUvfZPuDfTXpyRQMrUGNXzr
NU/GkHuIktIMN3neP7Z5lQhojTBSA6WAaq+NrQGQb0zWocwVurxnGFF77/LfUOQ6
KgpqiyJRK+LPhiJQoU3M13LUXxiMHzzAojjJx6WHtRQtM4AAbD7PvQUZbo0soez9
XJm+KTWUMT1RYkvRdMtzhPmRkBQJ0fWOETFcFAardn18cKFdl9PLPz3QD4Wtl9yd
0vUp6CrNQl/4TM2A/05v6AQWv87lAFy27Q0CjfU4WKWiRLFPPEsCQQilWRrYl29e
i40ce4t0MXNWIBCsrp2wivG6NVtxIAPbMG/d5v+ocyEF2LoVxRrxDbVg90Wyb4oJ
KYRiIxT4a57q0iUMFuyaZLnQ0T6tK9SY8xTGLf02iMsYQk58iD/d+rW5guSvM8Dc
ueHY+TMOp//VaMiTcPlPBOiw+IJmZ0AB6ivtKNUQZK9NVNGgGUrZU1BX8eL7tfr1
1SOCFpz6jwLbghbPYI/85zCxMEBTUWvsLGDDiqRjZXWJj093D8Q=
=fZSa
-----END PGP SIGNATURE-----


L
L
Lars-Dominik Braun wrote on 22 Dec 2023 12:03
(name . Saku Laesvuori)(address . saku@laesvuori.fi)(address . 67921@debbugs.gnu.org)
ZYVtFfZ5DdWiYaHl@noor.fritz.box
Hi Saku,

Toggle quote (4 lines)
> Because I wrote that patch when there wasn't yet a Stackage release for
> ghc 9.6. But if a stackage release for it has now been released I'll try
> updating it to 9.6.

oh, I see. I believe 9.6 drops the Makefile-based build-system, making
it a slightly more involved upgrade.

Toggle quote (3 lines)
> Regarding the big upgrade, I have been wondering how could the cabal
> revisions be updated automatically.

I’ve been using the script attached, which basically overwrites the
entire package, except for synopsis and description.

Toggle quote (3 lines)
> Is there some reason why the revision is not part of the package
> version?

I don’t know.

Toggle quote (4 lines)
> Moving it there would probably be much easier than modifying
> guix refresh (but then again, if those modifications should be done
> anyway it doesn't really reduce the amount of work)

The thing is that we still need the cabal file hash somewhere and it
needs to be updated. My idea was to create a new HACKAGE-URI procedure,
which accepts package name, version, revision and cabal file hash and
add some black magic to combine the new cabal file with the tarball from
hackage. Code exists for this, but I’ve never been able to finalize it.

Lars
Attachment: haskell-update.scm
L
L
Lars-Dominik Braun wrote on 6 Jan 19:42 +0100
Re: [bug#67921] [PATCH haskell-team 3/3] guix: haskell-build-system: Hide dependecies from ghc's package db
(name . Saku Laesvuori)(address . saku@laesvuori.fi)(address . 67921@debbugs.gnu.org)
ZZmfF_c4kxUV0BZl@noor.fritz.box
Hi,

Toggle quote (5 lines)
> A Haskell package P contains information about all other haskell
> packages P_n it depends on. This commit hides the packages P_n in the
> package database stored in P, which enables being explicit about which
> haskell packages one wants to be visible in their profile.

oddly enough this patch causes the 'check phase of ghc-doctest to
not finish/hang. Any idea why?

Cheers,
Lars
S
S
Saku Laesvuori wrote on 8 Jan 08:09 +0100
(name . Lars-Dominik Braun)(address . lars@6xq.net)(address . 67921@debbugs.gnu.org)
vceyvgylkpftupwxlm4nc2555nvrg6kdeqsghv4lo722po57el@t5xc7wwn5b2r
Toggle quote (10 lines)
> Hi,
>
> > A Haskell package P contains information about all other haskell
> > packages P_n it depends on. This commit hides the packages P_n in the
> > package database stored in P, which enables being explicit about which
> > haskell packages one wants to be visible in their profile.
>
> oddly enough this patch causes the 'check phase of ghc-doctest to
> not finish/hang. Any idea why?

No idea, I'll look into it more when I get GHC 9.6 packaged.
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoMkZR3NPB29fCOn/JX0oSiodOjIFAmWbn6MACgkQJX0oSiod
OjIKLhAAiQ5m3svlXkdRKUQsXAHjsDs8qA6CAOtegPMsvd/fEUn4GOaIJ6wYxF9T
RDrxKYd03eJ3IcNeOftlGEE4lhaaP0mqotQKx640tzlxwH0yPt1E3GNYfcgay1Ti
VKqz4eOyeCvustpykLh4MCx0pDKEYvCr8BV7UyRHx6O+g2X1xAUEvQL1SnJaa1Dj
QUQbDR+4xIvbUqz8XqrJxO7bx+8ipP481vhciXbFbGkwJ4BFxuy1NRY1/dMwefEK
NefZqKPgf9NWGLbdiS0S/1LNwOBs3vcbkh+Kr+MH4MY7XQ4tnjXTmRm9BHKjcZXZ
Jc9BaCMjlwAulGE0QRsFg8C0yjYAiX8NAEnpJT0/dST/3WeFqjYEBvIbjLQd3ZfU
nl4290VL13IIwNpYtYoNSIXbKbReYUmqcDK2O5/ndezCI7ceHwTJBW5JPfghc9Cg
DgN49kIScevnaVt95cbsZfXYFilWS6NTye2hFT4uUk9eUwaIWmisX+a6HYkhpDfU
B3wDdlKXqtvI+qYoHVZ8w5smmkhBcyRCh+GsPRfv/q/l6Ph17q42fIRuPnRweHJ8
wVv185A7e9B3tUIGyp7l+bTB/KpuN0xmIm1zAEWMosc4UaIjRUvBB8DtUX65EW8C
lWgCvbiFEXB72Hws1lPCUuOUgCcortAY6jSQyA/jRLfCMUu/D8k=
=tkO5
-----END PGP SIGNATURE-----


S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[WIP PATCH v2 00/23] Update GHC to 9.6.4
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
cover.1707827100.git.saku@laesvuori.fi
This series

- updates ghc-next to 9.4.8
- adds bootstrap dependencies for Hadrian (ghc-9.6 build system)
- adds ghc-9.6
- changes the default ghc to ghc-9.6.

The compiler seems to work (I have built some haskell packages with it
after running `guix refresh` and disabling it's tests) but some tests
fail with weird errors like the following:

```
ld: cannot find \: No such file or directory
ld: cannot find \: No such file or directory
ld: cannot find spaces/testsuite/tests/backpack/cabal/T16219/T16219.run/dist/build/library-a-impl: No such file or directory
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)
make: *** [Makefile:12: T16219] Error 1
```

Something seems to be failing due to the tests being run in
'/tmp/guix-build-ghc-9.6.4.drv-0/ghctest-lgjqumae/test spaces/testsuite/...'
but I can't figure out what it is. I've tried tracing the tests and it
seems that ld is called with arguments '/tmp/.../test' '\' '\' 'spaces/...'
which obviously can't work, but I could not pin down where the escaping
fails. This happens with just ~40 out of almost 10 000 tests which makes
it even more confusing.

Any ideas what could be causing the failures or should I just try
disabling those tests?

I also noticed that hidden packages shadow other packages, for example
the hidden base package from any haskell package can shadow the exposed
version from ghc. I guess I'll try implementing a fix for
https://issues.guix.gnu.org/66347by adding a new profile hook that
creates a package environment[1] for ghc.


Saku Laesvuori (23):
gnu: ghc-next: Update to version 9.4.8
gnu: Add ghc-js-flot-bootstrap-for-9.6
gnu: Add ghc-clock-bootstrap-for-9.6
gnu: Add ghc-extra-bootstrap-for-9.6
gnu: Add ghc-hashable-bootstrap-for-9.6
gnu: Add ghc-splitmix-bootstrap-for-9.6
gnu: Add ghc-random-bootstrap-for-9.6
gnu: Add ghc-primitive-bootstrap-for-9.6
gnu: Add ghc-js-jquery-bootstrap-for-9.6
gnu: Add ghc-utf8-string-bootstrap-for-9.6
gnu: Add ghc-heaps-bootstrap-for-9.6
gnu: Add ghc-js-dgtable-bootstrap-for-9.6
gnu: Add ghc-nats-bootstrap-for-9.6
gnu: Add ghc-tagged-bootstrap-for-9.6
gnu: Add ghc-semigroups-bootstrap-for-9.6
gnu: Add ghc-base16-bytestring-bootstrap-for-9.6
gnu: Add ghc-cryptohash-sha256-bootstrap-for-9.6
gnu: Add ghc-unordered-containers-bootstrap-for-9.6
gnu: Add ghc-filepattern-bootstrap-for-9.6
gnu: Add ghc-shake-bootstrap-for-9.6
gnu: Add hadrian-for-ghc-9.6
gnu: Add ghc-9.6
gnu: ghc: Update to version 9.6.4

gnu/packages/haskell.scm | 686 +++++++++++++++++-
.../patches/ghc-9.4-testsuite-fixes.patch | 119 +++
2 files changed, 792 insertions(+), 13 deletions(-)
create mode 100644 gnu/packages/patches/ghc-9.4-testsuite-fixes.patch


base-commit: f2102cb5b9239be2ed2023b908b726af542e0124
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 01/23] gnu: ghc-next: Update to version 9.4.8
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
a034d509b200281d69d32f56b67949b4c20ce5a1.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-9.4): Update to version 9.4.8.
[native-inputs]<ghc-testsuite>: Add a patch to fix the testsuite.
(ghc-happy-bootstrap-for-9.4): Update to version 1.20.1.1.
* gnu/packages/patches/ghc-9.4-testsuite-fixes.patch: New patch.

Change-Id: I5ef72f83e5feed1defb706bafa934077fda1553c
---
gnu/packages/haskell.scm | 11 +-
.../patches/ghc-9.4-testsuite-fixes.patch | 119 ++++++++++++++++++
2 files changed, 125 insertions(+), 5 deletions(-)
create mode 100644 gnu/packages/patches/ghc-9.4-testsuite-fixes.patch

Toggle diff (175 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 62815efbb1..88826fb31f 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1437,14 +1437,14 @@ (define ghc-happy-bootstrap-for-9.4
(hidden-package
(package
(name "ghc-happy")
- (version "1.20.0")
+ (version "1.20.1.1")
(source
(origin
(method url-fetch)
(uri (hackage-uri "happy" version))
(sha256
(base32
- "1346r2x5ravs5fqma65bzjragqbb2g6v41wz9maknwm2jf7kl79v"))))
+ "06w8g3lfk2ynrfhqznhp1mnp8a5b64lj6qviixpndzf5lv2psklb"))))
(build-system haskell-build-system)
(arguments
(list #:haskell ghc-bootstrap-for-9.4
@@ -1462,14 +1462,14 @@ (define-public ghc-9.4
(package
(inherit base)
(name "ghc-next")
- (version "9.4.4")
+ (version "9.4.8")
(source (origin
(method url-fetch)
(uri (string-append "https://www.haskell.org/ghc/dist/" version
"/ghc-" version "-src.tar.xz"))
(sha256
(base32
- "1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))))
+ "0pmqg9846lanb0hcyxhgr9ipzq33rfldxj7ln0j3qgpyczmhgx0b"))))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases '%standard-phases)
@@ -1487,7 +1487,8 @@ (define-public ghc-9.4
version "/ghc-" version "-testsuite.tar.xz"))
(sha256
(base32
- "04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))))
+ "159wsqnqpqb0pxa3zyhvyg07wxr2zz7v52h52wkplw4pn12dsidc"))
+ (patches (search-patches "ghc-9.4-testsuite-fixes.patch"))))
("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
,@(filter (match-lambda
diff --git a/gnu/packages/patches/ghc-9.4-testsuite-fixes.patch b/gnu/packages/patches/ghc-9.4-testsuite-fixes.patch
new file mode 100644
index 0000000000..f394632add
--- /dev/null
+++ b/gnu/packages/patches/ghc-9.4-testsuite-fixes.patch
@@ -0,0 +1,119 @@
+From 3acd8aa948a27465cffc8e2ab56229485e2a5b98 Mon Sep 17 00:00:00 2001
+From: Saku Laesvuori <saku@laesvuori.fi>
+Date: Tue, 5 Dec 2023 22:49:45 +0200
+Subject: [PATCH] Fix tests
+
+* replaces egrep with grep -E
+* removes unnecessary escaping in some grep regular expressions
+* adds a missing include header to a makefile
+---
+ testsuite/tests/cabal/cabal01/Makefile | 2 +-
+ testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile | 4 ++++
+ testsuite/tests/haddock/perf/Makefile | 8 ++++----
+ testsuite/tests/hsc2hs/Makefile | 4 ++--
+ testsuite/tests/numeric/should_run/T7014.primops | 4 ++--
+ testsuite/tests/simplCore/should_compile/Makefile | 4 ++--
+ 6 files changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/testsuite/tests/cabal/cabal01/Makefile b/testsuite/tests/cabal/cabal01/Makefile
+index 004e4c75..6ec499c9 100644
+--- a/testsuite/tests/cabal/cabal01/Makefile
++++ b/testsuite/tests/cabal/cabal01/Makefile
+@@ -5,7 +5,7 @@ include $(TOP)/mk/test.mk
+ # Find all the env variables starting with CI_ to unset them.
+ # Otherwise, we might run into environment length limitations on Windows.
+ # (See `xargs --show-limits`.)
+-VARS_TO_UNSET := $(shell env | grep ^CI_ | egrep -o '^[^=]+')
++VARS_TO_UNSET := $(shell env | grep ^CI_ | grep -E -o '^[^=]+')
+ unexport $(VARS_TO_UNSET)
+
+ clean:
+diff --git a/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile b/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile
+index fd64d23f..cb669db3 100644
+--- a/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile
++++ b/testsuite/tests/ghci/should_run/GHCiPrimCall/Makefile
+@@ -1,3 +1,7 @@
++TOP=../../../..
++include $(TOP)/mk/boilerplate.mk
++include $(TOP)/mk/test.mk
++
+ .PHONY: GHCiPrimCall
+ GHCiPrimCall:
+ '$(TEST_HC)' $(TEST_HC_OPTS) -fPIC -v0 -c GHCiPrimCall_cmm.cmm
+diff --git a/testsuite/tests/haddock/perf/Makefile b/testsuite/tests/haddock/perf/Makefile
+index b67b52f2..ff2f7ebb 100644
+--- a/testsuite/tests/haddock/perf/Makefile
++++ b/testsuite/tests/haddock/perf/Makefile
+@@ -4,12 +4,12 @@ include $(TOP)/mk/test.mk
+
+ # We accept a 5% increase in parser allocations due to -haddock
+ haddock_parser_perf :
+- WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Parser | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
+- WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Parser | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Parser | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Parser | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
+ awk "BEGIN { ratio = ($$WithHaddock / $$WithoutHaddock); if (ratio > 1.05) {print \"-haddock allocation ratio too high:\", ratio; exit 1} else {exit 0} }"
+
+ # Similarly for the renamer
+ haddock_renamer_perf :
+- WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Renamer | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
+- WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Renamer | egrep -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithoutHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -O0 Fold.hs 2>/dev/null | grep Renamer | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
++ WithHaddock=$(shell '$(TEST_HC)' $(TEST_HC_OPTS) -fno-code -fforce-recomp -Wno-all -ddump-timings -haddock -O0 Fold.hs 2>/dev/null | grep Renamer | grep -E -o 'alloc=[0-9]+' | cut -c7- ) ; \
+ awk "BEGIN { ratio = ($$WithHaddock / $$WithoutHaddock); if (ratio > 1.05) {print \"-haddock allocation ratio too high:\", ratio; exit 1} else {exit 0} }"
+diff --git a/testsuite/tests/hsc2hs/Makefile b/testsuite/tests/hsc2hs/Makefile
+index d0b2d249..95b011c8 100644
+--- a/testsuite/tests/hsc2hs/Makefile
++++ b/testsuite/tests/hsc2hs/Makefile
+@@ -52,9 +52,9 @@ T11004:
+ T12504:
+ '$(HSC2HS)' $(HSC2HS_OPTS) T12504/path/to/$@.hsc
+ ifeq "$(WINDOWS)" "YES"
+- grep '{-# LINE 1 \"T12504\\\\path\\\\to\\\\$@\.hsc\" #-}' T12504/path/to/$@.hs
++ grep '{-# LINE 1 "T12504\\\\path\\\\to\\\\$@\.hsc" #-}' T12504/path/to/$@.hs
+ else
+- grep '{-# LINE 1 \"T12504/path/to/$@\.hsc\" #-}' T12504/path/to/$@.hs
++ grep '{-# LINE 1 "T12504/path/to/$@\.hsc" #-}' T12504/path/to/$@.hs
+ endif
+
+ .PHONY: T15758
+diff --git a/testsuite/tests/numeric/should_run/T7014.primops b/testsuite/tests/numeric/should_run/T7014.primops
+index 3243666d..c807fb45 100644
+--- a/testsuite/tests/numeric/should_run/T7014.primops
++++ b/testsuite/tests/numeric/should_run/T7014.primops
+@@ -1,8 +1,8 @@
+ and#
+ or#
+ uncheckedShift.*#
+-\+#
+-\-#
+++#
++-#
+ \*#
+ quotInt#
+ remInt#
+diff --git a/testsuite/tests/simplCore/should_compile/Makefile b/testsuite/tests/simplCore/should_compile/Makefile
+index b5041800..c56e04f6 100644
+--- a/testsuite/tests/simplCore/should_compile/Makefile
++++ b/testsuite/tests/simplCore/should_compile/Makefile
+@@ -66,7 +66,7 @@ T13367:
+
+ T8832:
+ $(RM) -f T8832.o T8832.hi
+- '$(TEST_HC)' $(TEST_HC_OPTS) -O -c -ddump-simpl -dsuppress-ticks T8832.hs | egrep '^[a-zA-Z0-9]+ ='
++ '$(TEST_HC)' $(TEST_HC_OPTS) -O -c -ddump-simpl -dsuppress-ticks T8832.hs | grep -E '^[a-zA-Z0-9]+ ='
+
+ T12603:
+ $(RM) -f T12603.o T12603.hi
+@@ -259,7 +259,7 @@ str-rules:
+ # g should have been collapsed into one defininition by CSE.
+ .PHONY: T13340
+ T13340:
+- '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T13340.hs -ddump-simpl -dsuppress-all | grep -c '\+#'
++ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T13340.hs -ddump-simpl -dsuppress-all | grep -c '+#'
+
+
+ # We expect to see all dictionaries specialized away.
+--
+2.41.0
+
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 02/23] gnu: Add ghc-js-flot-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
e56ebd2dc8b475d86eb6bf9d46285db80f3986a0.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-js-flot-bootstrap-for-9.6): New
variable.

Change-Id: Ie01768c263084a3aa38b7120de832913a80fc99a
---
gnu/packages/haskell.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 88826fb31f..cd44d9c915 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1503,4 +1503,34 @@ (define-public ghc-9.4
(file-pattern ".*\\.conf\\.d$")
(file-type 'directory)))))))
+;;; Bootstrap packages for hadrian, the new GHC build system
+
+(define ghc-bootstrap-for-9.6 ghc-9.4)
+
+(define ghc-js-flot-bootstrap-for-9.6
+ (package
+ (name "ghc-js-flot-bootstrap")
+ (version "0.8.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (hackage-uri "js-flot" version))
+ (sha256
+ (base32
+ "0yjyzqh3qzhy5h3nql1fckw0gcfb0f4wj9pm85nafpfqp2kg58hv"))))
+ (build-system haskell-build-system)
+ (arguments (list #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6))
+ (properties '((upstream-name . "js-flot")))
+ (home-page "https://github.com/ndmitchell/js-flot")
+ (synopsis "Obtain minified flot code")
+ (description "This package bundles the minified
+@url{http://www.flotcharts.org/, Flot} code (a jQuery plotting library)
+into a Haskell package, so it can be depended upon by Cabal packages.
+The first three components of the version number match the upstream flot
+version. The package is designed to meet the redistribution
+requirements of downstream users (e.g. Debian).")
+ (license license:expat)))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 03/23] gnu: Add ghc-clock-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
e67642a48939cf99153a168f3c839fe54be8bfb2.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-clock-bootstrap-for-9.6): New
variable.

Change-Id: I78d0997ee749a0c1725490c99308dcd1dc5bfbe5
---
gnu/packages/haskell.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index cd44d9c915..c2f0d8a160 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1533,4 +1533,25 @@ (define ghc-js-flot-bootstrap-for-9.6
requirements of downstream users (e.g. Debian).")
(license license:expat)))
+(define ghc-clock-bootstrap-for-9.6
+ (package
+ (name "ghc-clock-bootstrap")
+ (version "0.8.3")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "clock" version))
+ (sha256
+ (base32
+ "1l850pf1dxjf3i15wc47d64gzkpzgvw0bq13fd8zvklq9kdyap44"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "clock")))
+ (arguments (list #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6))
+ (home-page "https://github.com/corsis/clock")
+ (synopsis "High-resolution clock for Haskell")
+ (description
+ "A package for convenient access to high-resolution clock and
+timer functions of different operating systems via a unified API.")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 05/23] gnu: Add ghc-hashable-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
78c6174b635442b945df8fde9449c329e92fdbc6.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-hashable-bootstrap-for-9.6): New
variable.

Change-Id: Id96f7df459a3db56747cd4204b32b7ad253139a4
---
gnu/packages/haskell.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 717181b424..307231e8f3 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1578,4 +1578,27 @@ (define ghc-clock-bootstrap-for-9.6
timer functions of different operating systems via a unified API.")
(license license:bsd-3)))
+(define ghc-hashable-bootstrap-for-9.6
+ (package
+ (name "ghc-hashable-bootstrap")
+ (version "1.4.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "hashable" version))
+ (sha256
+ (base32
+ "11sycr73821amdz8g0k8c97igi4z7f9xdvgaxlkxhsp6h310bcz1"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "hashable")))
+ (arguments (list #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6))
+ (home-page "http://github.com/haskell-unordered-containers/hashable")
+ (synopsis "Class for types that can be converted to a hash value")
+ (description
+ "This package defines a class, @code{Hashable}, for types that can be
+converted to a hash value. This class exists for the benefit of hashing-based
+data structures. The package provides instances for basic types and a way to
+combine hash values.")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 04/23] gnu: Add ghc-extra-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
7e65460e888f1493803b733a1f7bad7857751d4c.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-extra-bootstrap-for-9.6): New
variable.

Change-Id: I73f1bd1a821bb01fc9d081c78313e583ce8fab6b
---
gnu/packages/haskell.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index c2f0d8a160..717181b424 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1533,6 +1533,30 @@ (define ghc-js-flot-bootstrap-for-9.6
requirements of downstream users (e.g. Debian).")
(license license:expat)))
+(define ghc-extra-bootstrap-for-9.6
+ (package
+ (name "ghc-extra-bootstrap")
+ (version "1.7.12")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "extra" version))
+ (sha256
+ (base32
+ "0g5h8fp0nq4k9asiknw0bhvb10zpfnsixfp0n3xz0rc83pnajwg5"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "extra")))
+ (arguments (list #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6))
+ (inputs (list ghc-clock-bootstrap-for-9.6))
+ (home-page "https://github.com/ndmitchell/extra#readme")
+ (synopsis "Extra Haskell functions")
+ (description
+ "This library provides extra functions for the standard
+Haskell libraries. Most functions are simple additions, filling out missing
+functionality. A few functions are available in later versions of GHC, but
+this package makes them available back to GHC 7.2.")
+ (license license:bsd-3)))
+
(define ghc-clock-bootstrap-for-9.6
(package
(name "ghc-clock-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 07/23] gnu: Add ghc-random-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
18347a8224a94cd64bfb1d8d665abcf2aeb81937.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-random-bootstrap-for-9.6): New variable.

Change-Id: If1a39b27687a63a63dab5aa4c1a366a8ba78196a
---
gnu/packages/haskell.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index ce3ca5083d..9487223636 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1633,4 +1633,26 @@ (define ghc-splitmix-bootstrap-for-9.6
internal state).")
(license license:bsd-3)))
+(define ghc-random-bootstrap-for-9.6
+ (package
+ (name "ghc-random-bootstrap")
+ (version "1.2.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "random" version))
+ (sha256
+ (base32
+ "0xlv1k4sj87akwvj54kq4nrfkzi6qcz1941bf78pnkbaxpvp44iy"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "random")))
+ (arguments (list #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6))
+ (inputs (list ghc-splitmix-bootstrap-for-9.6))
+ (home-page "http://hackage.haskell.org/package/random")
+ (synopsis "Random number library")
+ (description
+ "This package provides a basic random number generation
+library, including the ability to split random number generators.")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 06/23] gnu: Add ghc-splitmix-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
0b77306b9641fc095a6d8ce755b160afaeda9bff.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-splitmix-bootstrap-for-9.6): New
variable.

Change-Id: I65584aa893975015dc44491b120636844af801de
---
gnu/packages/haskell.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 307231e8f3..ce3ca5083d 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1601,4 +1601,36 @@ (define ghc-hashable-bootstrap-for-9.6
combine hash values.")
(license license:bsd-3)))
+(define ghc-splitmix-bootstrap-for-9.6
+ (package
+ (name "ghc-splitmix-bootstrap")
+ (version "0.1.0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "splitmix" version))
+ (sha256
+ (base32
+ "00ihw7vji8ydik7f5lk9iwj21j829lpl22wa4nqz2igg26b7mw4x"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "splitmix")))
+ (arguments
+ `(#:tests? #f
+ #:haskell ,ghc-bootstrap-for-9.6))
+ (home-page "http://hackage.haskell.org/package/splitmix")
+ (synopsis "Fast and splittable pseudorandom number generator")
+ (description
+ "This package provides a Pure Haskell implementation of the
+SplitMix pseudorandom number generator. SplitMix is a \"splittable\"
+pseudorandom number generator that is quite fast: 9 64-bit
+arithmetic/logical operations per 64 bits generated. SplitMix is tested
+with two standard statistical test suites (DieHarder and TestU01, this
+implementation only using the former) and it appears to be adequate for
+\"everyday\" use, such as Monte Carlo algorithms and randomized data
+structures where speed is important. In particular, it @strong{should not
+be used for cryptographic or security applications}, because generated
+sequences of pseudorandom values are too predictable (the mixing functions
+are easily inverted, and two successive outputs suffice to reconstruct the
+internal state).")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 08/23] gnu: Add ghc-primitive-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
af493b31a4f1b2cdd4ff9ee213617b95829722a8.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-primitive-bootstrap-for-9.6): New
variable.

Change-Id: I393ff5f57862de0c6da118a803ed6f898adcf0cb
---
gnu/packages/haskell.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 9487223636..cc6215ef80 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,4 +1655,27 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-primitive-bootstrap-for-9.6
+ (package
+ (name "ghc-primitive-bootstrap")
+ (version "0.8.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "primitive" version))
+ (sha256
+ (base32
+ "0pwr5g3bra5m2zjm14pj98klqj2qrjcfasgd3rcrp7vq98dw4lsm"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "primitive")))
+ (arguments
+ `(#:tests? #f
+ #:haskell ,ghc-bootstrap-for-9.6
+ #:cabal-revision ("1"
+ "0w1nf0rabgyk5q7ccw7va1mj6k50lswvikhi6vr2myb1dvx4bzyh")))
+ (home-page "https://github.com/haskell/primitive")
+ (synopsis "Primitive memory-related operations")
+ (description
+ "This package provides various primitive memory-related operations.")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 09/23] gnu: Add ghc-js-jquery-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
01cb2540efacba50a9740d633c6e169538ea572c.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-js-jquery-bootstrap-for-9.6): New
variable.

Change-Id: I579efb04ad665f0938e24a9656f959abdd27905e
---
gnu/packages/haskell.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index cc6215ef80..9f442e25a1 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,6 +1655,32 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-js-jquery-bootstrap-for-9.6
+ (package
+ (name "ghc-js-jquery-bootstrap")
+ (version "3.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (hackage-uri "js-jquery" version))
+ (sha256
+ (base32
+ "16q68jzbs7kp07dnq8cprdcc8fd41rim38039vg0w4x11lgniq70"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "js-jquery")))
+ (arguments `(#:tests? #f
+ #:haskell ,ghc-bootstrap-for-9.6))
+ (home-page "https://github.com/ndmitchell/js-jquery")
+ (synopsis "Obtain minified jQuery code")
+ (description "This package bundles the minified
+@url{http://jquery.com/, jQuery} code into a Haskell package, so it can
+be depended upon by Cabal packages. The first three components of the
+version number match the upstream jQuery version. The package is
+designed to meet the redistribution requirements of downstream
+users (e.g. Debian).")
+ (license license:expat)))
+
(define ghc-primitive-bootstrap-for-9.6
(package
(name "ghc-primitive-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 11/23] gnu: Add ghc-heaps-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
f76b21175d5c22c9926c7a325a6a76afbc1ed3e6.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-heaps-bootstrap-for-9.6): New variable.

Change-Id: Ib04a47d3eacba415fd44cd532c18c02f8d9cf40b
---
gnu/packages/haskell.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 3561e494d2..a83d785554 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,6 +1655,27 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-heaps-bootstrap-for-9.6
+ (package
+ (name "ghc-heaps-bootstrap")
+ (version "0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "heaps" version))
+ (sha256
+ (base32 "1zbw0qrlnhb42v04phzwmizbpwg21wnpl7p4fbr9xsasp7w9scl9"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "heaps")))
+ (arguments (list #:haskell ghc-bootstrap-for-9.6))
+ (home-page "http://github.com/ekmett/heaps/")
+ (synopsis "Asymptotically optimal Brodal/Okasaki heaps.")
+ (description
+ "Asymptotically optimal Brodal\\/Okasaki bootstrapped skew-binomial heaps from the
+paper <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.973 \"Optimal
+Purely Functional Priority Queues\">, extended with a Foldable interface.")
+ (license license:bsd-3)))
+
(define ghc-utf8-string-bootstrap-for-9.6
(package
(name "ghc-utf8-string-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 10/23] gnu: Add ghc-utf8-string-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
b6dce692d4ff5f41170ab8ac28c63b85f7a21faa.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-utf8-string-bootstrap-for-9.6): New
variable.

Change-Id: Iea2ba4d3202195a54b71037882352cdac9415901
---
gnu/packages/haskell.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 9f442e25a1..3561e494d2 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,6 +1655,28 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-utf8-string-bootstrap-for-9.6
+ (package
+ (name "ghc-utf8-string-bootstrap")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "utf8-string" version))
+ (sha256
+ (base32 "16mh36ffva9rh6k37bi1046pgpj14h0cnmj1iir700v0lynxwj7f"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "utf8-string")))
+ (arguments `(#:tests? #f
+ #:haskell ,ghc-bootstrap-for-9.6))
+ (home-page "https://github.com/glguy/utf8-string/")
+ (synopsis "Support for reading and writing UTF8 Strings")
+ (description
+ "A UTF8 layer for Strings. The utf8-string package provides operations
+for encoding UTF8 strings to Word8 lists and back, and for reading and writing
+UTF8 without truncation.")
+ (license license:bsd-3)))
+
(define ghc-js-jquery-bootstrap-for-9.6
(package
(name "ghc-js-jquery-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 12/23] gnu: Add ghc-js-dgtable-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
cbb9dc256cba13f7b98092f7ac012364bc1185b8.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-js-dgtable-bootstrap-for-9.6): New
variable.

Change-Id: Ic7e9e6c584e4fb8830ec55288759796271822964
---
gnu/packages/haskell.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index a83d785554..88c7278168 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,6 +1655,29 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-js-dgtable-bootstrap-for-9.6
+ (package
+ (name "ghc-js-dgtable-bootstrap")
+ (version "0.5.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "js-dgtable" version))
+ (sha256
+ (base32 "1b10kx703kbkb5q1ggdpqcrxqjb33kh24khk21rb30w0xrdxd3g2"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "js-dgtable")))
+ (arguments (list #:haskell ghc-bootstrap-for-9.6))
+ (home-page "https://github.com/ndmitchell/js-dgtable#readme")
+ (synopsis "Obtain minified jquery.dgtable code")
+ (description
+ "This package bundles the minified <https://github.com/danielgindi/jquery.dgtable
+jquery.dgtable> code into a Haskell package, so it can be depended upon by Cabal
+packages. The first three components of the version number match the upstream
+jquery.dgtable version. The package is designed to meet the redistribution
+requirements of downstream users (e.g. Debian).")
+ (license license:expat)))
+
(define ghc-heaps-bootstrap-for-9.6
(package
(name "ghc-heaps-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 13/23] gnu: Add ghc-nats-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
d0a32bbcd0352a5c68b749f0d284e26bc4e5992e.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-nats-bootstrap-for-9.6): New variable.

Change-Id: I57351e88ba0bc52e7fd5fefc5c3006f63925fd86
---
gnu/packages/haskell.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 88c7278168..604b38cce6 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,6 +1655,28 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-nats-bootstrap-for-9.6
+ (package
+ (name "ghc-nats-bootstrap")
+ (version "1.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "nats" version))
+ (sha256
+ (base32
+ "1v40drmhixck3pz3mdfghamh73l4rp71mzcviipv1y8jhrfxilmr"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "nats")))
+ (arguments `(#:haddock? #f
+ #:haskell ,ghc-bootstrap-for-9.6))
+ (inputs
+ (list ghc-hashable-bootstrap-for-9.6))
+ (home-page "https://hackage.haskell.org/package/nats")
+ (synopsis "Natural numbers")
+ (description "This library provides the natural numbers for Haskell.")
+ (license license:bsd-3)))
+
(define ghc-js-dgtable-bootstrap-for-9.6
(package
(name "ghc-js-dgtable-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 14/23] gnu: Add ghc-tagged-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
754e2c787ada867156e382f4b167de1f03710456.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-tagged-bootstrap-for-9.6): New variable.

Change-Id: Ifd3996a62cfa33d155315807d4ead706f7e64452
---
gnu/packages/haskell.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 604b38cce6..0f49aabdb1 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,6 +1655,26 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-tagged-bootstrap-for-9.6
+ (package
+ (name "ghc-tagged-bootstrap")
+ (version "0.8.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "tagged" version))
+ (sha256
+ (base32
+ "0qdr1kv1zn5iamnwyn5nf0ywxs4wv779k0gpw94kyqx14ynfw534"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "tagged")))
+ (arguments (list #:haskell ghc-bootstrap-for-9.6))
+ (home-page "https://hackage.haskell.org/package/tagged")
+ (synopsis "Haskell phantom types to avoid passing dummy arguments")
+ (description "This library provides phantom types for Haskell 98, to avoid
+having to unsafely pass dummy arguments.")
+ (license license:bsd-3)))
+
(define ghc-nats-bootstrap-for-9.6
(package
(name "ghc-nats-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 15/23] gnu: Add ghc-semigroups-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
b445a688642189d47fbbd64098af401aab9ddcb6.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-semigroups-bootstrap-for-9.6): New
variable.

Change-Id: Ic676fed80bea3805f8e70cd958c3d7523226053d
---
gnu/packages/haskell.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 0f49aabdb1..6a19287d4a 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1655,6 +1655,36 @@ (define ghc-random-bootstrap-for-9.6
library, including the ability to split random number generators.")
(license license:bsd-3)))
+(define ghc-semigroups-bootstrap-for-9.6
+ (package
+ (name "ghc-semigroups-bootstrap")
+ (version "0.20")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "semigroups" version))
+ (sha256
+ (base32
+ "1qbk6scp1rzb69dy8mz26p6az5vi16g2lzwmwnfshh3br4rjwbch"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "semigroups")))
+ (arguments (list #:haskell ghc-bootstrap-for-9.6))
+ (inputs
+ (list ghc-nats-bootstrap-for-9.6
+ ghc-tagged-bootstrap-for-9.6
+ ghc-unordered-containers-bootstrap-for-9.6
+ ghc-hashable-bootstrap-for-9.6))
+ (home-page "http://github.com/ekmett/semigroups/")
+ (synopsis "Semigroup operations for Haskell")
+ (description
+ "This package provides semigroups for Haskell. In
+mathematics, a semigroup is an algebraic structure consisting of a set
+together with an associative binary operation. A semigroup generalizes a
+monoid in that there might not exist an identity element. It
+also (originally) generalized a group (a monoid with all inverses) to a type
+where every element did not have to have an inverse, thus the name
+semigroup.")
+ (license license:bsd-3)))
+
(define ghc-tagged-bootstrap-for-9.6
(package
(name "ghc-tagged-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 16/23] gnu: Add ghc-base16-bytestring-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
8a165ae652b0652299f4075f40c52d58d42b2313.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-base16-bytestring-bootstrap-for-9.6):
New variable.

Change-Id: I7c20bdfd7600fb2bed5de497e02acda74b242fec
---
gnu/packages/haskell.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 6a19287d4a..348a67f1c5 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1533,6 +1533,27 @@ (define ghc-js-flot-bootstrap-for-9.6
requirements of downstream users (e.g. Debian).")
(license license:expat)))
+(define ghc-base16-bytestring-bootstrap-for-9.6
+ (package
+ (name "ghc-base16-bytestring-bootstrap")
+ (version "1.0.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "base16-bytestring" version))
+ (sha256
+ (base32
+ "1167f9jaivnabn6kg2gc421ac9njb67fr4v0adbj3qph7qa92nhx"))))
+ (build-system haskell-build-system)
+ (arguments (list #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6))
+ (properties '((upstream-name . "base16-bytestring")))
+ (home-page "http://github.com/haskell/base16-bytestring")
+ (synopsis "Fast base16 (hex) encoding and decoding for ByteStrings")
+ (description
+ "This package provides a Haskell library for working with base16-encoded
+data quickly and efficiently, using the ByteString type.")
+ (license license:bsd-3)))
+
(define ghc-extra-bootstrap-for-9.6
(package
(name "ghc-extra-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 17/23] gnu: Add ghc-cryptohash-sha256-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
5024925e614ba9b15470aabd183169ce60c4e273.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-cryptohash-sha256-bootstrap-for-9.6):
New variable.

Change-Id: I80dd73de554160f4dc904c01ea292a886f51e970
---
gnu/packages/haskell.scm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 348a67f1c5..d163331b2b 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1533,6 +1533,35 @@ (define ghc-js-flot-bootstrap-for-9.6
requirements of downstream users (e.g. Debian).")
(license license:expat)))
+(define ghc-cryptohash-sha256-bootstrap-for-9.6
+ (package
+ (name "ghc-cryptohash-sha256-bootstrap")
+ (version "0.11.102.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "cryptohash-sha256" version))
+ (sha256
+ (base32
+ "1xkb7iqplbw4fy1122p79xf1zcb7k44rl0wmfj1q06l7cdqxr9vk"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "cryptohash-sha256")))
+ (arguments
+ `(#:cabal-revision
+ ("1" "1hyzqv30rpj920ddnr0zypyjjlh52vyp2d140pn2byayj820rkgs")
+ #:haskell ,ghc-bootstrap-for-9.6
+ #:tests? #f))
+ (home-page "https://github.com/hvr/cryptohash-sha1")
+ (synopsis "SHA-256 implementation for Haskell")
+ (description "This Haskell package provides an incremental and
+one-pass, pure API to the @uref{https://en.wikipedia.org/wiki/SHA-2,
+SHA-256 cryptographic hash algorithm}, with performance close to the
+fastest implementations available in other languages.
+
+The implementation is made in C with a haskell FFI wrapper that hides
+the C implementation.")
+ (license license:bsd-3)))
+
(define ghc-base16-bytestring-bootstrap-for-9.6
(package
(name "ghc-base16-bytestring-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:49 +0100
[PATCH v2 18/23] gnu: Add ghc-unordered-containers-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
4f3d4f1d26348b10303c4b1f2590007db93300f7.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-unordered-containers-bootstrap-for-9.6):
New variable.

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

Toggle diff (40 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index d163331b2b..3b591c6ffa 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1533,6 +1533,33 @@ (define ghc-js-flot-bootstrap-for-9.6
requirements of downstream users (e.g. Debian).")
(license license:expat)))
+(define ghc-unordered-containers-bootstrap-for-9.6
+ (package
+ (name "ghc-unordered-containers-bootstrap")
+ (version "0.2.19.1")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "unordered-containers" version))
+ (sha256
+ (base32
+ "1li8s6qw8mgv6a7011y7hg0cn2nllv2g9sr9c1xb48nmw32vw9qv"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "unordered-containers")))
+ (inputs (list ghc-hashable-bootstrap-for-9.6))
+ (arguments
+ `(#:cabal-revision ("3"
+ "1p9a2mvfbfz2d4cyr16b03bxvb6c4yj7k1ch601xwq1rkr1cla0w")
+ #:haskell ,ghc-bootstrap-for-9.6
+ #:tests? #f))
+ (home-page
+ "https://github.com/haskell-unordered-containers/unordered-containers")
+ (synopsis "Efficient hashing-based container types")
+ (description
+ "Efficient hashing-based container types. The containers have been
+optimized for performance critical use, both in terms of large data quantities
+and high speed.")
+ (license license:bsd-3)))
+
(define ghc-cryptohash-sha256-bootstrap-for-9.6
(package
(name "ghc-cryptohash-sha256-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:50 +0100
[PATCH v2 19/23] gnu: Add ghc-filepattern-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
635c344ad4a4862184093aba05c4eae6d71b324f.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-filepattern-bootstrap-for-9.6): New
variable.

Change-Id: I3778f85d7a14474445295ebd6bbb1f4bfbe4f6d5
---
gnu/packages/haskell.scm | 41 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)

Toggle diff (54 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 3b591c6ffa..47eab1d5fa 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1533,6 +1533,47 @@ (define ghc-js-flot-bootstrap-for-9.6
requirements of downstream users (e.g. Debian).")
(license license:expat)))
+(define ghc-filepattern-bootstrap-for-9.6
+ (package
+ (name "ghc-filepattern-bootstrap")
+ (version "0.1.3")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "filepattern" version))
+ (sha256
+ (base32
+ "0dlnwnwhsfdkwm69z66wj5d2x9n3la55glq4fsn5rxm2kr1msi6c"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "filepattern")))
+ (arguments (list #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6))
+ (inputs (list ghc-extra-bootstrap-for-9.6))
+ (home-page "https://github.com/ndmitchell/filepattern#readme")
+ (synopsis "File path glob-like matching")
+ (description
+ "This package provides Haskell library for matching files using patterns
+such as @code{\\\"src\\/**\\/*.png\\\"} for all @@file{.png} files recursively
+under the @@file{src} directory.
+
+Some of its features include:
+
+@itemize
+@item All matching is O(n).
+
+@item Most functions pre-compute some information given only one argument.
+
+@item Uses @code{match} and @code{substitute} to extract suitable strings from
+the @code{*} and @code{**} matches, and substitutes them back into other
+patterns.
+
+@item Uses @code{step} and @code{matchMany} to perform bulk matching of many
+patterns against many paths simultaneously.
+
+@item Uses @code{System.FilePattern.Directory} to perform optimised directory
+traverals using patterns.
+@end itemize")
+ (license license:bsd-3)))
+
(define ghc-unordered-containers-bootstrap-for-9.6
(package
(name "ghc-unordered-containers-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:50 +0100
[PATCH v2 20/23] gnu: Add ghc-shake-bootstrap-for-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
e3ffb21b60cd14cde0e296a6feedffda614ec12a.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-shake-bootstrap-for-9.6): New variable.

Change-Id: I195bc5f779709ef7b2ccefe2271402ef342bc0b8
---
gnu/packages/haskell.scm | 56 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)

Toggle diff (69 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 47eab1d5fa..4127d7d4a7 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1507,6 +1507,62 @@ (define-public ghc-9.4
(define ghc-bootstrap-for-9.6 ghc-9.4)
+(define ghc-shake-bootstrap-for-9.6
+ (package
+ (name "ghc-shake-bootstrap")
+ (version "0.19.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "shake" version))
+ (sha256
+ (base32 "1lcr6q53qwm308bny6gfawcjhxsmalqi3dnwckam02zp2apmcaim"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "shake")))
+ (inputs (list bash-minimal
+ ghc-extra-bootstrap-for-9.6
+ ghc-filepattern-bootstrap-for-9.6
+ ghc-hashable-bootstrap-for-9.6
+ ghc-heaps-bootstrap-for-9.6
+ ghc-js-dgtable-bootstrap-for-9.6
+ ghc-js-flot-bootstrap-for-9.6
+ ghc-js-jquery-bootstrap-for-9.6
+ ghc-primitive-bootstrap-for-9.6
+ ghc-random-bootstrap-for-9.6
+ ghc-unordered-containers-bootstrap-for-9.6
+ ghc-utf8-string-bootstrap-for-9.6
+ ghc-semigroups-bootstrap-for-9.6))
+ (arguments
+ (list #:cabal-revision '("1"
+ "1hz57kw5pp5cpbicbi7x8sz8c6qy58dzyiljz9b9f2r1rr683d9w")
+ #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'patch-source-shebangs 'patch-/bin/sh
+ (lambda _
+ (for-each
+ (lambda (file)
+ (substitute*
+ file
+ (("/bin/sh")
+ #$(file-append (this-package-input "bash-minimal")
+ "/bin/sh"))))
+ '("src/Development/Shake/Command.hs")))))))
+ (home-page "https://shakebuild.com")
+ (synopsis
+ "Build system library, like Make, but more accurate dependencies.")
+ (description
+ "Shake is a Haskell library for writing build systems - designed as a
+replacement for @@make@@. To use Shake the user writes a Haskell program that
+imports \"Development.Shake\", defines some build rules, and calls the
+Development.Shake.@code{shakeArgs} function. However, as build systems get more
+complex, Shake is able to take advantage of the excellent abstraction facilities
+offered by Haskell and easily support much larger projects. Shake also provides more
+accurate dependency tracking, including seamless support for generated files, and
+dependencies on system information (e.g. compiler version).")
+ (license license:bsd-3)))
+
(define ghc-js-flot-bootstrap-for-9.6
(package
(name "ghc-js-flot-bootstrap")
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:50 +0100
[PATCH v2 21/23] gnu: Add hadrian-for-ghc-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
e874d2c0f592e4f92be8c5baaabb3f3f7f8c4db2.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (hadrian-for-ghc-9.6): New variable.

Change-Id: I4205c888afa7b03b4b1622a3af7d1d538fa5c9b1
---
gnu/packages/haskell.scm | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (51 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 4127d7d4a7..9e1e659cf1 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2016,4 +2016,44 @@ (define ghc-primitive-bootstrap-for-9.6
"This package provides various primitive memory-related operations.")
(license license:bsd-3)))
+(define hadrian-for-ghc-9.6
+ (package
+ (name "hadrian")
+ (version "9.6.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://www.haskell.org/ghc/dist/" version
+ "/ghc-" version "-src.tar.xz"))
+ (sha256
+ (base32
+ "1h6lpx8kd4xycjwb8iv2rgnz23kwq5b0qp4bhvczsx3in2w2bgqh"))))
+ (build-system haskell-build-system)
+ (inputs
+ (list ghc-base16-bytestring-bootstrap-for-9.6
+ ghc-cryptohash-sha256-bootstrap-for-9.6
+ ghc-extra-bootstrap-for-9.6
+ ghc-shake-bootstrap-for-9.6
+ ghc-unordered-containers-bootstrap-for-9.6
+ bash-minimal))
+ (arguments
+ (list #:configure-flags ''("--flags=-selftest")
+ #:tests? #f
+ #:haskell ghc-bootstrap-for-9.6
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'cd-to-hadrian
+ (lambda _
+ (chdir "hadrian")))
+ (add-after 'cd-to-hadrian 'fix-shell-wrappers
+ (lambda _
+ (substitute*
+ "src/Rules/Test.hs"
+ (("\"#!/bin/sh\"")
+ (format #f "\"#!~a/bin/sh\"" #$(this-package-input "bash-minimal")))))))))
+ (home-page "https://gitlab.haskell.org/ghc/ghc/-/tree/master/hadrian")
+ (synopsis "Build system for the Glasgow Haskell Compiler (@code{ghc})")
+ (description "Hadrian is the build system for the Glasgow Haskell Compiler.
+It is based on the Shake library and replaces @{make} in building GHC")
+ (license license:expat)))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:50 +0100
[PATCH v2 22/23] gnu: Add ghc-9.6
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
073e883857858856f28e19843adbef915ab9df60.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc-9.6): New variable.

Change-Id: I6883ed973bdd1d6eaf981605c1bc8f855f850187
---
gnu/packages/haskell.scm | 108 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 107 insertions(+), 1 deletion(-)

Toggle diff (126 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 9e1e659cf1..e316fc860e 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -72,7 +72,8 @@ (define-module (gnu packages haskell)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (ice-9 match)
- #:use-module (ice-9 regex))
+ #:use-module (ice-9 regex)
+ #:use-module (srfi srfi-26))
(define-public cl-yale-haskell
(let ((commit "85f94c72a16c5f70301dd8db04cde9de2d7dd270")
@@ -2056,4 +2057,109 @@ (define hadrian-for-ghc-9.6
It is based on the Shake library and replaces @{make} in building GHC")
(license license:expat)))
+(define-public ghc-9.6
+ (let ((base ghc-9.4))
+ (package
+ (inherit base)
+ (name "ghc-next")
+ (version "9.6.4")
+ (source (origin
+ (inherit (package-source base))
+ (uri (string-append "https://www.haskell.org/ghc/dist/" version
+ "/ghc-" version "-src.tar.xz"))
+ (sha256
+ (base32
+ "1h6lpx8kd4xycjwb8iv2rgnz23kwq5b0qp4bhvczsx3in2w2bgqh"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:make-flags flags ''())
+ #~(list "-V" "--docs=no-sphinx"))
+ ((#:phases phases '%standard-phases)
+ #~(let* ((run-hadrian (lambda args
+ (apply invoke "hadrian" args))))
+ (modify-phases #$phases
+ (delete 'fix-shell-wrappers)
+ ;; https://gitlab.haskell.org/ghc/ghc/-/issues/22557
+ (add-before 'build 'fix-iserv-rpath
+ (lambda _
+ (mkdir-p "_build")
+ (call-with-output-file
+ "_build/hadrian.settings"
+ (lambda (port)
+ (display
+ (string-append
+ "*.iserv.ghc.link.opts += -optl-Wl,-rpath,"
+ #$output "/lib/ghc-" #$(package-version this-package)
+ "/lib/" #$(or (%current-target-system)
+ (%current-system))
+ "-ghc-" #$(package-version this-package) "/")
+ port)))))
+ (replace 'build
+ (lambda* (#:key (parallel-build? #f) (make-flags '())
+ #:allow-other-keys)
+ (apply run-hadrian
+ `("binary-dist-dir"
+ ,@(if parallel-build?
+ `(,(string-append "-j" (number->string (parallel-job-count))))
+ '())
+ ,@make-flags))))
+ (replace 'check
+ (lambda* (#:key (tests? #t) (parallel-tests? #f) (make-flags '()) #:allow-other-keys)
+ (if tests?
+ (apply run-hadrian
+ `(,@(if parallel-tests?
+ `(,(string-append "-j" (number->string (parallel-job-count))))
+ '())
+ ,@make-flags
+ "test"
+ "--skip-perf"))
+ (format #t "test suite not run~%"))))
+ (replace 'install
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (apply run-hadrian
+ `("install"
+ ,@make-flags
+ ,(string-append "--prefix=" #$output)))))
+ (add-after 'install 'replace-$pkgroot
+ (lambda _
+ (substitute*
+ (find-files
+ (string-append #$output "/lib/ghc-"
+ #$(package-version this-package)
+ "/lib/package.conf.d/")
+ "^.*\\.conf$")
+ (("\\$\\{pkgroot\\}/")
+ (string-append #$output "/lib/ghc-"
+ #$(package-version this-package)
+ "/lib/"))))))))))
+ (inputs (list bash-minimal gmp ncurses libffi))
+ (native-inputs
+ `(("perl" ,perl)
+ ("python" ,python)
+ ("git" ,git-minimal/pinned)
+ ("which" ,which)
+ ("ghostscript" ,ghostscript)
+ ("autoconf" ,autoconf)
+ ("automake" ,automake)
+
+ ("hadrian" ,hadrian-for-ghc-9.6)
+ ("ghc-bootstrap" ,ghc-bootstrap-for-9.6)
+ ("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
+ ("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
+ ("ghc-testsuite"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "https://www.haskell.org/ghc/dist/"
+ version "/ghc-" version "-testsuite.tar.xz"))
+ (sha256
+ (base32
+ "0wwd6d68aia2rmlpki30azz0raf98is472cqljhbzzdzpqpjh4vf"))))))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "GHC_PACKAGE_PATH")
+ (files (list (string-append "lib/ghc-" version)))
+ (file-pattern ".*\\.conf\\.d$")
+ (file-type 'directory)))))))
+
;;; haskell.scm ends here
--
2.41.0
S
S
Saku Laesvuori wrote on 15 Feb 09:50 +0100
[PATCH v2 23/23] gnu: ghc: Update to version 9.6.4
(name . Saku Laesvuori)(address . saku@laesvuori.fi)
64d0be34c74b765c544e16a1f9115a774357f183.1707827100.git.saku@laesvuori.fi
* gnu/packages/haskell.scm (ghc): Update to ghc-9.6

Change-Id: I40da6cacc4d260902cd66d7d626375038fba4346
---
gnu/packages/haskell.scm | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

Toggle diff (48 lines)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index e316fc860e..3944d8f15f 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1393,12 +1393,6 @@ (define-public ghc-9.2
(file-pattern ".*\\.conf\\.d$")
(file-type 'directory)))))))
-;; Versions newer than ghc defined below (i.e. the compiler
-;; haskell-build-system uses) should use ghc-next as their name to
-;; ensure ghc (without version specification) and ghc-* packages are
-;; always compatible. See https://issues.guix.gnu.org/issue/47335.
-(define-public ghc ghc-9.2)
-
;; 9.4 is the last version to support the make-based build system,
;; but it boot with 9.2, only 9.0 is supported.
(define ghc-bootstrap-for-9.4 ghc-9.0)
@@ -1462,7 +1456,7 @@ (define-public ghc-9.4
(let ((base ghc-9.2))
(package
(inherit base)
- (name "ghc-next")
+ (name "ghc")
(version "9.4.8")
(source (origin
(method url-fetch)
@@ -2061,7 +2055,7 @@ (define-public ghc-9.6
(let ((base ghc-9.4))
(package
(inherit base)
- (name "ghc-next")
+ (name "ghc")
(version "9.6.4")
(source (origin
(inherit (package-source base))
@@ -2162,4 +2156,10 @@ (define-public ghc-9.6
(file-pattern ".*\\.conf\\.d$")
(file-type 'directory)))))))
+;; Versions newer than ghc defined below (i.e. the compiler
+;; haskell-build-system uses) should use ghc-next as their name to
+;; ensure ghc (without version specification) and ghc-* packages are
+;; always compatible. See https://issues.guix.gnu.org/issue/47335.
+(define-public ghc ghc-9.6)
+
;;; haskell.scm ends here
--
2.41.0
S
S
Suhail wrote on 15 Feb 18:05 +0100
Re: [bug#67921] [WIP PATCH v2 00/23] Update GHC to 9.6.4
(address . 67921@debbugs.gnu.org)
87il2p1wv1.fsf@bayesians.ca
Saku Laesvuori via Guix-patches via <guix-patches@gnu.org> writes:

Toggle quote (2 lines)
> - updates ghc-next to 9.4.8

Did you mean "updates ghc-9.4 to 9.4.8", instead?

Toggle quote (2 lines)
> - changes the default ghc to ghc-9.6.

If my understanding is correct, this means that 9.8 onwards should use
"ghc-next".

--
Suhail
S
S
Saku Laesvuori wrote on 15 Feb 18:49 +0100
(name . Suhail)(address . suhail@bayesians.ca)
e3ui54vi2rgrzo2yoqgvvtwl6rlqgz4sl22jtqwibirracry42@7duqmnvkebrd
Toggle quote (6 lines)
> Saku Laesvuori via Guix-patches via <guix-patches@gnu.org> writes:
>
> > - updates ghc-next to 9.4.8
>
> Did you mean "updates ghc-9.4 to 9.4.8", instead?

I guess that would be a clearer way of wording it.

Toggle quote (5 lines)
> > - changes the default ghc to ghc-9.6.
>
> If my understanding is correct, this means that 9.8 onwards should use
> "ghc-next".

Yes.
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoMkZR3NPB29fCOn/JX0oSiodOjIFAmXOTpcACgkQJX0oSiod
OjJK+BAAvR48oCCtZj5qs9RKGBF9HO8GQnkW2ZTE1im2RuY8AdDtYZHK4VMjEIUv
IgvIcvdYk/DZXnF4HnREzSytwoD7xiKbVKQfI3Dlub66ojw8Twdg2Uv2rDoCy2r7
3ibvUjb7pFseeOICU5MbYPaI8CyD+64gICQubltRHl63ScptGsEBW2eYRjR6WtE9
zpts2K0JoU/vXCoQAKKLh4IMswJjSPCmU2r88h7uaCSQd9ECH0DiA5KZWpNyGLsP
KuYTiYG5yJOISq0xT09N0G5kdraBFp/VTZK4uYV2JzOwAD2OrRGcdcIvAuHgsq6h
Vk0kwy/+n3zfFkQA7W3mayjI50cnQtpYHKI8PPI4mIiltqjjs0jjqQb23aHGGXo1
HIZEje+lY9GJe7n68oKqrZiXiCWMe1vpYSvXdxDowngqoZJbIYgrajVR5JznC3gr
0eUAyYjFmZAguwQJfrYpc72FJ79QEsd0voFpOn1FbLoc6gOrQGfxOKkEGdOOaIF0
yPspsodavyZCEy3ngmArMfjhebeLkxLiB5wbbg6+b7EObfAaDP/Y9JSny7hZ7tNY
beWpBU6fkbNEbbC00NBsGfkxctKW1O/Ye7q1zO9zgMCh33NV4+B7j1PyjAcroTjY
fdhF5zFUfgnldYQ/SZ2KFAfJnJmF5wxL9dVYmq+ZjKYGlo1a0OY=
=xVTV
-----END PGP SIGNATURE-----


?