Package: guix-patches;
Reported by: Robert Vollmert <rob <at> vllmrt.net>
Date: Tue, 16 Jul 2019 15:48:01 UTC
Severity: normal
Tags: patch
Done: Timothy Sample <samplet <at> ngyro.com>
Bug is archived. No further changes may be made.
Message #35 received at 36692 <at> debbugs.gnu.org (full text, mbox):
From: Robert Vollmert <rob <at> vllmrt.net> To: 36692 <at> debbugs.gnu.org Cc: Robert Vollmert <rob <at> vllmrt.net> Subject: [PATCH (unified, replaces previous patches)] gnu: Add GHC 8.6.5 Date: Tue, 16 Jul 2019 21:47:41 +0200
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)
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.