Hi Guixers,

A while back, I proposed splitting the nss package into two, one for the ESR, and one for the rapid release. Because LibreWolf tracks the Firefox Rapid Release channel, it needs a newer nss than what Guix has fairly frequently, around 2-3 times a year. However, the nss package is low in the graph, and upgrading it triggers ~15k rebuilds. Splitting this into an infrequently-updated package tracking ESR, which most things can use, and a separate package tracking the rapid release channel, which LibreWolf (and anything else needing a newer version) can use is IMO a reasonable way to balance browser security updates vs. frequent huge rebuilds. I added the nss-rapid package to unblock LibreWolf, with the intent that when the next nss ESR happened, the nss package would get updated (and ungrafted). That release happened a while back, and #73152 has patches to fully implement the split and update nss to the latest ESR.

The standard Guix process for updating packages low in the graph are to push to a branch, let QA build substitutes, then merge[1]. Unfortunately, QA is extremely bogged down, which means this is effectively impossible, because by the time it builds the branch -- if it ever does -- so much has changed in master that the work likely needs a rebase, starting the whole process over again.

What are the options for large updates like this? Thinking it through, there seem to be three paths, in rough order of best to worst:

1. Fix QA. I don’t know what’s wrong, or have a sense of what it would take to fix. A one-week freeze on commits to let it catch up? Moving to faster hardware so it can keep up with the pace of development? Fixing QA seems like the best option, but also the least clear and most difficult.

2. Push to a nss-updates branch and have Cuirass on ci.guix.gnu.org do the builds, then merge. I’m not sure what’s involved in doing this, likely someone would need to add a specification to Cuirass for it to work.

3. Push to core-packages-team. Since this is already building in CI and nss is arguably a core package, this makes sense to me. The downside is that it’s not clear how long it’ll be until that merges, and if we’re in another situation where LibreWolf has a security update that requires a NSS update, will cause conflicts. It also looks like the core-packages-team branch has been broken since 23 Jan[2], which presents further difficulties.

4. Merge to master and break substitutes for a few days.

Any other options I haven’t considered?

Thanks,

 -- Ian


[1]: See `(guix) Managing Patches and Branches'.
[2]: https://ci.guix.gnu.org/jobset/core-packages-team

Reply via email to