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