release revision dafcb997e390efa4423883dafd100c975c4095d6
3cb3f6867cf90188b5f4bf192ed3885e04b986fbAndreas GustafssonCopyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark AndrewsCopyright (C) 2000-2003 Internet Software Consortium.
3cb3f6867cf90188b5f4bf192ed3885e04b986fbAndreas GustafssonSee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews$Id: release,v 1.57 2004/03/05 05:04:50 marka Exp $
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
3cb3f6867cf90188b5f4bf192ed3885e04b986fbAndreas GustafssonPreparing a bind9 release
3cb3f6867cf90188b5f4bf192ed3885e04b986fbAndreas Gustafsson
61dd99bfae0ffa8ec193cf48fc86e4fa246a06e2Automatic UpdaterHere's a rough outline of the steps to follow in preparing a new bind9
4e6b8a18ff7dd22797970208060cca9f99f54dafAndreas Gustafssonrelease.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Update the README file
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Send the new README file to webteam@nominum.com at least 48
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer hours prior to the planned release and ask them to prepare
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer the web pages for the new version. If there have been only
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer minor changes, send context diffs relative to the previous
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer release instead.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Do a "cvs update" to check that all changes have been committed.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Verify that the file "version" contains the correct version
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer number (it should have been incremented after the
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer previous release)
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - If building from a release branch, check that any important
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer bug fixes made on the mainline since the last release have
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer been pulled up. You can do this by comparing the CHANGES
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer files using the util/check-pullups.pl script. For example,
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer running the script from a mainline tree:
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer perl util/check-pullups.pl CHANGES ../9.2/CHANGES ../9.2/EXCLUDED
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer This will list all bug fixes on the mainline that are not
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer on the 9.2 release branch.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Before creating a new release branch, update the lib/*/api files
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer as needed. See the libtool info file for information about what
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer the various numbers mean.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Check that http://status.isc.org/bind9/bind9.html
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer shows a clean build and test status for all supported
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer systems and that the tests are actually being run on the
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer version being released (the version can be found in the
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer page behind the "Source tar build" link).
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Check that running "make all_tests" in bin/tests does not
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer produce compile errors.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Regenerate the documentation by running "make man" (mainline/9.2)
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer or by running genhtml.sh in doc/arm (9.1 release branch)
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer and commit it. Note that not all machines have the
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer necessary XML tools, but at least trebuchet, cuba,
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer and Scanner's machine do. Commit any files that were
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer regenerated.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Verify that the documents in doc/misc are up-to-date.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Update the copyrights. According to tale:
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer Go to the root of the source tree.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer The scripts need to be run from there; they reference the util
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer subdirectory internally.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer $ make distclean
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer ... [I prefer to check out a fresh source tree --gson]
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer $ perl util/merge_copyrights
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer $ diff util/copyrights util/newcopyrights
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer ... examine output, particularly any files with the "?" type, and
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer ... then edit util/newcopyrights if necessary
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer $ mv util/newcopyrights util/copyrights
dc02df4d9e57afcd09682d45bd42f981414d7b88Mark Andrews $ cvs ci -m'merge_copyrights' util/copyrights
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer $ perl util/update_copyrights < util/copyrights
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer $ cvs diff
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer ... examine output, edit as necessary. mail me about anything that
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer ... the script should have been able to do itself. :-)
dc02df4d9e57afcd09682d45bd42f981414d7b88Mark Andrews $ cvs ci -m'update_copyrights'
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer - Announce a CVS freeze if doing an alpha or beta release from
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer the mainline, or stop doing pullups if building from a release branch.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
1e733ffc1103667dd6cf0eae01f5dfd0c84c5108Mark Andrews - Run util/altbuild.sh. This is to make sure that
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer builds using libtool, separate source/object directories, and other
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer obscure build options work. This script may need some hacking if run
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer on anything other than NetBSD. Save the output (it's big) and look
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer for error and warning messages.
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer cd $top_of_mainline_tree
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer sh util/altbuild.sh v9_0
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer or
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer cd $top_of_9_1_tree
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer sh util/altbuild.sh v9_1
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer Alteratively, you can do this after building the kit, by giving
01c7700793e3db356c774e7e7d2bf80456db1014Danny Mayer the kit .tar.gz file as an argument to altbuild.sh instad of
the CVS tag.
- If you can (= your system is similar enough to the one Tale is using),
check the header files for cruft by running the command
[ This step is quite imperfect and should probably be skipped
for now -- Tale ]
find lib -name '*.h' -print | xargs perl util/check-includes.pl
- Ensure that the JPNIC patch applies cleanly:
If you don't have the "iconv" library, you need to get it from
http://clisp.cons.org/~haible/packages-libiconv.html and install it.
$ sh util/sanitize_all.sh
$ patch -p0 < contrib/idn/mdnkit/patch/bind9/patch.most > patch.out 2>&1
$ 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.
$ cd contrib/idn/idnkit-1.0-src
[ Sample on netbsd ... ]
$ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
FreeBSD has giconv.
./configure --with-iconv-include=/usr/local/include \
'--with-iconv=-L/usr/local/lib -lgiconv'
$ make
$ cd ../../.. ; : cd back to top level
$ cp configure configure.orig
$ autoconf
$ ./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
$ awk '/^\+\+\+ / {print $2}' $patchd/patch.most |
while read i; do
diff -u2 $i.orig $i
done > $patchd/patch.most.new
$ cvs diff -u2 configure > $patchd/patch.configure
$ mv $patchd/patch.most.new $patchd/patch.most
$ cvs ci -ko $patchd/patch.*
- 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