release revision 682d0209e8a67d53594fb524b5d9ae4141bcc9b2
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox UserCopyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC")
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox UserCopyright (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.74 2009/08/06 23:47:44 tbox Exp $
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox UserPreparing a bind9 release
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox UserHere'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
f9ce6280cec79deb16ff6d9807aa493ff23e10d9Tinderbox User hours prior to the planned release and ask them to prepare
5f0c46ca5f68c2148c735aa52d7541baac249c34Tinderbox User the web pages for the new version. If there have been only
f9ce6280cec79deb16ff6d9807aa493ff23e10d9Tinderbox User minor changes, send context diffs relative to the previous
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt release instead.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Do a "cvs update" to check that all changes have been committed.
46472a450e043434d78fa18edc73bca8c47f3981Tinderbox User - Verify that the file "version" contains the correct version
e285c11870c6263cd79b418e104c7eb3e2d96952Tinderbox User number (it should have been incremented after the
46472a450e043434d78fa18edc73bca8c47f3981Tinderbox User previous release)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - If building from a release branch, check that any important
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User bug fixes made on the mainline since the last release have
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User been pulled up. You can do this by comparing the CHANGES
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt files using the util/check-pullups.pl script. For example,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt running the script from a mainline tree:
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt perl util/check-pullups.pl CHANGES ../9.2/CHANGES ../9.2/EXCLUDED
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt This will list all bug fixes on the mainline that are not
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt on the 9.2 release branch.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Before creating a new release branch, update the lib/*/api files
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User as needed. See the libtool info file for information about what
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the various numbers mean.
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User cvs rdiff -r <last_release> -r <branch/HEAD> bind9/lib > diff
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User cvs rdiff -r v9_4_0rc2 -r v9_4 bind9/lib > diff
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User - Check that https://internal.isc.org/bind-build/
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User shows a clean build and test status for all supported
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User systems and that the tests are actually being run on the
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User version being released (the version can be found in the
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User page behind the "Source tar build" link).
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User - Check that running "make all_tests" in bin/tests does not
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User produce compile errors.
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User - Regenerate the documentation by running "make man" (mainline/9.2)
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User or by running genhtml.sh in doc/arm (9.1 release branch)
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User and commit it. Note that not all machines have the
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User necessary XML tools, but at least trebuchet, cuba,
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User and Scanner's machine do. Commit any files that were
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User Most of this has now been automated, only doc/arm/ARM.pdf will
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User not be committed:
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User ssh tbox@docs.lab.isc.org
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User run this command from crontab.
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User1 1 * * * /usr/bin/lockf -s -t 0 /udir/tbox/bind9-documents/regenerate.lock /udir/tbox/bind9-documents/regenerate
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User Check to see if the ARM has changed since the last release
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt and if it has commit doc/arm/ARM.pdf.
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User cvs rdiff -r v9_6_1 -r v9_6 bind9/doc/arm
576bce9d7331498ca5453f8743f94ed8e2e59d9fTinderbox User - Verify that the documents in doc/misc are up-to-date.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Update the copyrights.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt ssh tbox@cvs.isc.org
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt run these two command from the crontab
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User# Merge and Update copyrights
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User30 23 * * * /usr/bin/lockf -s -t 3600 /udir/tbox/tarballs/build-tarballs.lock /bin/sh /udir/tbox/tarballs/mergecopyrights
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User45 23 * * * /usr/bin/lockf -s -t 3600 /udir/tbox/updatecopyrights/updatecopyrights.lock /bin/sh /udir/tbox/updatecopyrights/updatecopyrights
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User When tbox@cvs.isc.org is not available:
1ffe3f29e3cd0d8355500e9fd34de918ad9b4a01Tinderbox User Go to the root of the source tree.
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User The scripts need to be run from there; they reference the util
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User subdirectory internally.
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User $ make distclean
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User ... [I prefer to check out a fresh source tree --gson]
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User ... examine output, particularly any files with the "?" type, and
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User ... then edit util/newcopyrights if necessary
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User $ cvs ci -m'merge_copyrights' util/copyrights
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User $ perl util/update_copyrights < util/copyrights
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User ... examine output, edit as necessary. mail me about anything that
eb2a5f51bd5c100799d93d51c9e22666cbd64d90Tinderbox User ... the script should have been able to do itself. :-)
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User $ cvs ci -m'update_copyrights'
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User - Announce a CVS freeze if doing an alpha or beta release from
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User the mainline, or stop doing pullups if building from a release branch.
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User - Run util/altbuild.sh. This is to make sure that
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User builds using libtool, separate source/object directories, and other
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User obscure build options work. This script may need some hacking if run
eb2a5f51bd5c100799d93d51c9e22666cbd64d90Tinderbox User on anything other than NetBSD. Save the output (it's big) and look
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User for error and warning messages.
eb2a5f51bd5c100799d93d51c9e22666cbd64d90Tinderbox User cd $top_of_mainline_tree
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt cd $top_of_9_1_tree
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Alteratively, you can do this after building the kit, by giving
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt the kit .tar.gz file as an argument to altbuild.sh instad of
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - If you can (= your system is similar enough to the one Tale is using),
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt check the header files for cruft by running the command
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt [ This step is quite imperfect and should probably be skipped
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt for now -- Tale ]
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt find lib -name '*.h' -print | xargs perl util/check-includes.pl
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Ensure that the JPNIC patch applies cleanly (9.2 and 9.3):
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt If you don't have the "iconv" library, you need to get it from
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt http://clisp.cons.org/~haible/packages-libiconv.html and install it.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt 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
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt 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
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt prior release will be the best starting point.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ patch -p0 < contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.x.y-patch \
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt All hunks should have applied successfully with no offset or fuzz.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt If all succeeded but some were offset or had fuzz, the patch will be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User regenerated at the end of this stage.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Note that two of the files which the patch attempts to update
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt (configure and config.h.in) are generated automatically. When
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt generating a new patch, the old version of the patch may not apply
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt correctly to these files, but that's ok so long as the patch does
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt apply correctly to the source files from which these files are
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt generated. The steps below will regenerate these files.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt [ Sample on netbsd ... ]
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt [ Sample on freebsd -- formerly used giconv, now uses iconv ]
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ./configure --with-iconv-include=/usr/local/include \
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt '--with-iconv=-L/usr/local/lib -liconv'
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ cd ../../.. ; : cd back to top level
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ autoheader ; : regenerate config.h.in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ autoconf ; : regenerate configure
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ ./configure
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt ... should cleanly compile
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ (cd bin/dig ; rm host.1 dig.1 ; make host.1 dig.1 ; cvs update host.1 dig.1 )
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ make distclean
9d557856c2a19ec95ee73245f60a92f8675cf5baTinderbox User $ cp $idn/lib/.libs/libidnkit.so* /tmp/idn/lib
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ cp -r $idn/include/mdn $idn/include/idn /tmp/idn/include
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ ./configure --with-idn=/tmp/idn --with-iconv="-L/usr/local/lib -liconv"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $ LD_LIBRARY_PATH=/usr/local/lib:/tmp/idn/lib:/usr/lib make
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt ... should cleanly compile
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt [ Some tests will be added to bin/tests/system to validate operation. ]
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Generate a fresh copy of the diffs:
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ files=`awk '/^Index:/ && NF == 2 {print $2}' $patchd/$old_patch`
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ missing=`cvs status $files | awk '/Status: Unknown/ { print $2; }'`
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ sed '/^Index:/,$d' $patchd/$old_patch > $patchd/$new_patch
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ for i in $missing; \
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User do echo Index: $i; diff -u /dev/null $i; done >> $patchd/$new_patch
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ cvs -f diff -U 2 -N $files >> $patchd/$new_patch
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ cvs add -ko $patchd/$new_patch
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ cvs ci $patchd/$new_patch
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User $ cvs update -C
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ make distclean
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User - Add a marker line like " --- 9.0.0rc10 released ---"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt to the CHANGES file.
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User - Tag the CVS source tree with the final tag, as in
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User "cvs rtag v9_0_0rc1 bind9" (mainline) or
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "cvs rtag -r v9_2 v9_2_0rc10 bind9" (release branch).
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Build the release kit. This procedure differs
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt between the 9.0 release branch and later versions.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt On the 9.0 release branch,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt cd <temporary directory>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User cvs export -r v9_0_0rc10 bind9
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User On the 9.[1-2] release branch or mainline, use the
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User - Build bind9 from the kit on ns-ext (phred)
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User and ns-int (rc), install it, and let it run for
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User a day keeping an eye on it for any problems.
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User gunzip <bind-$ver.tar.gz | tar xfv -
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User ps -elf | grep named
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User # kill both the keep-running script and named itself
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User gunzip <bind-$ver.tar.gz | tar xfv -
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User mv /usr/local/sbin/named /usr/local/sbin/named9
a1ff871f78b7d907d6fc3a382beea2a640fe8423Tinderbox User ps -elf | grep named
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User # kill both keep-running scripts and both named9:s
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User - If you can, try resolving some IPv6 addresses and
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User doing queries over IPv6.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - If problems are found at this stage, fix them, move the
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt release tag up using "rtag -F", and respin the kit.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Sign the distribution files with the ISC signing PGP key
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt and fix the permissions on the signature file:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User pgp -sba bind-$ver.tar.gz -u 0x51BAB2ED
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User chmod 644 bind-$ver.tar.gz.asc
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Verify the PGP signature:
8a48b6b9b6fa8486f24b22d1972b2b6ebb36a4a4Tinderbox User (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
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - 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"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - If there is a companion binary kit for NT, copy it, too:
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt ssh -n isrv4.pa.vix.com "mkdir /udir/ftp/isc/bind/contrib/ntbind-$ver"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt 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
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Ask webteam@nominum.com to publish the updated web pages
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - When the web pages are up, announce the release on
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User bind-announce@isc.org
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Increment the version in the file "version", "configure.in" and
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt - Resume doing pullups