forked from haskell/cabal
-
Notifications
You must be signed in to change notification settings - Fork 0
Making a release
Johan Tibell edited this page Mar 16, 2015
·
20 revisions
You will need to to
- have SSH access to haskell.org (ask admin@haskell.org),
- be in the cabal group on that server (ask admin@haskell.org), and
- be listed as a maintainer of the Cabal and cabal-install packages on Hackage (ask one of the existing maintainers).
# 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># 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 sandbox init
cabal clean
cabal install --enable-tests --only-dependencies
cabal configure --enable-tests
cabal build
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.htmlMake sure the corresponding Cabal library version (e.g. the one you built above) is installed before you start.
# The version you're releasing.
export VERSION=X.YY.M.P
# Check what's new since the previous release of Cabal.
git log cabal-install-v<previous release>.. -- cabal-install/
# Update the changelog by summarizing the above commit log (feel free to editorialize).
cd cabal-install
$EDITOR changelog
# Bump the version number (depending on if this is a major, minor, or patch release).
# You might need to bump the dependency on Cabal as well, if this cabal-install release
# should accompany a new major Cabal release.
$EDITOR cabal-install.cabal
$EDITOR bootstrap.sh
# Commit the changes.
git commit -am "Bump cabal-install version number to v$(VERSION)"
# Make sure that the executable builds.
cabal sandbox init
#cabal sandbox add-source ../Cabal # If you're building against in-tree Cabal
cabal clean
cabal install --only-dependencies
cabal configure
cabal build
# Make sure bootstrapping works.
cabal sdist
cp dist/cabal-install-$(VERSION).tar.gz /tmp
pushd /tmp
tar zxf cabal-install-$(VERSION).tar.gz
cd cabal-install-$(VERSION)
sh bootstrap.sh
popd
# Push to the build bot (https://travis-ci.org/haskell/cabal) and wait for the results.
# This exercises additional GHC versions.
git push
# Upload to Hackage.
cabal upload dist/cabal-install-$(VERSION).tar.gz
# Tag the release.
git tag cabal-install-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
export VERSION=X.YY.M.P
mkdir /home/web/haskell.org/cabal/release/cabal-install-$(VERSION)
wget -P /home/web/haskell.org/cabal/release/cabal-install-$(VERSION) \
http://hackage.haskell.org/package/cabal-install-$(VERSION)/cabal-install-$(VERSION).tar.gz
$EDITOR /home/web/haskell.org/cabal/download.html