release revision 5d2568aa9d3218e32bcbe795473e6d2d710a4ab6
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonCopyright (C) 2004, 2005 Internet Systems Consortium, Inc. ("ISC")
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox UserCopyright (C) 2000-2003 Internet Software Consortium.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User$Id: release,v 1.66 2005/10/12 01:33:01 marka Exp $
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonPreparing a bind9 release
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHere's a rough outline of the steps to follow in preparing a new bind9
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Update the README file
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Send the new README file to webteam@nominum.com at least 48
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User hours prior to the planned release and ask them to prepare
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the web pages for the new version. If there have been only
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein minor changes, send context diffs relative to the previous
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User release instead.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Do a "cvs update" to check that all changes have been committed.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Verify that the file "version" contains the correct version
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein number (it should have been incremented after the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User previous release)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - If building from a release branch, check that any important
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bug fixes made on the mainline since the last release have
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein been pulled up. You can do this by comparing the CHANGES
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User files using the util/check-pullups.pl script. For example,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein running the script from a mainline tree:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein perl util/check-pullups.pl CHANGES ../9.2/CHANGES ../9.2/EXCLUDED
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein This will list all bug fixes on the mainline that are not
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein on the 9.2 release branch.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User - Before creating a new release branch, update the lib/*/api files
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein as needed. See the libtool info file for information about what
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the various numbers mean.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User - Check that http://status.isc.org/bind9/bind9.html
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein shows a clean build and test status for all supported
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein systems and that the tests are actually being run on the
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User version being released (the version can be found in the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User page behind the "Source tar build" link).
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Check that running "make all_tests" in bin/tests does not
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein produce compile errors.
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews - Regenerate the documentation by running "make man" (mainline/9.2)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User or by running genhtml.sh in doc/arm (9.1 release branch)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User and commit it. Note that not all machines have the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein necessary XML tools, but at least trebuchet, cuba,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and Scanner's machine do. Commit any files that were
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein regenerated.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User - Verify that the documents in doc/misc are up-to-date.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Update the copyrights. According to tale:
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User Go to the root of the source tree.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The scripts need to be run from there; they reference the util
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein subdirectory internally.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ make distclean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ... [I prefer to check out a fresh source tree --gson]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User ... examine output, particularly any files with the "?" type, and
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews ... then edit util/newcopyrights if necessary
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ cvs ci -m'merge_copyrights' util/copyrights
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ... examine output, edit as necessary. mail me about anything that
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ... the script should have been able to do itself. :-)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User $ cvs ci -m'update_copyrights'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Announce a CVS freeze if doing an alpha or beta release from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the mainline, or stop doing pullups if building from a release branch.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Run util/altbuild.sh. This is to make sure that
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein builds using libtool, separate source/object directories, and other
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein obscure build options work. This script may need some hacking if run
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User on anything other than NetBSD. Save the output (it's big) and look
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for error and warning messages.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User cd $top_of_mainline_tree
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein cd $top_of_9_1_tree
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Alteratively, you can do this after building the kit, by giving
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the kit .tar.gz file as an argument to altbuild.sh instad of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - If you can (= your system is similar enough to the one Tale is using),
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User check the header files for cruft by running the command
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User [ This step is quite imperfect and should probably be skipped
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for now -- Tale ]
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein find lib -name '*.h' -print | xargs perl util/check-includes.pl
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User - Ensure that the JPNIC patch applies cleanly (9.2 and 9.3):
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If you don't have the "iconv" library, you need to get it from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein http://clisp.cons.org/~haible/packages-libiconv.html and install it.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If you're reading this part of these instructions in order to generate
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein a version of the patch for a new release, you'll need to pick a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein version of the patch from some prior release to use as a starting
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User point. In general, the patch corresponding to the most recent
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein prior release will be the best starting point.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ patch -p0 < contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.x.y-patch \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein All hunks should have applied successfully with no offset or fuzz.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User If all succeeded but some were offset or had fuzz, the patch will be
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein regenerated at the end of this stage.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Note that two of the files which the patch attempts to update
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User (configure and config.h.in) are generated automatically. When
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein generating a new patch, the old version of the patch may not apply
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein correctly to these files, but that's ok so long as the patch does
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User apply correctly to the source files from which these files are
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein generated. The steps below will regenerate these files.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User [ Sample on netbsd ... ]
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein [ Sample on freebsd -- formerly used giconv, now uses iconv ]
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ./configure --with-iconv-include=/usr/local/include \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein '--with-iconv=-L/usr/local/lib -liconv'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ cd ../../.. ; : cd back to top level
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ autoheader ; : regenerate config.h.in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ autoconf ; : regenerate configure
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ ./configure
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ... should cleanly compile
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ make distclean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ cp -r $idn/include/mdn $idn/include/idn /tmp/idn/include
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ ./configure --with-idn=/tmp/idn --with-iconv="-L/usr/local/lib -liconv"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ LD_LIBRARY_PATH=/usr/local/lib:/tmp/idn/lib:/usr/lib make
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ... should cleanly compile
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User [ Some tests will be added to bin/tests/system to validate operation. ]
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Generate a fresh copy of the diffs:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ files=`awk '/^Index:/ && NF == 2 {print $2}' $patchd/$old_patch`
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ missing=`cvs status $files | awk '/Status: Unknown/ { print $2; }'`
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ sed '/^Index:/,$d' $patchd/$old_patch > $patchd/$new_patch
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ for i in $missing; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein do echo Index: $i; diff -u /dev/null $i; done >> $patchd/$new_patch
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ cvs -f diff -U 2 -N $files >> $patchd/$new_patch
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ cvs add -ko $patchd/$new_patch
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ cvs ci $patchd/$new_patch
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ cvs update -C
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $ make distclean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Add a marker line like " --- 9.0.0rc10 released ---"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to the CHANGES file.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Tag the CVS source tree with the final tag, as in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein "cvs rtag v9_0_0rc1 bind9" (mainline) or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein "cvs rtag -r v9_2 v9_2_0rc10 bind9" (release branch).
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Build the release kit. This procedure differs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein between the 9.0 release branch and later versions.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein On the 9.0 release branch,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein cd <temporary directory>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein cvs export -r v9_0_0rc10 bind9
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein sh configure
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein On the 9.[1-2] release branch or mainline, use the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Build bind9 from the kit on ns-ext (phred)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and ns-int (rc), install it, and let it run for
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein a day keeping an eye on it for any problems.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein gunzip <bind-$ver.tar.gz | tar xfv -
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein sh configure
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein make install
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ps -elf | grep named
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # kill both the keep-running script and named itself
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User gunzip <bind-$ver.tar.gz | tar xfv -
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein make install
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ps -elf | grep named
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # kill both keep-running scripts and both named9:s
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - If you can, try resolving some IPv6 addresses and
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User doing queries over IPv6.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - If problems are found at this stage, fix them, move the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein release tag up using "rtag -F", and respin the kit.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Sign the distribution files with the ISC signing PGP key
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and fix the permissions on the signature file:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pgp -sba bind-$ver.tar.gz -u 0x51BAB2ED
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein chmod 644 bind-$ver.tar.gz.asc
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Verify the PGP signature:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (Look for the words "Good signature" in the output.)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - If there is a companion binary kit for NT, sign it and verify the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pgp -sba BIND$ver.zip -u 0x51BAB2ED
chmod 644 BIND$ver.zip.asc