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