mbox series

[bug#61420,00/31] Haskell upgrade to Stackage 20.5

Message ID Y+dm9R4usLj/IJpa@noor.fritz.box
Headers show
Series Haskell upgrade to Stackage 20.5 | expand

Message

Lars-Dominik Braun Feb. 11, 2023, 9:59 a.m. UTC
Hi,

these patches (also found in the wip-haskell branch) lift Haskell to
the Stackage release 20.5, which is based on GHC 9.2.

Apart from the upgrade, I also made a few fixes to haskell-build-system
and the importer such as

- Support for multiple Haskell libraries in one package (see #54729).
- Add an upstream-name property to all packages and use it in the updater.
- Use hackage-uri instead of string-append to build URLs.
- Build binaries statically by default and remove extra static output
  from haskell-build-system (this reduces pandoc’s size even further
  by ~100MB without the need to resort to weird input rewriting hacks).

I’m not including the big, automated changes here – please check the branch.

Cheers,
Lars

Lars-Dominik Braun (29):
  import: hackage: Allow version at the beginning of cabal file.
  gnu: Switch default to GHC 9.2.
  import: stackage: Update to release 20.5.
  import: hackage: Add upstream-name property.
  gnu: Add upstream-name property to Haskell packages.
  import: hackage: Use upstream-name property.
  gnu: Use HACKAGE-URI for packages from Hackage.
  import: haskell: Add new internal library for GHC 9.2.
  build: haskell-build-system: Process all transitive dependencies.
  build: haskell-build-system: Remove unused linker flags.
  Upgrade Haskell packages.
  gnu: ghc-9.2: Increase make verbosity.
  gnu: Remove unused Haskell packages.
  gnu: ghc-parsec: Update to 3.1.15.0.
  gnu: idris: Fix overly zealous regular expression.
  gnu: elm: Support GHC 9.2.
  build-system: haskell: Drop default "static" output.
  gnu: ghc-9.2: Support static linking with glibc < 2.34.
  gnu: ghc-lua: Disable symbol export.
  build: haskell-build-system: Build static executables by default.
  gnu: ngless: Drop Haskell libraries and documentation.
  gnu: hledger: Drop Haskell libraries and documentation.
  gnu: darcs: Drop Haskell libraries and documentation.
  gnu: git-annex: Drop Haskell documentation.
  gnu: shellcheck: Drop Haskell libraries.
  gnu: pandoc: Drop Haskell libraries and documentation.
  gnu: purescript: Drop Haskell libraries and documentation.
  gnu: xmobar: Drop Haskell libraries and documentation.
  gnu: idris: Adapt to changed haskell-build-system.

Philip Munksgaard (1):
  build: haskell-build-system: Support multiple libraries.

zimoun (1):
  build: haskell-build-system: Remove trailing #t.

 gnu/local.mk                                  |     8 +-
 gnu/packages/agda.scm                         |     5 +-
 gnu/packages/bioinformatics.scm               |   215 +-
 gnu/packages/dhall.scm                        |   168 +-
 gnu/packages/elm.scm                          |     5 +-
 gnu/packages/finance.scm                      |   213 +-
 gnu/packages/haskell-apps.scm                 |   613 +-
 gnu/packages/haskell-check.scm                |   782 +-
 gnu/packages/haskell-crypto.scm               |   352 +-
 gnu/packages/haskell-web.scm                  |  1453 +-
 gnu/packages/haskell-xyz.scm                  | 11569 ++++++++--------
 gnu/packages/haskell.scm                      |    25 +-
 gnu/packages/idris.scm                        |    14 +-
 gnu/packages/lisp.scm                         |   127 +-
 .../cabal-install-base16-bytestring1.0.patch  |    29 -
 .../patches/cabal-install-ghc8.10.patch       |   393 -
 gnu/packages/patches/elm-ghc9.2.patch         |   187 +
 .../ghc-9.2-glibc-2.33-link-order.patch       |    35 +
 .../patches/ghc-bloomfilter-ghc9.2.patch      |   303 +
 .../patches/ghc-bytestring-handle-ghc9.patch  |    67 +
 gnu/packages/patches/ngless-unliftio.patch    |    66 -
 .../patches/xmonad-dynamic-linking.patch      |    24 +-
 .../patches/xmonad-next-dynamic-linking.patch |    16 -
 gnu/packages/purescript.scm                   |   172 +-
 gnu/packages/wm.scm                           |   136 +-
 guix/build-system/haskell.scm                 |     5 +-
 guix/build/haskell-build-system.scm           |   136 +-
 guix/import/hackage.scm                       |    21 +-
 guix/import/stackage.scm                      |     6 +-
 tests/hackage.scm                             |     5 +
 30 files changed, 8449 insertions(+), 8701 deletions(-)
 delete mode 100644 gnu/packages/patches/cabal-install-base16-bytestring1.0.patch
 delete mode 100644 gnu/packages/patches/cabal-install-ghc8.10.patch
 create mode 100644 gnu/packages/patches/elm-ghc9.2.patch
 create mode 100644 gnu/packages/patches/ghc-9.2-glibc-2.33-link-order.patch
 create mode 100644 gnu/packages/patches/ghc-bloomfilter-ghc9.2.patch
 create mode 100644 gnu/packages/patches/ghc-bytestring-handle-ghc9.patch
 delete mode 100644 gnu/packages/patches/ngless-unliftio.patch
 delete mode 100644 gnu/packages/patches/xmonad-next-dynamic-linking.patch


base-commit: 900d33527c9286a811f064d4bb8f4a9b18d1db0b

Comments

Simon Tournier Feb. 14, 2023, 7:27 p.m. UTC | #1
Hi Lars,

On sam., 11 févr. 2023 at 10:59, Lars-Dominik Braun <lars@6xq.net> wrote:

> these patches (also found in the wip-haskell branch) lift Haskell to
> the Stackage release 20.5, which is based on GHC 9.2.

From the CI dashboard

    https://ci.guix.gnu.org/eval/183093/dashboard

all seem green.  Well, it is hard to know but giving a look at the
various evaluations,

https://ci.guix.gnu.org/eval/183093
https://ci.guix.gnu.org/eval/154817?status=failed

for instance, https://ci.guix.gnu.org/build/373800/log/raw reports that
’opencv’ is failing but it is unrelated to this branch – “guix weather”
reports it is broken on master for Berlin but not Bordeaux.

https://ci.guix.gnu.org/build/420612/details

Similarly for the other broken packages in this wip-haskell branch.

However, python-pypandoc seems broken on wip-haskell but not in master.
Idem for ganeti

I have locally rebased wip-haskell on the top of master (4501a50bbd) and
these 2 packages (python-pypandoc and ganeti) are still failing (once
the series is applied) but not in master (before the series is applied,
i.e., commit 4501a50bbd).


Well, I have not carefully checked yet each commit but they appear good
to me; except maybe « Upgrade Haskell packages. » but it is too much
work for improving, IMHO. :-)

Cheers,
simon
Lars-Dominik Braun Feb. 15, 2023, 8:45 a.m. UTC | #2
Hi,

> However, python-pypandoc seems broken on wip-haskell but not in master.
> Idem for ganeti
yeah, python-pypandoc and ganeti are known to be broken. Ganeti does
not support GHC 9.2 (and there don’t seem to be any patches fixing
this anywhere) and pypandoc fails even more tests when upgrading it to
v1.10 – not sure what to do.

> except maybe « Upgrade Haskell packages. » but it is too much
> work for improving, IMHO. :-)
Well, I know that this is not what the policy requires, but it is a
deliberate choice. There is no functional/working intermediate state
here. You can only have all of the changes or none. Creating >700 commits
“just because” seems wrong.

Cheers,
Lars
Simon Tournier Feb. 15, 2023, 9:20 a.m. UTC | #3
Hi,

On Wed, 15 Feb 2023 at 09:45, Lars-Dominik Braun <lars@6xq.net> wrote:

>> However, python-pypandoc seems broken on wip-haskell but not in master.
>> Idem for ganeti
> yeah, python-pypandoc and ganeti are known to be broken. Ganeti does
> not support GHC 9.2 (and there don’t seem to be any patches fixing
> this anywhere) and pypandoc fails even more tests when upgrading it to
> v1.10 – not sure what to do.

About ganeti, does it make sense to build it with a transformation and
use an older GHC version (that it is still available).‘

About python-pypandoc, if there is no solution for fixing it and it will
be broken, I propose to remove it.  WDYT?


Cheers,
simon
Simon Tournier Feb. 15, 2023, 10:43 a.m. UTC | #4
Hi Lars,

On Sat, 11 Feb 2023 at 10:59, Lars-Dominik Braun <lars@6xq.net> wrote:

> Lars-Dominik Braun (29):
>   import: hackage: Allow version at the beginning of cabal file.
>   gnu: Switch default to GHC 9.2.
>   import: stackage: Update to release 20.5.
>   import: hackage: Add upstream-name property.
>   gnu: Add upstream-name property to Haskell packages.
>   import: hackage: Use upstream-name property.
>   gnu: Use HACKAGE-URI for packages from Hackage.
>   import: haskell: Add new internal library for GHC 9.2.
>   build: haskell-build-system: Process all transitive dependencies.
>   build: haskell-build-system: Remove unused linker flags.
>   Upgrade Haskell packages.
>   gnu: ghc-9.2: Increase make verbosity.
>   gnu: Remove unused Haskell packages.
>   gnu: ghc-parsec: Update to 3.1.15.0.
>   gnu: idris: Fix overly zealous regular expression.
>   gnu: elm: Support GHC 9.2.
>   build-system: haskell: Drop default "static" output.
>   gnu: ghc-9.2: Support static linking with glibc < 2.34.
>   gnu: ghc-lua: Disable symbol export.
>   build: haskell-build-system: Build static executables by default.
>   gnu: ngless: Drop Haskell libraries and documentation.
>   gnu: hledger: Drop Haskell libraries and documentation.
>   gnu: darcs: Drop Haskell libraries and documentation.
>   gnu: git-annex: Drop Haskell documentation.
>   gnu: shellcheck: Drop Haskell libraries.
>   gnu: pandoc: Drop Haskell libraries and documentation.
>   gnu: purescript: Drop Haskell libraries and documentation.
>   gnu: xmobar: Drop Haskell libraries and documentation.
>   gnu: idris: Adapt to changed haskell-build-system.
>
> Philip Munksgaard (1):
>   build: haskell-build-system: Support multiple libraries.
>
> zimoun (1):
>   build: haskell-build-system: Remove trailing #t.

From this series, I do not see [PATCH 07/31], neither 09/31 or 13/31.
Is it expected?

 [PATCH 00/31] Haskell upgrade to Stackage 20.5 (Guix Guix::review? list::guix-patches replied)
 [PATCH 01/31] import: hackage: Allow version at the beginning of cabal file. (Guix list::guix-patches unread)
 [PATCH 02/31] build: haskell-build-system: Remove trailing #t. (Guix inbox list::guix-patches unread)
 [PATCH 03/31] build: haskell-build-system: Support multiple libraries. (Guix inbox list::guix-patches unread)
 [PATCH 04/31] gnu: Switch default to GHC 9.2. (Guix Guix::review? list::guix-patches unread)
 [PATCH 05/31] import: stackage: Update to release 20.5. (Guix list::guix-patches unread)
 [PATCH 06/31] import: hackage: Add upstream-name property. (Guix list::guix-patches unread)
 [PATCH 08/31] import: hackage: Use upstream-name property. (Guix list::guix-patches unread)
 [PATCH 10/31] import: haskell: Add new internal library for GHC 9.2. (Guix list::guix-patches unread)
 [PATCH 11/31] build: haskell-build-system: Process all transitive dependencies. (Guix list::guix-patches unread)
 [PATCH 12/31] build: haskell-build-system: Remove unused linker flags. (Guix list::guix-patches unread)
 [PATCH 14/31] gnu: ghc-9.2: Increase make verbosity. (Guix Guix::review? list::guix-patches unread)
 [PATCH 15/31] gnu: Remove unused Haskell packages. (Guix Guix::review? list::guix-patches unread)
 [PATCH 16/31] gnu: ghc-parsec: Update to 3.1.15.0. (Guix Guix::review? list::guix-patches unread)
 [PATCH 17/31] gnu: idris: Fix overly zealous regular expression. (Guix list::guix-patches unread)
 [PATCH 18/31] gnu: elm: Support GHC 9.2. (Guix list::guix-patches unread)
 [PATCH 19/31] build-system: haskell: Drop default "static" output. (Guix Guix::review? list::guix-patches unread)
 [PATCH 20/31] gnu: ghc-9.2: Support static linking with glibc < 2.34. (Guix Guix::review? list::guix-patches unread)
 [PATCH 21/31] gnu: ghc-lua: Disable symbol export. (Guix Guix::review? list::guix-patches unread)
 [PATCH 22/31] build: haskell-build-system: Build static executables by default. (Guix list::guix-patches unread)
 [PATCH 23/31] gnu: ngless: Drop Haskell libraries and documentation. (Guix Guix::review? list::guix-patches unread)
 [PATCH 24/31] gnu: hledger: Drop Haskell libraries and documentation. (Guix list::guix-patches unread)
 [PATCH 25/31] gnu: darcs: Drop Haskell libraries and documentation. (Guix Guix::review? list::guix-patches unread)
 [PATCH 26/31] gnu: git-annex: Drop Haskell documentation. (Guix Guix::review? list::guix-patches unread)
 [PATCH 27/31] gnu: shellcheck: Drop Haskell libraries. (Guix Guix::review? list::guix-patches unread)
 [PATCH 28/31] gnu: pandoc: Drop Haskell libraries and documentation. (Guix Guix::review? list::guix-patches unread)
 [PATCH 29/31] gnu: purescript: Drop Haskell libraries and documentation. (Guix list::guix-patches unread)
 [PATCH 30/31] gnu: xmobar: Drop Haskell libraries and documentation. (Guix list::guix-patches unread)
 [PATCH 31/31] gnu: idris: Adapt to changed haskell-build-system. (Guix list::guix-patches unread)


Cheers,
simon
Lars-Dominik Braun Feb. 15, 2023, 10:58 a.m. UTC | #5
Hi,

> From this series, I do not see [PATCH 07/31], neither 09/31 or 13/31.
> Is it expected?
yes, they’re a few hundred kilobytes with thousands of lines
each. Please have a look at the branch instead.

Lars
Simon Tournier Feb. 15, 2023, 11:10 a.m. UTC | #6
Hi,

On Wed, 15 Feb 2023 at 11:58, Lars-Dominik Braun <lars@6xq.net> wrote:

> yes, they’re a few hundred kilobytes with thousands of lines
> each. Please have a look at the branch instead.

All LGTM.  Some minor comments that can be addressed later, IMHO.

Thank you for this hard work!

Cheers,
simon
Christopher Baines Feb. 15, 2023, 2:03 p.m. UTC | #7
Lars-Dominik Braun <lars@6xq.net> writes:

>> From this series, I do not see [PATCH 07/31], neither 09/31 or 13/31.
>> Is it expected?
> yes, they’re a few hundred kilobytes with thousands of lines
> each. Please have a look at the branch instead.

I ended up also looking at these missing patches, since that explains
why the testing for https://qa.guix.gnu.org/issue/61420 hasn't happened.

I've been sent these large diffs anyway since that happened when you
pushed to the branch, so I wouldn't hesitate to send large patches to
guix-patches, since that's helpful to have the testing happen
automatically.
Lars-Dominik Braun Feb. 26, 2023, 9:47 a.m. UTC | #8
Hi,

the branch wip-haskell has been merged.

Lars