wiki:MakingReleases

Version 19 (modified by igloo, 15 months 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 configure.ac 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/build.mk <<EOF
V=1
HADDOCK_DOCS=YES
LATEX_DOCS=YES
HSCOLOUR_SRCS=YES
BUILD_DOCBOOK_HTML=YES
BUILD_DOCBOOK_PDF=YES
BUILD_DOCBOOK_PS=YES
EOF

If on Linux:

$ echo "BeConservative=YES" >> mk/build.mk

Then:

$ ./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

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

Sanity check http://www.haskell.org/ghc/docs/<<VERSION>>/. In particular, check that the libraries docs include both Win32 and unix.

Prepare the webpage

In the http://www.haskell.org/ghc darcs repository, create a download_ghc_<<MANGLED_VERSION>>.shtml page based on the previous one.

Sanity check http://www.haskell.org/ghc/download_ghc_<<MANGLED_VERSION>>. In particular, check that the release notes and documentation links work.

Upload the binaries

scp -r 7.6.2 haskell.org:/srv/web/haskell.org/ghc/dist/

Sanity check that the download links work.

Announcing

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

Update "Latest News" in index.shtml.

haskell.org$ ~/mk-latest-links
haskell.org$ ~/mk-latest-links | sh

Mail ANNOUNCE to glasgow-haskell-users@haskell.org, haskell@haskell.org, 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 uploadad) 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