Why were thousands of Hackage packages marked as broken?

I noticed today that nixpkgs commit 44afe302454b4699ac056d7e68b861c6656fea43 from August 11 marked thousands of Hackage-based packages—maybe all of them?—as broken, i.e., it added the lines

hydraPlatforms = stdenv.lib.platforms.none;
broken = true;

Does anyone know why this was done? Is there anything I can do, as the maintainer of a derivation that is just a thin wrapper around one of these packages, to un-break it?

Best to ping @peti, even in case he does not know.

At that time we switched from LTS Haskell 13.x to 14.x. The update brought many new major versions of central libraries, so I expected a bit of a shake up in what builds and what does not. On those occasions, I mark ALL packages as unbroken and let Hydra build them (see hackage-packages.nix: automatic Haskell package set update · NixOS/nixpkgs@c4cfd75 · GitHub) . Then I mark those as broken again that fail the build test. The commit you pointed out is the second part of that process.

The first commit unmarked 7,457 broken packages. The second one marked 7,739 builds as broken again. So the net change is actually pretty small.


OK, thanks for the explanation. Can you tell me how I can find the Hydra logs for a particular Hackage package so that I can see exactly what failed?

I just scrolled through the list of hydra builds for master until I found one with the correct date that added a ton of newly failed jobs: https://hydra.nixos.org/eval/1534191

Nevermind. I finally found the job that contained the commit and it also contained the subsequent commit that marked packages as broken again. This is because both commits were part of PR #66468 but I’m not sure how to find the hydra jobs from that PR. It was force-pushed at some point and there’s no status check information on it. My guess is even if it still had that info, Hydra probably doesn’t save logs from PR evaluations for very long.

Your best bet is to just rebuild it yourself using NIXPKGS_ALLOW_BROKEN=1.

Go to Hydra - Jobset nixpkgs:haskell-updates and use the search field to find the package you’re interested in.

1 Like

Thank you both for the replies. It looks like my package broke for the reason you’d expect during an LTS upgrade: it wants older versions of its dependencies than are available in the snapshot. I know how to fix that, though :smiley:

@peti I fixed my application’s build by publishing a new version to Hackage, and that version is now shown in the hackage-packages.nix in the Nixpkgs master branch. The package is still marked as broken, but I’ve verified that it does build correctly on macOS and on Linux. Should I open a PR that marks the package as not broken? Should that PR target the master or haskell-updates branch of Nixpkgs?

1 Like

Should I open a PR that marks the package as not broken?

Yes, please.

Should that PR target the master or haskell-updates branch of Nixpkgs?

haskell-updates, please. Check out How to Fix Broken Haskell Packages in Nix - YouTube for further details.