Version 22 (modified by igloo, 3 years ago) (diff)


Making Releases

Making the source tarball

The source tarball includes some generated files, such as Parser.hs (generated from Parser.y.pp). We therefore need to do a build before generating the source tarball.

First check out the branch, and ensure that the version number and RELEASE near the top of are correct. Then:

$ perl boot
$ ./configure
$ make
$ make sdist

It is advisable to use a machine with as recent an autoreconf as possible; in particular, 2.61 is known to make a configure script that doesn't work on Windows.

You should now have source tarballs sdistprep/ghc-<VERSION>-src.tar.bz2 and sdistprep/ghc-<VERSION>-testsuite.tar.bz2.

Making the binary builds

Untar the src tarball. Then:

$ cat > mk/ <<EOF

If on Linux:

$ echo "BeConservative=YES" >> mk/


$ ./configure      2>&1 | tee ../conf.log
$ make             2>&1 | tee ../make.log
$ make binary-dist 2>&1 | tee ../bd.log

Sanity checking the binary builds

The compare tool compares the tarballs of different releases, and warns about possible problems:

$ cd <</path/to/ghc/tree>>/distrib/compare
$ make
$ <</path/to/ghc/tree>>/distrib/compare/compare <<previous_release_files>> <<this_release_files>>

Check that the build can build the release

Install the release, set your $PATH, then just untar and:

$ ./configure
$ make

Create and upload the library documentation$ mkdir /srv/web/<<VERSION>>
$ <</path/to/ghc/tree>>/distrib/mkDocs/mkDocs ghc-*-x86_64-unknown-linux.tar.bz2 ghc-*-i386-unknown-mingw32.tar.bz2
$ cd docs
$ scp *<<VERSION>>$ cd /srv/web/<<VERSION>>$ mkdir html$ cd html$ mv ../index.html .$ for i in ../*.tar.bz2; do tar -jxf $i; done

Sanity check<<VERSION>>/. In particular, check that the libraries docs include both Win32 and unix.

Prepare the webpage

In the darcs repository, create a download_ghc_<<MANGLED_VERSION>>.shtml page based on the previous one.

Sanity check<<MANGLED_VERSION>>. In particular, check that the release notes and documentation links work.

Upload the binaries

scp -r 7.6.2

Sanity check that the download links work.


Add the release to "Versions" in the trac admin section, and make it the default version.

Update "Current Stable Release" in download.shtml, and move the previous release down to "Older Releases".

Update "Latest News" in index.shtml.$ ~/mk-latest-links$ ~/mk-latest-links | sh

Mail ANNOUNCE to [email protected], [email protected], subject ANNOUNCE: GHC version <<VERSION>>.

Tagging repositories

Set RELEASE back to NO and commit.

./sync-all tag ghc-7.6.2-release

Also git tag <<LIBRARY>>-<<VERSION>>-release libraries that we maintain (other than ghc-prim).

./sync-all push --tags

Uploading libraries

If any library that we maintain (other than bin-package-db, ghc-prim, integer-gmp and integer-simple which don't get uploaded) has been changed, then the new version should be uploaded to hackage.

For example, for base, in a built tree:

make sdist_base
cabal upload libraries/base/dist-install/*.tar.gz