Version 20 (modified by igloo, 6 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.


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,, 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 and ghc-prim, 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

Attachments (1)

Download all attachments as: .zip