Skip to content

haskellPackages: update stackage and hackage#208421

Merged
maralorn merged 29 commits intomasterfrom
haskell-updates
Jan 4, 2023
Merged

haskellPackages: update stackage and hackage#208421
maralorn merged 29 commits intomasterfrom
haskell-updates

Conversation

@maralorn
Copy link
Member

This Merge

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

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 master 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!)

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

This commit has been generated by maintainers/scripts/haskell/update-stackage.sh
This commit has been generated by maintainers/scripts/haskell/update-hackage.sh
This commit has been generated by maintainers/scripts/haskell/regenerate-hackage-packages.sh
@github-actions github-actions bot added the 6.topic: haskell General-purpose, statically typed, purely functional programming language label Dec 30, 2022
@ofborg ofborg bot added 8.has: package (new) This PR adds a new package 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 2501-5000 This PR causes many rebuilds on Darwin and should 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: 2501-5000 This PR causes many rebuilds on Linux and should target the staging branches. labels Dec 30, 2022
github-actions bot and others added 9 commits January 2, 2023 00:12
… template-haskell.

This updates the `true-name` package to include changes up to version
0.1.0.4, as well as compilation failures when building with
template-haskell version 2.16 and higher.
Add a patch to allow `true-name` to build with current template-haskell.
This commit has been generated by maintainers/scripts/haskell/regenerate-hackage-packages.sh
Finally building a cross compiler using hadrian is possible, but there
are some outstanding issues regarding external libraries in the package
db which causes issues with ghc-bignum.
@sternenseemann
Copy link
Member

sternenseemann commented Jan 3, 2023

haskell-updates build report from hydra

evaluation 1788674 of nixpkgs commit cb736c3 as of 2023-01-03 12:23 UTC

🔴 Branch not mergeable

  • mergeable jobset failed.
  • maintained jobset failed.

Build summary

Platform Failed ❌ DependencyFailed ❗ TimedOut ⌛🚫 Unfinished ⏳ Success ✔️
aarch64-linux 📱 23 29 2 6411
x86_64-darwin 🍎 61 27 294 6024
x86_64-linux 🐧 11 26 1 3 6460

Maintained packages with build failure

Maintained packages with failed dependency

Unmaintained packages with build failure

83 job(s)

Unmaintained packages with failed dependency

46 job(s)

Top 50 broken packages, sorted by number of reverse dependencies

50 job(s)

amazonka-core ⤴️ 187
gogol-core ⤴️ 184
haskell98 ⤴️ 153
enumerator ⤴️ 56
th-desugar ⤴️ 56
util ⤴️ 49
derive ⤴️ 48
cgi ⤴️ 46
amazonka ⤴️ 45
TypeCompose ⤴️ 44
accelerate ⤴️ 42
PrimitiveArray ⤴️ 35
rank1dynamic ⤴️ 33
distributed-static ⤴️ 31
distributed-process ⤴️ 30
iteratee ⤴️ 29
storablevector ⤴️ 28
sydtest ⤴️ 26
crypto-numbers ⤴️ 25
either-unwrap ⤴️ 25
crypto-pubkey ⤴️ 22
haskelldb ⤴️ 22
wxdirect ⤴️ 22
BiobaseTypes ⤴️ 21
alg ⤴️ 21
amazonka-s3 ⤴️ 21
mmsyn2 ⤴️ 21
polysemy-resume ⤴️ 21
wxc ⤴️ 21
biocore ⤴️ 20
bzlib ⤴️ 20
polysemy-conc ⤴️ 20
wxcore ⤴️ 20
attoparsec-enumerator ⤴️ 19
bytestring-show ⤴️ 19
fay ⤴️ 19
wx ⤴️ 19
BiobaseENA ⤴️ 18
asn1-data ⤴️ 18
dbus-core ⤴️ 18
gtksourceview2 ⤴️ 18
hsc3 ⤴️ 18
polysemy-log ⤴️ 18
ukrainian-phonetics-basic ⤴️ 18
BiobaseXNA ⤴️ 17
HGamer3D-Data ⤴️ 17
certificate ⤴️ 17
clash-prelude ⤴️ 17
clay ⤴️ 17
dbus-client ⤴️ 17

⤴️: 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

@ofborg ofborg bot requested review from expipiplus1 and guibou January 3, 2023 14:35
@ofborg ofborg bot added the 11.by: package-maintainer This PR was created by a maintainer of all the package it changes. label Jan 3, 2023
GHC's js backend depends on systemd via emscripten via closure compiler
via jdk via cups. Before it fails to evaluate, though, since
llvmPackages looks into `targetPackages.stdenv.cc` to determine which
C++ library to use (something that should be rectified in the future).
[Unfortunately], for `pkgsCross.ghcjs`, `stdenv.cc` throws which blows
up evaluating `pkgsCross.buildPackages.llvmPackages.clang`.

This is in principle unnecessary. We want to build
`pkgsCross.ghcjs.buildPackages.haskell.compiler.native-bignum.ghcHEAD`
which depends on `pkgsCross.ghcjs.buildPackages.systemd` which needs
clang and friends only in `nativeBuildInputs`, so
`pkgsCross.ghcjs.buildPackages.buildPackages.llvmPackages.clang`.
Unfortunately, due to the nature of splicing, we first evaluate the
“adjacent” derivation before we can access the spliced derivation we are
actually interested in. If the former
fails (`pkgsCross.ghcjs.buildPackages.llvmPackages.clang`), we can't do
the latter.

The solution is to just not rely on splicing in this case and take
`buildPackages.llvmPackages.clang` directly (relative to
`buildPackages.systemd` in this case!) which avoids the whole problem.

[Unfortunately]: c739c42#diff-3209527bd27cbc775f579b1e295b0264c850859c7245d526965cec456b8c70a4R61
This will be required for the JavaScript backend to work.
For the GHC JavaScript backend, we'll use emscripten in place of
targetCC. To avoid having too much special logic for this, we'll make
the emscripten derivation look like the result of wrapCC as far as GHC
is concerned, i.e. we need targetPrefix and bintools.

For bintools, we'll just reexpose emscripten, as it has emar, the only
relevant bintools. That the other ones are missing doesn't matter in
practice, as the GHC build system won't attempt to use them.

targetPrefix can immediately be (ab)used to make sure GHC will correctly
call emcc etc. instead of plain cc.
gmp is part of buildInputs _and_ depsTargetTarget, so we need to check
the host and target platform to be correct. In practice this doesn't
change much though, as gmp.meta.platforms is _quite_ liberal.
Since #200337 gobject-introspection propagates itself via
depsTargetTargetPropagated, so one doesn't have to add it to every
derivation twice. The problem is that gobject-introspection still is in
a lot of buildInputs and will thus propagate itself again for target,
breaking evaluation unnecessarily if gobject-introspection doesn't
evaluate on whatever the target platform turns out to be.

temurin-bin and openjdk19 caused such a situation via gtk3 which GHC's
JavaScript backend depends on. To fix evaluation of those packages in
pkgsCross.ghcjs.buildPackages, we'll just disable the features pulling
in gtk3 until this is fixed properly.
This is now possible by building a cross compiler for js-unknown-ghjs
using `pkgsCross.ghcjs.buildPackages.haskell.compiler.ghcHEAD`.

To allow this, the following things needed to be done:

* Disable dependencies that wouldn't work:

  - Don't pull in ncurses for terminfo
  - Don't pull in libffi
  - Don't pull in libiconv
  - Don't enable the LLVM backend
  - Enable gmp-less native-bignum backend

* Use emscripten instead of a C compiler. The way this works is inspired
  by emscriptenPackages, but avoids the following flaws:

  - Instead of using a custom configurePhase, just set
    `configureScript = "emconfigure ./configure";` which is much simpler.

  - Create writable EM_CACHE before configuring, as configure scripts
    want to compile test programs.

  Additionally, we need to disable the targetCC check, as it is not
  applicable with emscripten which never appears as part of stdenv.

* Use generic $configureScript in installPhase to be able to work with
  our emconfigure trick.

Note that the corresponding Haskell package set does not work yet. Cabal
doesn't seem to like GHC 9.7 yet and the generic-builder is clueless
about the JS backend.
@sternenseemann
Copy link
Member

@maralorn HLS for 9.4.4 fails to eval.

@Ericson2314 Ericson2314 requested a review from a team as a code owner January 4, 2023 14:12
@github-actions github-actions bot added the 6.topic: systemd Software suite that provides an array of system components for Linux operating systems. label Jan 4, 2023
- Feval
- fez-conf
- ffeed
- fft
Copy link
Member

@SuperSandro2000 SuperSandro2000 May 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure why fft was marked broken, it seems to build fine on hydra https://hydra.nixos.org/job/nixpkgs/trunk/haskellPackages.fft.x86_64-linux

Edit: was looking at the wrong branch https://hydra.nixos.org/job/nixpkgs/haskell-updates/haskellPackages.fft.x86_64-linux

Seems to build on nixos-23.05. Since we need it for a haskell package I am going to create a PR removing this again.

#233884

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

Labels

6.topic: haskell General-purpose, statically typed, purely functional programming language 6.topic: systemd Software suite that provides an array of system components for Linux operating systems. 8.has: package (new) This PR adds a new package 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 2501-5000 This PR causes many rebuilds on Darwin and should 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: 2501-5000 This PR causes many rebuilds on Linux and should target the staging branches. 11.by: package-maintainer This PR was created by a maintainer of all the package it changes.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants