From: Robert Vollmert <rob@vllmrt.net>
To: 36692@debbugs.gnu.org
Cc: Robert Vollmert <rob@vllmrt.net>
Subject: [bug#36692] [PATCH (unified, replaces previous patches)] gnu: Add GHC 8.6.5
Date: Tue, 16 Jul 2019 21:47:41 +0200 [thread overview]
Message-ID: <20190716194740.23243-1-rob@vllmrt.net> (raw)
In-Reply-To: <20190716154734.22605-1-rob@vllmrt.net>
This is exactly like GHC 8.4, except for:
- the sources
- depends on ghc-8.4 as ghc-bootstrap, since it has a
minimum requirement of GHC 8.2 as a bootstrap compiler
- explicitly skip two failing tests
(Apparently, those tests also fail on older versions, but
for unclear reasons the packages still build successfully.)
* gnu/packages/haskell.scm (ghc-8.6): New field.
(ghc-8): Rename to ghc-8.4.
(ghc): Refer to ghc-8.4.
---
gnu/packages/haskell.scm | 136 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 134 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 4f0ab5825c..6b5662298f 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -440,7 +440,7 @@ interactive environment for the functional language Haskell.")
interactive environment for the functional language Haskell.")
(license license:bsd-3)))
-(define-public ghc-8
+(define-public ghc-8.4
(package (inherit ghc-8.0)
(name "ghc")
(version "8.4.3")
@@ -572,7 +572,139 @@ interactive environment for the functional language Haskell.")
(file-pattern ".*\\.conf\\.d$")
(file-type 'directory))))))
-(define-public ghc ghc-8)
+(define-public ghc-8.6
+ (package (inherit ghc-8.4)
+ (name "ghc")
+ (version "8.6.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.haskell.org/ghc/dist/"
+ version "/" name "-" version "-src.tar.xz"))
+ (sha256
+ (base32 "0qg3zsmbk4rkwkc3jpas3zs74qaxmw4sp4v1mhsbj0a0dzls2jjd"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("python" ,python) ; for tests
+ ("ghostscript" ,ghostscript) ; for tests
+ ;; GHC 8.6.5 must be built with GHC >= 8.2.
+ ("ghc-bootstrap" ,ghc-8.4)
+ ("ghc-testsuite"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "https://www.haskell.org/ghc/dist/"
+ version "/" name "-" version "-testsuite.tar.xz"))
+ (sha256
+ (base32
+ "0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91"))))))
+ (arguments
+ `(#:test-target "test"
+ ;; We get a smaller number of test failures by disabling parallel test
+ ;; execution.
+ #:parallel-tests? #f
+
+ ;; The DSOs use $ORIGIN to refer to each other, but (guix build
+ ;; gremlin) doesn't support it yet, so skip this phase.
+ #:validate-runpath? #f
+
+ ;; Don't pass --build=<triplet>, because the configure script
+ ;; auto-detects slightly different triplets for --host and --target and
+ ;; then complains that they don't match.
+ #:build #f
+
+ #:configure-flags
+ (list
+ (string-append "--with-gmp-libraries="
+ (assoc-ref %build-inputs "gmp") "/lib")
+ (string-append "--with-gmp-includes="
+ (assoc-ref %build-inputs "gmp") "/include")
+ "--with-system-libffi"
+ (string-append "--with-ffi-libraries="
+ (assoc-ref %build-inputs "libffi") "/lib")
+ (string-append "--with-ffi-includes="
+ (assoc-ref %build-inputs "libffi") "/include")
+ (string-append "--with-curses-libraries="
+ (assoc-ref %build-inputs "ncurses") "/lib")
+ (string-append "--with-curses-includes="
+ (assoc-ref %build-inputs "ncurses") "/include"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-testsuite
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke "tar" "xvf"
+ (assoc-ref inputs "ghc-testsuite")
+ "--strip-components=1")
+ #t))
+ ;; These two tests refer to the root user, which doesn't exist.
+ (add-after 'unpack-testsuite 'skip-tests
+ (lambda _
+ (substitute* "libraries/unix/tests/all.T"
+ (("^test\\('T8108'") "# guix skipped: test('T8108'"))
+ (substitute* "libraries/unix/tests/libposix/all.T"
+ (("^test\\('posix010'") "# guix skipped: test('posix010'"))
+ #t))
+ ;; This phase patches the 'ghc-pkg' command so that it sorts the list
+ ;; of packages in the binary cache it generates.
+ (add-before 'build 'fix-ghc-pkg-nondeterminism
+ (lambda _
+ (substitute* "utils/ghc-pkg/Main.hs"
+ (("confs = map \\(path </>\\) \\$ filter \\(\".conf\" `isSuffixOf`\\) fs")
+ "confs = map (path </>) $ filter (\".conf\" `isSuffixOf`) (sort fs)"))
+ #t))
+ (add-after 'unpack-testsuite 'fix-shell-wrappers
+ (lambda _
+ (substitute* '("driver/ghci/ghc.mk"
+ "utils/mkdirhier/ghc.mk"
+ "rules/shell-wrapper.mk")
+ (("echo '#!/bin/sh'")
+ (format #f "echo '#!~a'" (which "sh"))))
+ #t))
+ ;; This is necessary because the configure system no longer uses
+ ;; “AC_PATH_” but “AC_CHECK_”, setting the variables to just the
+ ;; plain command names.
+ (add-before 'configure 'set-target-programs
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((binutils (assoc-ref inputs "target-binutils"))
+ (gcc (assoc-ref inputs "target-gcc"))
+ (ld-wrapper (assoc-ref inputs "target-ld-wrapper")))
+ (setenv "CC" (string-append gcc "/bin/gcc"))
+ (setenv "CXX" (string-append gcc "/bin/g++"))
+ (setenv "LD" (string-append ld-wrapper "/bin/ld"))
+ (setenv "NM" (string-append binutils "/bin/nm"))
+ (setenv "RANLIB" (string-append binutils "/bin/ranlib"))
+ (setenv "STRIP" (string-append binutils "/bin/strip"))
+ ;; The 'ar' command does not follow the same pattern.
+ (setenv "fp_prog_ar" (string-append binutils "/bin/ar"))
+ #t)))
+ (add-before 'build 'fix-references
+ (lambda _
+ (substitute* '("testsuite/timeout/Makefile"
+ "testsuite/timeout/timeout.py"
+ "testsuite/timeout/timeout.hs"
+ "testsuite/tests/programs/life_space_leak/life.test"
+ ;; libraries
+ "libraries/process/System/Process/Posix.hs"
+ "libraries/process/tests/process001.hs"
+ "libraries/process/tests/process002.hs"
+ "libraries/unix/cbits/execvpe.c")
+ (("/bin/sh") (which "sh"))
+ (("/bin/ls") (which "ls"))
+ (("/bin/rm") "rm"))
+ #t))
+ (add-before 'build 'fix-environment
+ (lambda _
+ (unsetenv "GHC_PACKAGE_PATH")
+ (setenv "CONFIG_SHELL" (which "bash"))
+ #t)))))
+ (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))))))
+
+(define-public ghc ghc-8.4)
(define-public ghc-hostname
(package
--
2.20.1 (Apple Git-117)
next prev parent reply other threads:[~2019-07-16 19:49 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-16 15:47 [bug#36692] [PATCH 0/2] Add GHC 8.6.5 Robert Vollmert
2019-07-16 15:48 ` [bug#36692] [PATCH 1/2] gnu: Rename ghc-8 to ghc-8.4 Robert Vollmert
2019-07-16 15:48 ` [bug#36692] [PATCH 2/2] gnu: Add GHC 8.6.5 Robert Vollmert
2019-07-16 16:00 ` [bug#36692] test failures Robert Vollmert
2019-07-16 16:28 ` Marius Bakke
2019-07-16 16:36 ` Robert Vollmert
2019-07-16 16:45 ` Marius Bakke
2019-07-16 19:00 ` Robert Vollmert
2019-07-16 18:58 ` [bug#36692] [PATCH 1/2] gnu: ghc@8.6.5: Duplicate build arguments from ghc-8.4 Robert Vollmert
2019-07-16 18:58 ` [bug#36692] [PATCH 2/2] gnu: ghc@8.6.5: Skip failing tests Robert Vollmert
2019-07-16 19:47 ` Robert Vollmert [this message]
2019-08-08 4:26 ` bug#36692: [PATCH (unified, replaces previous patches)] gnu: Add GHC 8.6.5 Timothy Sample
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190716194740.23243-1-rob@vllmrt.net \
--to=rob@vllmrt.net \
--cc=36692@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).