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