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