haskell / cabal

Official upstream development repository for Cabal and cabal-install
https://haskell.org/cabal
Other
1.58k stars 685 forks source link

3.12.1.0 — a minor release of Cabal and friends #9885

Open ulysses4ever opened 2 months ago

ulysses4ever commented 2 months ago

The 3.12.1.0 release of Cabal and related packages, including cabal-install, is supposed to follow a (yet to be released) major release of Cabal and Cabal-syntax -- 3.12.0.0. Below is a checklist for the release taken from the wiki page on releasing. /cc @Mikolaj @ffaf1 But first and foremost:

When ticking out the boxes below, please, try to add links to respective PRs.

A.1 Before the release

A.2 After the release

ulysses4ever commented 2 months ago

I added another checkbox in the very beginning: to release 3.12.0.0 because as Mikolaj suggests on Matrix, a lot is blocked on some of it.

ulysses4ever commented 2 months ago

Possible blocker:

ulysses4ever commented 2 months ago

Added a reference to https://github.com/haskell/cabal/issues/9729 by the "Release 3.12.0.0" todo.

ulysses4ever commented 2 months ago

In the issue description above, I added a suggestion to add links to respective PRs when ticking out the checkboxes.

ulysses4ever commented 1 month ago

I added another point that goes before the main list of steps: to check if any more backports are needed for 3.12.1.0.

ulysses4ever commented 1 month ago

Seems like two PR's are worth of backporting:

Mikolaj commented 1 month ago

Sounds good. @ffaf1, @Kleidukos?

phadej commented 1 month ago

Is there an ETA when release will happen? The lack of GHC-9.10 compatible cabal-install is (softly) blocking the work on adding support for GHC-9.10

ulysses4ever commented 1 month ago

There's no ETA that I know of but thank you for signaling this concern: this will help us to prioritize things.

ulysses4ever commented 1 month ago

We are going through backports slowly. As discussed on Matrix, backports will have to be limited to three things: bugfixes, documentation, CI (except bootstrap). Rationale: it's a slow process, and we have a growing demand for a cabal-install that can work with Cabal-3.12.

Bodigrim commented 1 month ago

How is it going? There is always going to be one more backport to do, but are they that critical?

ulysses4ever commented 1 month ago

There were some critical CI fixes that we were backporting over last week. We want to have one last pass over the list of actual bugfixes, and then get to actually do the release. We still don't have a tentative date. All who's in need of a newer cabal-install (e.g. because they use Custom setups), should consider using the prerelease in the meantime: https://discourse.haskell.org/t/ann-cabal-3-12-0-0-released/9504#how-to-get-the-cabal-install-pre-release-3

One issue that we potentially want to be resolved, fixed on master and backported is https://github.com/haskell/cabal/issues/9917 and it's in very early stages...

Bodigrim commented 1 month ago

One issue that we potentially want to be resolved, fixed on master and backported is https://github.com/haskell/cabal/issues/9917 and it's in very early stages...

You might want to change things in future so that it does not happen again in time for GHC 9.12, but #9917 per se would be immediately resolved by releasing cabal-install-3.12.

There were some critical CI fixes that we were backporting over last week.

But CI fixes are not a part of cabal-install package anyway, how do they happen to be critical?

ulysses4ever commented 1 month ago

But CI fixes are not a part of cabal-install package anyway, how do they happen to be critical?

Well we consider green CI a prerequisite for a release.

You might want to change things in future so that it does not happen again in time for GHC 9.12, but https://github.com/haskell/cabal/issues/9917 per se would be immediately resolved by releasing cabal-install-3.12.

We want to change this before 3.12 so that when Cabal-3.14 is release we don'tget into the same trouble.

Bodigrim commented 1 month ago

My opinion that it's important to have a release of cabal-install within a few weeks after a respective GHC release, and delaying it even if for a noble cause does more harm than good to the state of ecosystem. A guidance for timeline would be much appreciated.

Mikolaj commented 1 month ago

@ulysses4ever: How about timeboxing https://github.com/haskell/cabal/issues/9917? Once all other backports are merged, give it 2 more days? (CC @andreasabel)

ulysses4ever commented 1 month ago

Sounds good to me.

andreasabel commented 1 month ago

I do not have time to work on #9917 now, emitting where and how to emit the warning needs more understanding of the code base. I am paid to work on Agda and I need a working Haskell infrastructure, but digging so deep into Cabal is somewhat out of scope. But also, there seems to be no one who is paid to do bugfixing work on Cabal, is that right? From our meetings, I get the impression that all is volunteer work, and @Mikolaj has a part-time job to orchestrate this work...

Mikolaj commented 1 month ago

@andreasabel: I can't speak for others (AFAIK, some other companies are permitting or encouraging their employees to contribute to cabal) but that's about right regarding my humble person and the key point is we crucially depend on contributions from cabal users. But I did not suggest you fix the problem. I CCd you, because you are an interested party and you did cabal a favour by coordinating this particular issue, so you should be aware of the constraints as they emerge. As soon as there's consensus about the issue, maybe we could advertise it to find an implementer?

ulysses4ever commented 1 month ago

Discussion over at https://github.com/benz0li/ghc-musl/issues/8#issuecomment-2134050130 reminded me that it'd be great to update cabal-install so that it builds with GHC 9.10 before the 3.12.1.0 release. So #9914, which is currently stuck with some test failures due to 9.10.

ulysses4ever commented 1 month ago

9914 (support for GHC 9.10) has landed but its backport to 3.12 currently has some test failures:

Mikolaj commented 1 month ago

I've added some more info in the backport, but now somebody has to do the actual work.

ulysses4ever commented 4 weeks ago

We landed CI update for GHC 9.10 on the 3.12 branch (https://github.com/haskell/cabal/pull/10058). The next step is to walk briskly through the remaining backport candidates and start the release process.

ulysses4ever commented 3 weeks ago

I'm done with backports. We'll try to start release-related machinations today.

ulysses4ever commented 3 weeks ago

Turned out I missed several backports. They are now all up, I believe, thanks to Brandon.

We have two issues that may require more work before we proceed:

and one more backport:

adamgundry commented 3 weeks ago

If it's not too late, it would be good to include the one line change in #10093.

ulysses4ever commented 3 weeks ago

@adamgundry yes, we should be able to do it since we're still waiting on a couple more things. Thank you for the heads-up.

ulidtko commented 2 weeks ago

Hi @ulysses4ever, kindly reconsider #9917 for 3.12.1.0.

It is wrecking thick havoc onto custom-setup packages with GHC 9.10.

custom-setup
  setup-depends: base,      Cabal  < 3.13

:point_down: :point_down: :point_down:

[__2] rejecting: simple-example:setup.Cabal-3.12.0.0/installed-be90
(constraint from maximum version of Cabal used by Setup.hs requires <3.12)

In effect, cabal just unconditionally overrides bounds set by user explicitly in .cabal.


Additionally, getting cabal-install 3.12 released would be great.

Mikolaj commented 2 weeks ago

@ulidtko: hi! I'm afraid the ticket you linked is an issue, not a (doubly reviewed) PR. As such, it can't be considered by the release manager. On the bright side, we do plan to release cabal-install as part of 3.12.1.0, which should fix your problem for the time being, if I understand anything from that ticket. If you have some spare time, any help with the release tasks, or any other cabal contributions, would be very welcome.

ulysses4ever commented 2 weeks ago

There are two sticky points that I can see now:

I propose to pass on both of these for the release and get them for a future point release, hopefully.

One thing that we probably want to get in before proceeding:

ulysses4ever commented 2 weeks ago

Changelogs PR: https://github.com/haskell/cabal/pull/10124 (second step in the release process, see the whole list of steps in the OP).

geekosaur commented 1 week ago

Does anything remain to be done on the hackage-security side? Its GitHub repo is already updated, but I don't think it's on Hackage yet.

ffaf1 commented 1 week ago

Does anything remain to be done on the hackage-security side? Its GitHub repo is already updated, but I don't think it's on Hackage yet.

Does bootstrapping work?

geekosaur commented 1 week ago

No, but not for that reason.

hilfy «cabal*version-bumps-3.12.1.0» Z$ make bootstrap-jsons
cabal build --project-file=cabal.bootstrap.project --with-compiler=ghc-9.0.2 --dry-run cabal-install:exe:cabal
Warning: Requested index-state 2024-06-17T00:00:01Z is newer than
'hackage.haskell.org'! Falling back to older state (2024-06-16T21:13:16Z).
Resolving dependencies...
Error: cabal: Could not resolve dependencies:
[__0] trying: Cabal-3.12.1.0 (user goal)
[__1] next goal: Cabal-hooks (user goal)
[__1] rejecting: Cabal-hooks-0.1 (conflict: Cabal==3.12.1.0, Cabal-hooks =>
Cabal>=3.13 && <3.15)
[__1] fail (backjumping, conflict set: Cabal, Cabal-hooks)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: Cabal, Cabal-hooks

make: *** [Makefile:232: bootstrap-json-9.0.2] Error 1
zsh: exit 2     make bootstrap-jsons

Looks like we have a leak from master? Cabal-hooks isn't supposed to be in 3.12, AIUI.

Also, what's with the index-state warning?

Downloading the latest package list from hackage.haskell.org
Package list of hackage.haskell.org has been updated.
The index-state is set to 2024-06-20T22:19:34Z.
To revert to previous state run:
    cabal v2-update 'hackage.haskell.org,2024-06-13T13:22:25Z'

Looks newer than the requested index-state to me…. (ETA: forgot to switch back from cabal 3.10.3.0, and doesn't happen with my 3.12 build)

geekosaur commented 1 week ago

FWIW, git history is a bit difficult because the file was renamed, but it does indeed look like either the rename (which is faked by git, and determined post hoc by heuristics) or backporting #9565 inadvertently brought in Cabal-hooks.

jasagredo commented 1 week ago
Warning: Requested index-state 2024-06-17T00:00:01Z is newer than
'hackage.haskell.org'! Falling back to older state (2024-06-16T21:13:16Z).

This should not show up in latest cabal, it was demoted to a warning (and reworded unless I am misremembering). https://github.com/haskell/cabal/pull/8944

geekosaur commented 1 week ago

Bootstrap jobs seem to be passing with updated bootstrap JSONs.

ulysses4ever commented 1 week ago

We're moving to the next step on the list — uploading release candidates.

Mikolaj commented 1 week ago

This should not show up in latest cabal, it was demoted to a warning (and reworded unless I am misremembering). #8944

Is this point cleared up? If so, in which PR?

ulysses4ever commented 1 week ago

@jasagredo what do you mean by "latest cabal"? None of the recent changes around index state have been released, I think. Do you mean master? @geekosaur which version of cabal did you use when you got that message?

geekosaur commented 1 week ago

3.10.3.0, because I'd forgotten to switch back after probing a different issue. When I switched to my usual cabal (dogfooding HEAD of 3.12 branch as of a couple days prior) it went away.

ulysses4ever commented 1 week ago

Good, thank you. We can proceed then.

geekosaur commented 1 week ago

FTR we're currently blocked on #10136 which is breaking CI. (ETA: merged and backported, we can proceed.)

ulysses4ever commented 1 week ago

We're done with the candidates:

We're about to move on to the next step -- creating binaries and uploading the artifacts (binaries and tarballs) to the website. (As a part of this step, we'll push the git tags.) But before going there we need to merge one last fix for how we create the release:

ulysses4ever commented 1 week ago

Tags are up (as a part of the artifacts step), and they point at the same commit as usual:

ulysses4ever commented 1 week ago

The release artifacts have been uploaded to https://downloads.haskell.org/~cabal/cabal-install-latest/ It's not an official announcement yet (see the checklist in the OP) but if all goes well, that should be final artifacts.

ulysses4ever commented 4 days ago

Hackage released is up. Announcement on Discourse: https://discourse.haskell.org/t/cabal-install-3-12-1-0-and-accompanying-libraries-released/