release revision c5b14e2676e8832de77bf63b8f58890d13a6c1e2
c28749e97052f09388969427adf7df641cdcdc22kaisCopyright (C) 2000, 2001 Internet Software Consortium.
c28749e97052f09388969427adf7df641cdcdc22kaisSee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
c28749e97052f09388969427adf7df641cdcdc22kais$Id: release,v 1.42 2001/09/01 00:58:24 gson Exp $
968d6dde54d2efa62910a3cf36438325d0b69031krishnaPreparing a bind9 release
c28749e97052f09388969427adf7df641cdcdc22kaisHere's a rough outline of the steps to follow in preparing a new bind9
c28749e97052f09388969427adf7df641cdcdc22kais - Update the README file
c28749e97052f09388969427adf7df641cdcdc22kais - Send the new README file to webteam@nominum.com at least 48
c28749e97052f09388969427adf7df641cdcdc22kais hours prior to the planned release and ask them to prepare
c28749e97052f09388969427adf7df641cdcdc22kais the web pages for the new version. If there have been only
c28749e97052f09388969427adf7df641cdcdc22kais minor changes, send context diffs relative to the previous
c28749e97052f09388969427adf7df641cdcdc22kais release instead.
c28749e97052f09388969427adf7df641cdcdc22kais - Do a "cvs update" to check that all changes have been committed.
c28749e97052f09388969427adf7df641cdcdc22kais - Verify that the file "version" contains the correct version
51144063f3afc862c6cb3f54fd4341724f765075Krishna Yenduri number (it should have been incremented after the
c28749e97052f09388969427adf7df641cdcdc22kais previous release)
c28749e97052f09388969427adf7df641cdcdc22kais - Update the lib/*/api files as needed. See the libtool
c28749e97052f09388969427adf7df641cdcdc22kais info file for information about what the various numbers mean.
c28749e97052f09388969427adf7df641cdcdc22kais - If building from a release branch, check that any important
c28749e97052f09388969427adf7df641cdcdc22kais bug fixes made on the mainline since the last release have
c28749e97052f09388969427adf7df641cdcdc22kais been pulled up. You can do this by comparing the CHANGES
c28749e97052f09388969427adf7df641cdcdc22kais files using the util/check-pullups.pl script. For example,
c28749e97052f09388969427adf7df641cdcdc22kais running the script from a mainline tree:
c28749e97052f09388969427adf7df641cdcdc22kais perl util/check-pullups.pl CHANGES ../9.2/CHANGES
c28749e97052f09388969427adf7df641cdcdc22kais This will list all bug fixes on the mainline that are not
c28749e97052f09388969427adf7df641cdcdc22kais on the 9.2 release branch.
c28749e97052f09388969427adf7df641cdcdc22kais shows a clean build and test status for all supported
c28749e97052f09388969427adf7df641cdcdc22kais systems and that the tests are actually being run on the
c28749e97052f09388969427adf7df641cdcdc22kais version being released (the version can be found in the
c28749e97052f09388969427adf7df641cdcdc22kais page behind the "Source tar build" link).
c28749e97052f09388969427adf7df641cdcdc22kais - Check that running "make all_tests" in bin/tests does not
c28749e97052f09388969427adf7df641cdcdc22kais produce compile errors.
c28749e97052f09388969427adf7df641cdcdc22kais - Regenerate the documentation by running "make man" (mainline/9.2)
c28749e97052f09388969427adf7df641cdcdc22kais or by running genhtml.sh in doc/arm (9.1 release branch)
c28749e97052f09388969427adf7df641cdcdc22kais and commit it. Note that not all machines have the
c28749e97052f09388969427adf7df641cdcdc22kais necessary XML tools, but at least trebuchet, cuba,
c28749e97052f09388969427adf7df641cdcdc22kais and Scanner's machine do.
c28749e97052f09388969427adf7df641cdcdc22kais - Verify that the documents in doc/misc are up-to-date.
c28749e97052f09388969427adf7df641cdcdc22kais - Update the copyrights. According to tale:
c28749e97052f09388969427adf7df641cdcdc22kais Go to the root of the source tree.
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna The scripts need to be run from there; they reference the util
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna subdirectory internally.
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna $ make distclean
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna ... [I prefer to check out a fresh source tree --gson]
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna ... examine output, particularly any files with the "?" type, and
c28749e97052f09388969427adf7df641cdcdc22kais ... then edit util/newcopyrights if necessary
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna $ cvs ci -m'merge_copyrights' util/copyrights
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna ... examine output, edit as necessary. mail me about anything that
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna ... the script should have been able to do itself. :-)
2bd70d4be73561631df9cb3d9eb4c65fa94fa665krishna $ cvs ci -m'update_copyrights'
c28749e97052f09388969427adf7df641cdcdc22kais - Announce a CVS freeze if doing an alpha or beta release from
c28749e97052f09388969427adf7df641cdcdc22kais the mainline, or stop doing pullups if building from a release branch.
c28749e97052f09388969427adf7df641cdcdc22kais - Run util/altbuild.sh. This is to make sure that
c28749e97052f09388969427adf7df641cdcdc22kais builds using libtool, separate source/object directories, and other
c28749e97052f09388969427adf7df641cdcdc22kais obscure build options work. This script may need some hacking if run
c28749e97052f09388969427adf7df641cdcdc22kais on anything other than NetBSD. Save the output (it's big) and look
c28749e97052f09388969427adf7df641cdcdc22kais for error and warning messages.
c28749e97052f09388969427adf7df641cdcdc22kais cd $top_of_mainline_tree
c28749e97052f09388969427adf7df641cdcdc22kais cd $top_of_9_1_tree
c28749e97052f09388969427adf7df641cdcdc22kais Alteratively, you can do this after building the kit, by giving
c28749e97052f09388969427adf7df641cdcdc22kais the kit .tar.gz file as an argument to altbuild.sh instad of
c28749e97052f09388969427adf7df641cdcdc22kais the CVS tag.
c28749e97052f09388969427adf7df641cdcdc22kais - If you can (= your system is similar enough to the one Tale is using),
c28749e97052f09388969427adf7df641cdcdc22kais check the header files for cruft by running the command
c28749e97052f09388969427adf7df641cdcdc22kais [ This step is quite imperfect and should probably be skipped
c28749e97052f09388969427adf7df641cdcdc22kais for now -- Tale ]
c28749e97052f09388969427adf7df641cdcdc22kais find lib -name '*.h' -print | xargs perl util/check-includes.pl
c28749e97052f09388969427adf7df641cdcdc22kais - Ensure that the JPNIC patch applies cleanly:
c28749e97052f09388969427adf7df641cdcdc22kais If you don't have the "iconv" library, you need to get it from
c28749e97052f09388969427adf7df641cdcdc22kais http://clisp.cons.org/~haible/packages-libiconv.html and install it.
c28749e97052f09388969427adf7df641cdcdc22kais $ patch -p0 < contrib/idn/mdnkit/patch/bind9/patch.most > patch.out 2>&1
c28749e97052f09388969427adf7df641cdcdc22kais $ egrep Hunk patch.out
c28749e97052f09388969427adf7df641cdcdc22kais All hunks should have applied successfully with no offset or fuzz.
c28749e97052f09388969427adf7df641cdcdc22kais If all succeeded but some were offset or had fuzz, the patch will be
c28749e97052f09388969427adf7df641cdcdc22kais regenerated at the end of this stage.
c28749e97052f09388969427adf7df641cdcdc22kais [ Sample on netbsd ... ]
c28749e97052f09388969427adf7df641cdcdc22kais $ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
c28749e97052f09388969427adf7df641cdcdc22kais $ cd ../../.. ; : cd back to top level
c28749e97052f09388969427adf7df641cdcdc22kais $ cp configure configure.orig
c28749e97052f09388969427adf7df641cdcdc22kais $ autoconf
c28749e97052f09388969427adf7df641cdcdc22kais $ ./configure
c28749e97052f09388969427adf7df641cdcdc22kais ... should cleanly compile
c28749e97052f09388969427adf7df641cdcdc22kais $ make distclean
c28749e97052f09388969427adf7df641cdcdc22kais $ mkdir -p /tmp/mdn/{lib,include}
c28749e97052f09388969427adf7df641cdcdc22kais $ ./configure --with-mdn=/tmp/mdn --with-iconv="-L/usr/local/lib -liconv"
c28749e97052f09388969427adf7df641cdcdc22kais $ LD_LIBRARY_PATH=/usr/local/lib:/tmp/mdn/lib:/usr/lib make
c28749e97052f09388969427adf7df641cdcdc22kais ... should cleanly compile
c28749e97052f09388969427adf7df641cdcdc22kais [ Some tests will be added to bin/tests/system to validate operation. ]
c28749e97052f09388969427adf7df641cdcdc22kais Generate a fresh copy of the diffs:
c28749e97052f09388969427adf7df641cdcdc22kais $ awk '/^\+\+\+ / {print $2}' $patchd/patch.most |
c28749e97052f09388969427adf7df641cdcdc22kais while read i; do
c28749e97052f09388969427adf7df641cdcdc22kais diff -u2 $i.orig $i
c28749e97052f09388969427adf7df641cdcdc22kais $ cvs diff -u2 configure > $patchd/patch.configure
c28749e97052f09388969427adf7df641cdcdc22kais $ cvs ci -ko $patchd/patch.*
c28749e97052f09388969427adf7df641cdcdc22kais - Add a marker line like " --- 9.0.0rc1 released ---"
c28749e97052f09388969427adf7df641cdcdc22kais to the CHANGES file.
c28749e97052f09388969427adf7df641cdcdc22kais - Tag the CVS source tree with the final tag, as in
c28749e97052f09388969427adf7df641cdcdc22kais "cvs rtag v9_0_0rc1 bind9" (mainline) or
c28749e97052f09388969427adf7df641cdcdc22kais "cvs rtag -r v9_1 v9_1_1rc7 bind9" (release branch).
efe05f9ecde56550699213909fd4152ef8ef6438krishna - Build the release kit. This procedure differs
efe05f9ecde56550699213909fd4152ef8ef6438krishna between the 9.0 release branch and later versions.
efe05f9ecde56550699213909fd4152ef8ef6438krishna On the 9.0 release branch,
efe05f9ecde56550699213909fd4152ef8ef6438krishna cd <temporary directory>
c28749e97052f09388969427adf7df641cdcdc22kais cvs export -r v9_0_0rc7 bind9
c28749e97052f09388969427adf7df641cdcdc22kais sh configure
c28749e97052f09388969427adf7df641cdcdc22kais On the 9.[1-2] release branch or mainline, use the
c28749e97052f09388969427adf7df641cdcdc22kais - Build bind9 from the kit on at least one machine
c28749e97052f09388969427adf7df641cdcdc22kais and test it. Run it as a caching name server.
c28749e97052f09388969427adf7df641cdcdc22kais If you can, try resolving some IPv6 addresses and
c28749e97052f09388969427adf7df641cdcdc22kais doing queries over IPv6.
c28749e97052f09388969427adf7df641cdcdc22kais - If problems are found at this stage, fix them, move the
c28749e97052f09388969427adf7df641cdcdc22kais release tag up using "rtag -F", and respin the kit.
c28749e97052f09388969427adf7df641cdcdc22kais - Sign the distribution files with the ISC signing PGP key
c28749e97052f09388969427adf7df641cdcdc22kais and fix the permissions on the signature file:
c28749e97052f09388969427adf7df641cdcdc22kais pgp -sba bind-9.2.0rc1.tar.gz -u 0x51BAB2ED
c28749e97052f09388969427adf7df641cdcdc22kais - Verify the PGP signature:
c28749e97052f09388969427adf7df641cdcdc22kais (Look for the words "Good signature" in the output.)
c28749e97052f09388969427adf7df641cdcdc22kais - Prepare a release announcement based on the previous one.
c28749e97052f09388969427adf7df641cdcdc22kais - Copy the distribution and PGP signature files to the FTP site:
c28749e97052f09388969427adf7df641cdcdc22kais ver=9.2.0rc1
c28749e97052f09388969427adf7df641cdcdc22kais ssh -n isrv4.pa.vix.com "mkdir /udir/ftp/isc/bind9/$ver"
c28749e97052f09388969427adf7df641cdcdc22kais - Download using FTP (or Netscape) using the URLs in the release
c28749e97052f09388969427adf7df641cdcdc22kais announcement and verify the PGP signature again
c28749e97052f09388969427adf7df641cdcdc22kais - Increment the version in the file "version"
efe05f9ecde56550699213909fd4152ef8ef6438krishna - Resume doing pullups
c28749e97052f09388969427adf7df641cdcdc22kais - Announce the release on bind-announce@isc.org