release revision d5a0b9c15c0a81a982fd7375a195f368c30a47b9
2N/AaCopyright (C) 2000, 2001 Internet Software Consortium.
2N/ASee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
2N/A
2N/A$Id: release,v 1.51 2001/11/25 01:56:01 gson Exp $
2N/A
2N/APreparing a bind9 release
2N/A
2N/AHere's a rough outline of the steps to follow in preparing a new bind9
2N/Arelease.
2N/A
2N/A - Update the README file
2N/A
2N/A - Send the new README file to webteam@nominum.com at least 48
2N/A hours prior to the planned release and ask them to prepare
2N/A the web pages for the new version. If there have been only
2N/A minor changes, send context diffs relative to the previous
2N/A release instead.
2N/A
2N/A - Do a "cvs update" to check that all changes have been committed.
2N/A
2N/A - Verify that the file "version" contains the correct version
2N/A number (it should have been incremented after the
2N/A previous release)
2N/A
2N/A - Before creating a new release branch, update the lib/*/api files
2N/A as needed. See the libtool info file for information about what
2N/A the various numbers mean.
2N/A
2N/A - If building from a release branch, check that any important
2N/A bug fixes made on the mainline since the last release have
2N/A been pulled up. You can do this by comparing the CHANGES
2N/A files using the util/check-pullups.pl script. For example,
2N/A running the script from a mainline tree:
2N/A
2N/A perl util/check-pullups.pl CHANGES ../9.2/CHANGES
2N/A
2N/A This will list all bug fixes on the mainline that are not
2N/A on the 9.2 release branch.
2N/A
2N/A - Check that http://status.isc.org/bind9/bind9.html
2N/A shows a clean build and test status for all supported
2N/A systems and that the tests are actually being run on the
2N/A version being released (the version can be found in the
2N/A page behind the "Source tar build" link).
2N/A
2N/A - Check that running "make all_tests" in bin/tests does not
2N/A produce compile errors.
2N/A
2N/A - Regenerate the documentation by running "make man" (mainline/9.2)
2N/A or by running genhtml.sh in doc/arm (9.1 release branch)
2N/A and commit it. Note that not all machines have the
2N/A necessary XML tools, but at least trebuchet, cuba,
2N/A and Scanner's machine do. Commit any files that were
2N/A regenerated.
2N/A
2N/A - Verify that the documents in doc/misc are up-to-date.
2N/A
2N/A - Update the copyrights. According to tale:
2N/A
2N/A Go to the root of the source tree.
2N/A The scripts need to be run from there; they reference the util
2N/A subdirectory internally.
2N/A
2N/A $ make distclean
2N/A ... [I prefer to check out a fresh source tree --gson]
2N/A $ perl util/merge_copyrights
2N/A $ diff util/copyrights util/newcopyrights
2N/A ... examine output, particularly any files with the "?" type, and
2N/A ... then edit util/newcopyrights if necessary
2N/A $ mv util/newcopyrights util/copyrights
2N/A $ cvs ci -m'merge_copyrights' util/copyrights
2N/A $ perl util/update_copyrights < util/copyrights
2N/A $ cvs diff
2N/A ... examine output, edit as necessary. mail me about anything that
2N/A ... the script should have been able to do itself. :-)
2N/A $ cvs ci -m'update_copyrights'
2N/A
2N/A - Announce a CVS freeze if doing an alpha or beta release from
2N/A the mainline, or stop doing pullups if building from a release branch.
2N/A
2N/A - Run util/altbuild.sh. This is to make sure that
2N/A builds using libtool, separate source/object directories, and other
2N/A obscure build options work. This script may need some hacking if run
2N/A on anything other than NetBSD. Save the output (it's big) and look
2N/A for error and warning messages.
2N/A
2N/A cd $top_of_mainline_tree
2N/A sh util/altbuild.sh v9_0
2N/A
2N/A or
2N/A
2N/A cd $top_of_9_1_tree
2N/A sh util/altbuild.sh v9_1
2N/A
2N/A Alteratively, you can do this after building the kit, by giving
2N/A the kit .tar.gz file as an argument to altbuild.sh instad of
2N/A the CVS tag.
2N/A
2N/A - If you can (= your system is similar enough to the one Tale is using),
2N/A check the header files for cruft by running the command
2N/A [ This step is quite imperfect and should probably be skipped
2N/A for now -- Tale ]
2N/A
2N/A find lib -name '*.h' -print | xargs perl util/check-includes.pl
2N/A
2N/A - Ensure that the JPNIC patch applies cleanly:
2N/A
2N/A If you don't have the "iconv" library, you need to get it from
2N/A http://clisp.cons.org/~haible/packages-libiconv.html and install it.
2N/A
2N/A $ sh util/sanitize_all.sh
2N/A $ patch -p0 < contrib/idn/mdnkit/patch/bind9/patch.most > patch.out 2>&1
2N/A $ egrep Hunk patch.out
2N/A
2N/A All hunks should have applied successfully with no offset or fuzz.
2N/A If all succeeded but some were offset or had fuzz, the patch will be
2N/A regenerated at the end of this stage.
2N/A
2N/A $ cd contrib/idn/mdnkit
2N/A [ Sample on netbsd ... ]
2N/A $ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
2N/A $ make
2N/A $ cd ../../.. ; : cd back to top level
2N/A $ cp configure configure.orig
2N/A $ autoconf
2N/A $ ./configure
2N/A
2N/A $ make
2N/A ... should cleanly compile
2N/A $ make distclean
2N/A $ rm -rf /tmp/mdn
2N/A $ mkdir -p /tmp/mdn/{lib,include}
2N/A $ mdn=`pwd`/contrib/idn/mdnkit
2N/A $ cp $mdn/lib/.libs/libmdn.so /tmp/mdn/lib
2N/A $ cp -r $mdn/include/mdn /tmp/mdn/include
2N/A $ ./configure --with-mdn=/tmp/mdn --with-iconv="-L/usr/local/lib -liconv"
2N/A $ LD_LIBRARY_PATH=/usr/local/lib:/tmp/mdn/lib:/usr/lib make
2N/A ... should cleanly compile
2N/A
2N/A [ Some tests will be added to bin/tests/system to validate operation. ]
2N/A
2N/A Generate a fresh copy of the diffs:
2N/A
2N/A $ patchd=$mdn/patch/bind9
2N/A $ awk '/^\+\+\+ / {print $2}' $patchd/patch.most |
2N/A while read i; do
diff -u2 $i.orig $i
done > $patchd/patch.most.new
$ cvs diff -u2 configure > $patchd/patch.configure
$ mv $patchd/patch.most.new $patchd
$ cvs ci -ko $patchd/patch.*
- Add a marker line like " --- 9.0.0rc10 released ---"
to the CHANGES file.
- Tag the CVS source tree with the final tag, as in
"cvs rtag v9_0_0rc1 bind9" (mainline) or
"cvs rtag -r v9_2 v9_2_0rc10 bind9" (release branch).
- Build the release kit. This procedure differs
between the 9.0 release branch and later versions.
On the 9.0 release branch,
cd <temporary directory>
cvs export -r v9_0_0rc10 bind9
cd bind9
sh configure
make kit
On the 9.[1-2] release branch or mainline, use the
"util/kit.sh" script.
- Build bind9 from the kit on ns-ext (phred)
and ns-int (rc), install it, and let it run for
a day keeping an eye on it for any problems.
- If you can, try resolving some IPv6 addresses and
doing queries over IPv6.
- If problems are found at this stage, fix them, move the
release tag up using "rtag -F", and respin the kit.
- Sign the distribution files with the ISC signing PGP key
and fix the permissions on the signature file:
ver=9.2.0rc10
pgp -sba bind-$ver.tar.gz -u 0x51BAB2ED
chmod 644 bind-$ver.tar.gz.asc
- Verify the PGP signature:
pgp bind-$ver.tar.gz.asc bind-$ver.tar.gz
(Look for the words "Good signature" in the output.)
- If there is a companion binary kit for NT, sign it and verify the
signature:
scp rc.isc.org:/udir/mayer/BIND$ver.zip .
pgp -sba BIND$ver.zip -u 0x51BAB2ED
chmod 644 BIND$ver.zip.asc
pgp BIND$ver.zip.asc BIND$ver.zip
- Prepare a release announcement based on the previous one.
- Copy the distribution and PGP signature files to the FTP site:
ssh -n isrv4.pa.vix.com "mkdir /udir/ftp/isc/bind9/$ver"
scp bind-$ver.tar.gz bind-$ver.tar.gz.asc \
isrv4.pa.vix.com:/udir/ftp/isc/bind9/$ver
- If there is a companion binary kit for NT, copy it, too:
ssh -n isrv4.pa.vix.com "mkdir /udir/ftp/isc/bind/contrib/ntbind-$ver"
scp BIND$ver.zip BIND$ver.zip.asc \
isrv4.pa.vix.com:/udir/ftp/isc/bind/contrib/ntbind-$ver
- Download using FTP (or a web browser) using the URLs in the release
announcement and verify the PGP signature again
- Ask webteam@nominum.com to publish the updated web pages
- When the web pages are up, announce the release on
bind-announce@isc.org
- Increment the version in the file "version"
- Resume doing pullups