Skip to content

Comments

haskellPackages: stackage LTS 23.24 -> LTS 23.27#424162

Merged
sternenseemann merged 87 commits intostagingfrom
haskell-updates
Jul 28, 2025
Merged

haskellPackages: stackage LTS 23.24 -> LTS 23.27#424162
sternenseemann merged 87 commits intostagingfrom
haskell-updates

Conversation

@sternenseemann
Copy link
Member

This Merge

This PR is the regular merge of the haskell-updates branch into staging.

This branch is being continually built and tested by hydra at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. You may be able to find an up-to-date Hydra build report at cdepillabout/nix-haskell-updates-status.

We roughly aim to merge these haskell-updates PRs at least once every two weeks. See the @NixOS/haskell team calendar for who is currently in charge of this branch.

haskellPackages Workflow Summary

Our workflow is currently described in pkgs/development/haskell-modules/HACKING.md.

The short version is this:

  • We regularly update the Stackage and Hackage pins on haskell-updates (normally at the beginning of a merge window).
  • The community fixes builds of Haskell packages on that branch.
  • We aim at at least one merge of haskell-updates into staging every two weeks.
  • We only do the merge if the mergeable job is succeeding on hydra.
  • If a maintained package is still broken at the time of merge, we will only merge if the maintainer has been pinged 7 days in advance. (If you care about a Haskell package, become a maintainer!)

More information about Haskell packages in nixpkgs can be found in the nixpkgs manual.


This is the follow-up to #413046. Come to #haskell:nixos.org if you have any questions.

alexfmpe and others added 30 commits June 4, 2025 15:27
…ing for windows

Fixes error: `could not execute: /bin/false`
This package doesn't build its executables (json2yaml, yaml2json) by default, see
snoyberg/yaml#194.
Rather than traversing the entire haskell package set, let's just explicitly list the amazonka packages. This should improve eval times somewhat, since the haskell package set is large, and hasPrefix is surprisingly expensive, as each call checks that the needle is not a path.
haskell.packages.ghc912.hpack: 0.38.0 -> 0.38.1
Some packages in Hackage apparently now declare cabal-version: 3.12, so
let's bump cabal2nix-unstable to the latest Cabal version we ship. We
should probably do this for pkgs.cabal2nix as well, but I'm not sure how
to it exactly.
This allows other scripts to detect whether anything changed without
resorting to git-diff(1): If nothing changed, stdout will be empty (i.e.
we now enforce that other messages go to stderr). To make sure that this
behavior is retained in the future, the scripts' behavior is briefly
documented in the files' header.
The “This commit was generated by …” message is very wordy and often
exceeds 72 characters which is a good (loose) target for wrapping lines
in commit messages.
Calling git commit with --edit here, allows the user to rephrase the
very nondescript default message, in doing so e.g. clarifying why the
regeneration was necessary etc. This should hopefully encourage better
commit mesages.
Currently, every package set consists of three commits, generated by
update-hackage.sh, update-stackage.sh and
regenerate-hackage-packages.sh, respectively. This is suboptimal, as it
necessarly causes intermediate states of Nixpkgs where the generated
hackage-packages.nix and all-cabal-hasehs and/or the hackage2nix
configuration files are out of sync. Ideally, running
regenerate-hackage-packages.sh is a no-op for every Nixpkgs revision.

This is achieved by adding a wrapper script, update-package-set.sh,
which runs the individual moving parts and commits the result.
all-cabal-hashes: 2025-06-01T18:10:16Z -> 2025-07-07T21:33:55Z

(generated by maintainers/scripts/haskell/update-package-set.sh)
Upstream Hackage and Stackage LTS have corrected the faulty bounds.
ncfavier and others added 3 commits July 24, 2025 17:11
We keep using LLVM 20, though, since LLVM 21 is still just a release
candidate on our branch and llvm-ffi doesn't yet supported a released
LLVM 21, just the git version. We can use the older version by passing
a specific cabal flag.

The evaluation warning reminding us to upgrade now also checks whether
LLVM is a release candidate before triggering.
@sternenseemann
Copy link
Member Author

sternenseemann commented Jul 24, 2025

haskell-updates build report from hydra

evaluation 1817070 of nixpkgs commit 4657535 as of 2025-07-24 07:57 UTC

🔴 Branch not mergeable

  • mergeable jobset failed.
  • maintained jobset failed.

Build summary

Platform Failed ❌ DependencyFailed ❗ Unfinished ⏳ Success ✅
x86_64-linux 🐧 42 27 1 7380

Maintained Linux packages with failed dependency

Unmaintained packages with build failure

42 job(s)

Unmaintained packages with failed dependency

94 job(s)

Top 50 broken packages, sorted by number of reverse dependencies

50 job(s)

haskell98 ⤴️ 152
failure ⤴️ 72
enumerator ⤴️ 56
connection ⤴️ 49
util ⤴️ 49
derive ⤴️ 48
fclabels ⤴️ 47
syb-with-class ⤴️ 42
MonadCatchIO-transformers ⤴️ 41
TypeCompose ⤴️ 41
PrimitiveArray ⤴️ 35
crypto-random ⤴️ 35
dual ⤴️ 32
hsp ⤴️ 32
language-ecmascript ⤴️ 31
iteratee ⤴️ 29
composite-base ⤴️ 28
regexpr ⤴️ 27
text-format ⤴️ 27
crypto-numbers ⤴️ 25
either-unwrap ⤴️ 25
Crypto ⤴️ 22
crypto-pubkey ⤴️ 22
haskelldb ⤴️ 22
wxdirect ⤴️ 22
BiobaseTypes ⤴️ 21
alg ⤴️ 21
hw-rankselect-base ⤴️ 21
libxml-sax ⤴️ 21
wxc ⤴️ 21
biocore ⤴️ 20
hw-excess ⤴️ 20
reform ⤴️ 20
wxcore ⤴️ 20
attoparsec-enumerator ⤴️ 19
cprng-aes ⤴️ 19
fay ⤴️ 19
harp ⤴️ 19
hsx2hs ⤴️ 19
hw-balancedparens ⤴️ 19
ixset ⤴️ 19
mmsyn2 ⤴️ 19
wx ⤴️ 19
BiobaseENA ⤴️ 18
asn1-data ⤴️ 18
bytestring-show ⤴️ 18
dbus-core ⤴️ 18
digit ⤴️ 18
gtksourceview2 ⤴️ 18
hw-rankselect ⤴️ 18

⤴️: The number of packages that depend (directly or indirectly) on this package (if any). If two numbers are shown the first (lower) number considers only packages which currently have enabled hydra jobs, i.e. are not marked broken. The second (higher) number considers all packages.

Report generated with maintainers/scripts/haskell/hydra-report.hs

@aidalgol
Copy link
Contributor

I think oama is broken because it's using ghc912, in which cabal packages are broken.

Failures:

  libraries/process/System/Process/Common.hs:239:16: 
  1) Cabal.Options.replOnlyOptions is the set of options that are unique to 'cabal repl'
       uncaught exception: IOException of type NoSuchThing
       cabal: readCreateProcess: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.Options/replOnlyOptions/is the set of options that are unique to 'cabal repl'/" --seed 465951121

  libraries/process/System/Process/Common.hs:239:16: 
  2) Cabal.Options.rejectUnsupportedOptions produces error messages that are consistent with 'cabal repl'
       uncaught exception: IOException of type NoSuchThing
       cabal: rawSystem: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.Options/rejectUnsupportedOptions/produces error messages that are consistent with 'cabal repl'/" --seed 465951121

  libraries/process/System/Process/Common.hs:239:16: 
  3) Cabal.Options.rejectUnsupportedOptions, with --list-options, lists supported command-line options
       uncaught exception: IOException of type NoSuchThing
       cabal: readCreateProcess: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.Options/rejectUnsupportedOptions/with --list-options/lists supported command-line options/" --seed 465951121

  libraries/process/System/Process/Common.hs:239:16: 
  4) Cabal.Paths.paths returns the path to 'ghc'
       uncaught exception: IOException of type NoSuchThing
       cabal: readCreateProcess: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.Paths/paths/returns the path to 'ghc'/" --seed 465951121

  libraries/process/System/Process/Common.hs:239:16: 
  5) Cabal.Paths.paths returns the path to 'ghc-pkg'
       uncaught exception: IOException of type NoSuchThing
       cabal: readCreateProcess: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.Paths/paths/returns the path to 'ghc-pkg'/" --seed 465951121

  libraries/process/System/Process/Common.hs:239:16: 
  6) Cabal.Paths.paths returns the path to Cabal's cache directory
       uncaught exception: IOException of type NoSuchThing
       cabal: readCreateProcess: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.Paths/paths/returns the path to Cabal's cache directory/" --seed 465951121

  libraries/process/System/Process/Common.hs:239:16: 
  7) Cabal.ReplOptions.options is the list of documented 'repl' options
       uncaught exception: IOException of type NoSuchThing
       cabal: readCreateProcess: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.ReplOptions/options/is the list of documented 'repl' options/" --seed 465951121

  libraries/process/System/Process/Common.hs:239:16: 
  8) Cabal.ReplOptions.options is consistent with 'cabal repl --list-options'
       uncaught exception: IOException of type NoSuchThing
       cabal: readCreateProcess: posix_spawnp: does not exist (No such file or directory)

  To rerun use: --match "/Cabal.ReplOptions/options/is consistent with 'cabal repl --list-options'/" --seed 465951121

Randomized with seed 465951121

Finished in 19.4124 seconds
207 examples, 8 failures
Test suite spec: FAIL
Test suite logged to: dist/test/doctest-0.24.2-spec.log
0 of 1 test suites (0 of 1 test cases) passed.

ghcide doesn't support hiedb >= 0.7 in any released version yet. Even
though support for hiedb >= 0.7 is desireable (since it fixes some
bugs), it looks a little risky. It's probably better to wait for the
next release of ghcide.

See
- haskell/haskell-language-server@0a9b1cb
- haskell/haskell-language-server@f43d811
@sternenseemann
Copy link
Member Author

@aidalgol No, just the test suite of doctest. This was due to a mistake in 2464848 and has been fixed. I was wondering, though, why does it it depend on GHC 9.12?

vcr needs GHC2021 and there is probably no point patching this out. It
is a little annoying since we probably skip the tests of hpack that need
vcr anyways (since they access the network), but we'll live.
@aidalgol
Copy link
Contributor

I was wondering, though, why does it it depend on GHC 9.12?

If I try building with any later version, the build fails. I think it's to do with Cabal versions. This is the output of nix-build -A oama if I bump the GHC version used to ghc92, on the haskell-packages branch.

building '/nix/store/f8prms55xb75wvw67nm7x65lbgahlypv-oama-0.20.2.drv'...
Running phase: setupCompilerEnvironmentPhase
Build with /nix/store/h9hjxz6fw5wxksamwn1d4mfac7q3yxx2-ghc-9.2.8.
Running phase: unpackPhase
unpacking source archive /nix/store/2rsiarvjbavbp536wsnr7xl09rrm92v0-oama-bbe5a6d
source root is oama-bbe5a6d
Running phase: patchPhase
Running phase: compileBuildDriverPhase
setupCompileFlags: -package-db=/build/tmp.EWNh3Q0DnA/setup-package.conf.d -threaded
[1 of 1] Compiling Main             ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.EWNh3Q0DnA/Main.o )
Linking Setup ...
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
configureFlags: --verbose --prefix=/nix/store/9ghjcn9h7ligl175zmgdbi7w90zprhdi-oama-0.20.2 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.EWNh3Q0DnA/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --disable-library-profiling --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --extra-lib-dirs=/nix/store/sbjkm6a7p6f97xqgy4i83rdi1q71nxcz-ncurses-6.5/lib --extra-lib-dirs=/nix/store/v4vqyvb5gq799b1v3qf5lyyij7pnjfiz-libffi-3.4.8/lib --extra-lib-dirs=/nix/store/b3fnpzhiqz05x68kmar2av1n5ma5s316-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/pi0qlx5s0ij1v76jl4dlzjccxcxzw56i-numactl-2.0.18/lib
Using Parsec parser
Warning: oama.cabal:0:0: Unsupported cabal-version 3.12. See
https://github.com/haskell/cabal/issues/4899.

Setup: Failed parsing "./oama.cabal".

@sternenseemann
Copy link
Member Author

@AidaGol GHC 9.2 is much older than GHC 9.12, you may want to try GHC 9.8 which is the current default version, for example.

ghc-hie has test targets for testing against a list of GHC versions. We
could in theory enable the test for the currently available GHC (it
succeeds), but it seems like hspecs pattern matching is not powerful
enough for this (with tasty you could probably do it).
@aidalgol
Copy link
Contributor

GHC 9.2 is much older than GHC 9.12, you may want to try GHC 9.8 which is the current default version, for example.

Oh, how embarrassing. My brain was in decimal mode, not versioning mode. 🤦 Once again, with ghc98.

building '/nix/store/9gv1qjfawgygwsqmw9pnml3gk9v4m1y8-oama-0.20.2.drv'...
Running phase: setupCompilerEnvironmentPhase
Build with /nix/store/gvjpcpd0kfa5b7wsc2ad6rsk75kk1g38-ghc-9.8.4.
Running phase: unpackPhase
unpacking source archive /nix/store/2rsiarvjbavbp536wsnr7xl09rrm92v0-oama-bbe5a6d
source root is oama-bbe5a6d
Running phase: patchPhase
Running phase: compileBuildDriverPhase
setupCompileFlags: -package-db=/build/tmp.Zu4NU6dTGz/setup-package.conf.d -threaded
[1 of 2] Compiling Main             ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.Zu4NU6dTGz/Main.o )
[2 of 2] Linking Setup
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
configureFlags: --verbose --prefix=/nix/store/m31b1x27i007qb0gyw1fl951y1vlp1w8-oama-0.20.2 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.Zu4NU6dTGz/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --disable-library-profiling --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --extra-lib-dirs=/nix/store/sbjkm6a7p6f97xqgy4i83rdi1q71nxcz-ncurses-6.5/lib --extra-lib-dirs=/nix/store/v4vqyvb5gq799b1v3qf5lyyij7pnjfiz-libffi-3.4.8/lib --extra-lib-dirs=/nix/store/n5fkds5i1pzcbv85x4v89hdlbx2l9kwz-elfutils-0.193/lib --extra-lib-dirs=/nix/store/b3fnpzhiqz05x68kmar2av1n5ma5s316-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/pi0qlx5s0ij1v76jl4dlzjccxcxzw56i-numactl-2.0.18/lib
Using Parsec parser
Warning: oama.cabal:0:0: Unsupported cabal-version 3.12. See
https://github.com/haskell/cabal/issues/4899.
CallStack (from HasCallStack):
  withMetadata, called at libraries/Cabal/Cabal/src/Distribution/Simple/Utils.hs:368:14 in Cabal-3.10.3.0-73f4:Distribution.Simple.Utils
Error: Setup: Failed parsing "./oama.cabal".

@sternenseemann
Copy link
Member Author

@aidalgol Okay. In principle, you can provide a newer version of Cabal for Setup.hs via setupHaskellDepends. I wonder whether upstream actually needs such a high cabal-version as well…

nixpkgs-ci bot and others added 3 commits July 27, 2025 00:25
Based on <https://hydra.nixos.org/eval/1817170> (8076d01),
fetched at 2025-07-27 19:26 UTC.

(generated by maintainers/scripts/haskell/mark-broken.sh)
@sternenseemann sternenseemann marked this pull request as ready for review July 28, 2025 12:23
@sternenseemann sternenseemann merged commit 764408b into staging Jul 28, 2025
33 checks passed
@sternenseemann
Copy link
Member Author

We can send some fixups to staging, so have a look at 494c6fb. I've prioritized to make the next staging-next rotation – also because the rebuild caused by 28c9c6e makes testing on this branch unnecessarily resource intensive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.workflow: package set update Development branch for package set updates (haskell/python) 6.topic: haskell General-purpose, statically typed, purely functional programming language 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 5001+ This PR causes many rebuilds on Darwin and must target the staging branches. 10.rebuild-linux: 501+ This PR causes many rebuilds on Linux and should normally target the staging branches. 10.rebuild-linux: 5001+ This PR causes many rebuilds on Linux and must target the staging branches.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants