release revision 682d0209e8a67d53594fb524b5d9ae4141bcc9b2
f73e0305a745f17c6a584c4470f99ea1e023657fHans RosenfeldCopyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC")
f73e0305a745f17c6a584c4470f99ea1e023657fHans RosenfeldCopyright (C) 2000-2003 Internet Software Consortium.
f73e0305a745f17c6a584c4470f99ea1e023657fHans RosenfeldSee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld$Id: release,v 1.74 2009/08/06 23:47:44 tbox Exp $
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans RosenfeldPreparing a bind9 release
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans RosenfeldHere's a rough outline of the steps to follow in preparing a new bind9
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeldrelease.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Update the README file
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Send the new README file to webteam@nominum.com at least 48
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld hours prior to the planned release and ask them to prepare
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld the web pages for the new version. If there have been only
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld minor changes, send context diffs relative to the previous
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld release instead.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Do a "cvs update" to check that all changes have been committed.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Verify that the file "version" contains the correct version
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld number (it should have been incremented after the
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld previous release)
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - If building from a release branch, check that any important
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld bug fixes made on the mainline since the last release have
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld been pulled up. You can do this by comparing the CHANGES
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld files using the util/check-pullups.pl script. For example,
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld running the script from a mainline tree:
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld perl util/check-pullups.pl CHANGES ../9.2/CHANGES ../9.2/EXCLUDED
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld This will list all bug fixes on the mainline that are not
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld on the 9.2 release branch.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Before creating a new release branch, update the lib/*/api files
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld as needed. See the libtool info file for information about what
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld the various numbers mean.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld cvs rdiff -r <last_release> -r <branch/HEAD> bind9/lib > diff
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld e.g.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld cvs rdiff -r v9_4_0rc2 -r v9_4 bind9/lib > diff
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Check that https://internal.isc.org/bind-build/
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld shows a clean build and test status for all supported
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld systems and that the tests are actually being run on the
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld version being released (the version can be found in the
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld page behind the "Source tar build" link).
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Check that running "make all_tests" in bin/tests does not
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld produce compile errors.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Regenerate the documentation by running "make man" (mainline/9.2)
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld or by running genhtml.sh in doc/arm (9.1 release branch)
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld and commit it. Note that not all machines have the
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld necessary XML tools, but at least trebuchet, cuba,
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld and Scanner's machine do. Commit any files that were
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld regenerated.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld Most of this has now been automated, only doc/arm/ARM.pdf will
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld not be committed:
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld ssh tbox@docs.lab.isc.org
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld run this command from crontab.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld1 1 * * * /usr/bin/lockf -s -t 0 /udir/tbox/bind9-documents/regenerate.lock /udir/tbox/bind9-documents/regenerate
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld Check to see if the ARM has changed since the last release
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld and if it has commit doc/arm/ARM.pdf.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld e.g.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld cvs rdiff -r v9_6_1 -r v9_6 bind9/doc/arm
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld cd bind9-documents/bind9.v9_6
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld cvs commit doc/arm/ARM.pdf
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Verify that the documents in doc/misc are up-to-date.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Update the copyrights.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld ssh tbox@cvs.isc.org
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld run these two command from the crontab
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld#
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld# Merge and Update copyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld#
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld30 23 * * * /usr/bin/lockf -s -t 3600 /udir/tbox/tarballs/build-tarballs.lock /bin/sh /udir/tbox/tarballs/mergecopyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld45 23 * * * /usr/bin/lockf -s -t 3600 /udir/tbox/updatecopyrights/updatecopyrights.lock /bin/sh /udir/tbox/updatecopyrights/updatecopyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld When tbox@cvs.isc.org is not available:
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld Go to the root of the source tree.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld The scripts need to be run from there; they reference the util
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld subdirectory internally.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ make distclean
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld ... [I prefer to check out a fresh source tree --gson]
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ perl util/merge_copyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ diff util/copyrights util/newcopyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld ... examine output, particularly any files with the "?" type, and
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld ... then edit util/newcopyrights if necessary
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ mv util/newcopyrights util/copyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ cvs ci -m'merge_copyrights' util/copyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ perl util/update_copyrights < util/copyrights
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ cvs diff
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld ... examine output, edit as necessary. mail me about anything that
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld ... the script should have been able to do itself. :-)
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ cvs ci -m'update_copyrights'
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Announce a CVS freeze if doing an alpha or beta release from
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld the mainline, or stop doing pullups if building from a release branch.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Run util/altbuild.sh. This is to make sure that
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld builds using libtool, separate source/object directories, and other
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld obscure build options work. This script may need some hacking if run
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld on anything other than NetBSD. Save the output (it's big) and look
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld for error and warning messages.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld cd $top_of_mainline_tree
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld sh util/altbuild.sh v9_0
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld or
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld cd $top_of_9_1_tree
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld sh util/altbuild.sh v9_1
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld Alteratively, you can do this after building the kit, by giving
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld the kit .tar.gz file as an argument to altbuild.sh instad of
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld the CVS tag.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - If you can (= your system is similar enough to the one Tale is using),
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld check the header files for cruft by running the command
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld [ This step is quite imperfect and should probably be skipped
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld for now -- Tale ]
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld find lib -name '*.h' -print | xargs perl util/check-includes.pl
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld - Ensure that the JPNIC patch applies cleanly (9.2 and 9.3):
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld If you don't have the "iconv" library, you need to get it from
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld http://clisp.cons.org/~haible/packages-libiconv.html and install it.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld If you're reading this part of these instructions in order to generate
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld a version of the patch for a new release, you'll need to pick a
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld version of the patch from some prior release to use as a starting
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld point. In general, the patch corresponding to the most recent
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld prior release will be the best starting point.
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ patch -p0 < contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.x.y-patch \
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld > patch.out 2>&1
f73e0305a745f17c6a584c4470f99ea1e023657fHans Rosenfeld $ egrep Hunk patch.out
All hunks should have applied successfully with no offset or fuzz.
If all succeeded but some were offset or had fuzz, the patch will be
regenerated at the end of this stage.
Note that two of the files which the patch attempts to update
(configure and config.h.in) are generated automatically. When
generating a new patch, the old version of the patch may not apply
correctly to these files, but that's ok so long as the patch does
apply correctly to the source files from which these files are
generated. The steps below will regenerate these files.
$ cd contrib/idn/idnkit-1.0-src
[ Sample on netbsd ... ]
$ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
[ 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
$ (cd bin/dig ; rm host.1 dig.1 ; make host.1 dig.1 ; cvs update host.1 dig.1 )
$ 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 status $files | awk '/Status: Unknown/ { print $2; }'`
$ 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", "configure.in" and
"doc/arm/Bv9ARM-book.xml".
- Resume doing pullups