about summary refs log tree commit diff
path: root/nixos/doc/manual/release-notes/rl-2211.section.md
diff options
context:
space:
mode:
authorGuillaume Bouchard <guillaum.bouchard@gmail.com>2022-10-06 15:38:12 +0200
committersternenseemann <sternenseemann@systemli.org>2022-11-26 19:00:56 +0100
commitd1b6d2d0ab89b4a5e58d0020500445b0c9c73a4e (patch)
treed9f19a84e9440c3551277bcae1ced965b1c53c96 /nixos/doc/manual/release-notes/rl-2211.section.md
parent81df6d7ff3995280326321cde38d5ca622ed1092 (diff)
haskellPackages.callHackage: updating all-cabal-hashes do not invalidate callHackage
Packages built with `haskellPackages.callHackage` won't be rebuilt when
updating `all-cabal-hashes`.

The removed comment was keeping a reference to the `cabal2nix` call,
which itself depends on `all-cabal-hashes`, in order to keep this file
during a garbage collection.

The tradeoff is between:

- The current behavior: a mass rebuild, any change of `all-cabal-hashes`
  triggers a rebuild of all the packages built with `callHackage` and
  packages which depend on them. This can take hours, and may happen
  after a "small" unrelated change (i.e. an user is bumping
  `all-cabal-hashes` in order to use a new package from hackage). It
  also have global impacts in a project (long rebuild in CI, new entries
  in cache, developers need to fetch the new entries, ...). In this
  context, `cabal2nix` entries are not garbage collected.
- The new behavior: No mass rebuild, but `cabal2nix` derivations need to
  be recomputed after a garbage collection. This is usually fast (a few
  seconds by call), linear with the number of calls and should not
  happen a lot (i.e. users are not garbage collecting everyday).

See https://github.com/NixOS/nixpkgs/issues/194751 for details.
Diffstat (limited to 'nixos/doc/manual/release-notes/rl-2211.section.md')
-rw-r--r--nixos/doc/manual/release-notes/rl-2211.section.md4
1 files changed, 4 insertions, 0 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index 72d16c4771a3b..071351939f659 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -529,4 +529,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
 
 - The option `services.picom.experimentalBackends` was removed since it is now the default and the option will cause `picom` to quit instead.
 
+- `haskellPackage.callHackage` is not always invalidated if `all-cabal-hashes` changes, leading to less rebuilds of haskell dependencies.
+
+- `haskellPackages.callHackage` and `haskellPackages.callCabal2nix` (and related functions) no longer keep a reference to the `cabal2nix` call used to generate them. As a result, they will be garbage collected more often.
+
 <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->