Message ID | YT9fJdTVyHUOtSPR@noor.fritz.box |
---|---|
State | Accepted |
Headers | show |
Series | [bug#49606,wip-haskell,v2] gnu: Add ghc-8.10. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
On Mon, Sep 13 2021, Lars-Dominik Braun wrote: > Hi, > >> Any comments/thoughts on this, anyone? > I looked at the patch and would like to propose minor modifications. In > particular I > > - removed the 'fix-cc-name phase, which is inherited from ghc-8.8 anyway Aye, the patch has bitrotted a bit. > - converted the failing test (which I can’t get to pass either) into > an expected failure instead of nulling it out and Either way works for me. :-) > - renamed the package to ghc-next, which should avoid > https://issues.guix.gnu.org/47335 – if we also rename GHC 8.8 in a > different patch. AFAIK, ‘-next’ packages are usually unstable versions of the regular version, e.g., ‘emacs-next’ and ‘guile-next’. ‘ghc-8.10’ is a stable release, so I am not sure if the ‘-next’ prefix is appropriate. Also, I would imagine that other language ecosystems also have to problem of the default compiler not being the latest version, e.g., the ‘rust’ package points to rust-1.45, but rust-1.52 is the latest available version. > I think we can merge this patch to master, since it only adds a new GHC > version and has no further implications. Thoughts? Originally, the plan was to apply this patch to the ‘wip-haskell’ branch, which contained a patch that results in rebuilding all Haskell pacakges, and then update our Stackage LTS version (which hasn’t been updated for ~2 years)[1]. But seeing as there isn’t much interest in a Haskell update, applying to ‘master’ seems like a better idea. [1]: <https://yhetil.org/guix/e7BRZzcL_m4HQVFynEoJhiwl7-MNGGeVEXrXExHAjPuEl9KtiGsySm7YY5sQ4evmx_O3V1mhFq_p3PafWbCKy9t5_0gfR2I2IJCmV8JTryY=@protonmail.com/> > diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm > index 3d10bdc946..ca0498e6d9 100644 > --- a/gnu/packages/haskell.scm > +++ b/gnu/packages/haskell.scm > @@ -21,6 +21,7 @@ > ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com> > ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> > ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org> > +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -663,6 +664,60 @@ interactive environment for the functional language Haskell.") > (file-pattern ".*\\.conf\\.d$") > (file-type 'directory)))))) > > +(define-public ghc-8.10 > + (package > + (inherit ghc-8.8) > + (name "ghc-next") > + (version "8.10.7") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://www.haskell.org/ghc/dist/" > + version "/ghc-" version "-src.tar.xz")) > + (sha256 > + (base32 "179ws2q0dinl1a39wm9j37xzwm84zfz3c5543vz8v479khigdvp3")))) > + (native-inputs > + `(("ghc-bootstrap" ,ghc-8.8) > + ("ghc-testsuite" > + ,(origin > + (method url-fetch) > + (uri (string-append > + "https://www.haskell.org/ghc/dist/" > + version "/ghc-" version "-testsuite.tar.xz")) > + (patches (search-patches "ghc-testsuite-dlopen-pie.patch")) > + (sha256 > + (base32 > + "1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz")))) > + ("git" ,git-minimal) ; invoked during tests > + ,@(filter (match-lambda > + (("ghc-bootstrap" . _) #f) > + (("ghc-testsuite" . _) #f) > + (_ #t)) > + (package-native-inputs ghc-8.8)))) > + (arguments > + (substitute-keyword-arguments (package-arguments ghc-8.8) > + ((#:phases phases '%standard-phases) > + `(modify-phases ,phases > + (add-after 'unpack-testsuite 'patch-more-shebangs > + (lambda* (#:key inputs #:allow-other-keys) > + (let ((bash (assoc-ref inputs "bash"))) > + (substitute* '("testsuite/tests/driver/T8602/T8602.script") > + (("/bin/sh") > + (string-append bash "/bin/sh")))))) > + ;; Mark failing tests as broken. Reason for failure is unknown. > + (add-after 'skip-more-tests 'skip-even-more-tests > + (lambda _ > + (substitute* '("testsuite/tests/driver/T16521/all.T") > + (("extra_files" all) (string-append "[" all)) > + (("\\]\\), " all) > + (string-append all "expect_broken(0)], "))))))))) > + (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)))))) > + The updated patch LGTM, and great that you updated it to 8.10.7!
A patch to master would probably be more helpful to get people to try to build their favorite packages with 8.10 to find any issues. Although I guess we'd want to do that in wip-haskell for everything anyway. And then yes, we'll need to do a Stackage update for whatever release is the latest that uses 8.10. Hopefully we can get a big chunk of that through guix refresh. 8.10 will have to come first.
Hi, > AFAIK, ‘-next’ packages are usually unstable versions of the regular > version, e.g., ‘emacs-next’ and ‘guile-next’. ‘ghc-8.10’ is a stable > release, so I am not sure if the ‘-next’ prefix is appropriate. that is true, but I don’t see any other way to make guix environment --pure --ad-hoc ghc ghc-aeson -- ghci > import Data.Aeson do “the right thing” by default. We could also argue that from Guix’s point of view GHC 8.8/8.10 is (right now) unstable, because our entire set of Haskell packages is built with GHC 8.6 (and thus untested with higher versions of base). We also have python-next@3.9.2 on master with (I think) exactly the same purpose. So, unless there’s any strong objections I’ll be bold and rename GHC>8.6 to ghc-next, explaining the situation in a comment. > But seeing as there isn’t much interest in a > Haskell update, applying to ‘master’ seems like a better idea. I’m counting three people (John, you and me) interested in getting Haskell back into shape, so let’s just do it :) Cheers, Lars
On Tue, Sep 14 2021, Lars-Dominik Braun wrote: > Hi, > >> AFAIK, ‘-next’ packages are usually unstable versions of the regular >> version, e.g., ‘emacs-next’ and ‘guile-next’. ‘ghc-8.10’ is a stable >> release, so I am not sure if the ‘-next’ prefix is appropriate. > that is true, but I don’t see any other way to make > > guix environment --pure --ad-hoc ghc ghc-aeson -- ghci > > import Data.Aeson > > do “the right thing” by default. We could also argue that from > Guix’s point of view GHC 8.8/8.10 is (right now) unstable, because our > entire set of Haskell packages is built with GHC 8.6 (and thus untested > with higher versions of base). We also have python-next@3.9.2 on master > with (I think) exactly the same purpose. So, unless there’s any strong > objections I’ll be bold and rename GHC>8.6 to ghc-next, explaining > the situation in a comment. Ah, from Guix’s perspective GHC>8.6 would be unstable I guess. Feel free to push! :-) >> But seeing as there isn’t much interest in a >> Haskell update, applying to ‘master’ seems like a better idea. > I’m counting three people (John, you and me) interested in getting > Haskell back into shape, so let’s just do it :) That would be great! :-)
Hi, merged to master as 69f7a8f476da4cca5d146e3b232a9919693eb2eb. Thank you very much, Lars
Great, thank you all for the work on ghc-8.10! Now to start the process of package updates on wip-haskell...
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 3d10bdc946..ca0498e6d9 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -21,6 +21,7 @@ ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -663,6 +664,60 @@ interactive environment for the functional language Haskell.") (file-pattern ".*\\.conf\\.d$") (file-type 'directory)))))) +(define-public ghc-8.10 + (package + (inherit ghc-8.8) + (name "ghc-next") + (version "8.10.7") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.haskell.org/ghc/dist/" + version "/ghc-" version "-src.tar.xz")) + (sha256 + (base32 "179ws2q0dinl1a39wm9j37xzwm84zfz3c5543vz8v479khigdvp3")))) + (native-inputs + `(("ghc-bootstrap" ,ghc-8.8) + ("ghc-testsuite" + ,(origin + (method url-fetch) + (uri (string-append + "https://www.haskell.org/ghc/dist/" + version "/ghc-" version "-testsuite.tar.xz")) + (patches (search-patches "ghc-testsuite-dlopen-pie.patch")) + (sha256 + (base32 + "1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz")))) + ("git" ,git-minimal) ; invoked during tests + ,@(filter (match-lambda + (("ghc-bootstrap" . _) #f) + (("ghc-testsuite" . _) #f) + (_ #t)) + (package-native-inputs ghc-8.8)))) + (arguments + (substitute-keyword-arguments (package-arguments ghc-8.8) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'unpack-testsuite 'patch-more-shebangs + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* '("testsuite/tests/driver/T8602/T8602.script") + (("/bin/sh") + (string-append bash "/bin/sh")))))) + ;; Mark failing tests as broken. Reason for failure is unknown. + (add-after 'skip-more-tests 'skip-even-more-tests + (lambda _ + (substitute* '("testsuite/tests/driver/T16521/all.T") + (("extra_files" all) (string-append "[" all)) + (("\\]\\), " all) + (string-append all "expect_broken(0)], "))))))))) + (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-8 ghc-8.6) (define-public ghc ghc-8)
Hi, > Any comments/thoughts on this, anyone? I looked at the patch and would like to propose minor modifications. In particular I - removed the 'fix-cc-name phase, which is inherited from ghc-8.8 anyway - converted the failing test (which I can’t get to pass either) into an expected failure instead of nulling it out and - renamed the package to ghc-next, which should avoid https://issues.guix.gnu.org/47335 – if we also rename GHC 8.8 in a different patch. I think we can merge this patch to master, since it only adds a new GHC version and has no further implications. Thoughts? Cheers, Lars