···
the Nixpkgs `master` branch.
We do this by periodically merging an updated set of Haskell packages on the
-
`haskell-updates` branch into the `master` branch. Each member of the team
takes a two week period where they are in charge of merging the
-
`haskell-updates` branch into `master`. This is the documentation for this
The workflow generally proceeds in three main steps:
1. create the initial `haskell-updates` PR, and update Stackage and Hackage snapshots
1. wait for contributors to fix newly broken Haskell packages
-
1. merge `haskell-updates` into `master`
Each of these steps is described in a separate section.
There is a script that automates the workflow for merging the currently open
-
`haskell-updates` PR into `master` and opening the next PR. It is described
at the end of this document.
## Initial `haskell-updates` PR
-
In this section we create the PR for merging `haskell-updates` into `master`.
-
1. Make sure the `haskell-updates` branch is up-to-date with `master`.
1. Update the Stackage Nightly resolver used by Nixpkgs and create a commit:
···
1. Push these commits to the `haskell-updates` branch of the NixOS/nixpkgs repository.
-
1. Open a PR on Nixpkgs for merging `haskell-updates` into `master`. The recommended
PR title and body text are described in the `merge-and-open-pr.sh` section.
## Notify Maintainers and Fix Broken Packages
···
Maintainers should be given at least 7 days to fix up their packages when they
break. If maintainers don't fix up their packages within 7 days, then they
-
may be marked broken before merging `haskell-updates` into `master`.
···
- All updated files will be committed.
-
## Merge `haskell-updates` into `master`
Now it is time to merge the `haskell-updates` PR you opened above.
···
have been pinged on GitHub and given at least a week to fix their packages.
This is especially important for widely-used packages like `cachix`.
-
- Make sure you first merge the `master` branch into `haskell-updates`. Wait
-
for Hydra to evaluate the new `haskell-updates` jobset. Make sure you only
-
merge `haskell-updates` into `master` when there are no evaluation errors.
-
- Due to Hydra having only a small number of Darwin build machines, the
-
`haskell-updates` jobset on Hydra often has many queued Darwin jobs.
-
In order to not have these queued Darwin jobs prevent the `haskell-updates`
-
branch from being merged to `master` in a timely manner, we have special
-
- It is alright to merge the `haskell-updates` branch to `master` if
-
there are remaining queued Darwin jobs on Hydra.
-
- We would like to keep GHC and the `mergeable` job building on Darwin.
-
Do not merge the `haskell-updates` branch to `master` if GHC is failing
-
to build, or the `mergeable` job has failing Darwin constituent jobs.
-
If GHC and the `mergeable` job are not failing, but merely queued,
-
it is alright to merge the `haskell-updates` branch to `master`.
-
- We do not need to keep the `maintained` job building on Darwin.
-
If `maintained` packages are failing on Darwin, it is helpful to
-
mark them as broken on that platform.
## Script for Merging `haskell-updates` and Opening a New PR
···
$ ./maintainers/scripts/haskell/mark-broken.sh --do-commit
-
1. Merge `master` into `haskell-updates` and make sure to push to the
-
`haskell-updates` branch. (This can be skipped if `master` has recently
-
been merged into `haskell-updates`.)
1. Go to https://hydra.nixos.org/jobset/nixpkgs/haskell-updates and force an
evaluation of the `haskell-updates` jobset. See one of the following
sections for how to do this. Make sure there are no evaluation errors. If
···
## Update Hackage Version Information
-
After merging into `master` you can update what Hackage displays as the current
version in NixOS for every individual package. To do this you run
-
`maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh`. See the
-
script for how to provide credentials. Once you have configured credentials,
-
running this takes only a few seconds.