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