Skip to content
Johan Tibell edited this page Mar 16, 2015 · 20 revisions

Pre-work

You will need to to

  • have SSH access to haskell.org,
  • be in the cabal group on that server, and
  • be listed of the Cabal and cabal-install packages on Hackage.
# Check out the major branch you're making a release based on (you might need -b if it doesn't exist).
git checkout X.YY

# Make sure you have all the changes.
git pull

# Repeat for every commit in master that should be part of this release.
git cherry-pick -x <commit on master>

Make a release of Cabal, the library

# The version you're releasing.
export VERSION=X.YY.M.P

# Check what's new since the previous release of Cabal.
git log Cabal-v<previous release>.. -- Cabal/

# Update the changelog by summarizing the above commit log (feel free to editorialize).
cd Cabal
$EDITOR changelog

# Bump the version number (depending on if this is a major, minor, or patch release).
$EDITOR Cabal.cabal
$EDITOR Makefile

# Commit the changes.
git commit -am "Bump Cabal version number to v$(VERSION)"

# Make sure that the library builds and that the tests pass.
cabal clean && cabal test

# Push to the build bot (https://travis-ci.org/haskell/cabal) and wait for the results.
# This exercises additional GHC versions.
git push

# Update the Makefile for the release (KIND=cabal-latest, SSH_USER=<you>).
# These changes shouldn't be committed and can be reverted once the release is done.
$EDITOR Makefile

# Make the release (includes uploading the tarball to haskell.org/cabal).
make release

# Upload the tarball to Hackage as well.
cabal upload dist/Cabal-$(VERSION).tar.gz

# Tag the release.
git tag Cabal-v$(VERSION)
git push && git push --tags

# Update the website. Change the links in download.html to point to the latest release.
ssh haskell.org
$EDITOR /home/web/haskell.org/cabal/download.html

Make a release of cabal-install, the executable

Clone this wiki locally