release revision 070347dafd61757886d03b80628ada12214fec61
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren KennedyCopyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren KennedyCopyright (C) 2000-2003 Internet Software Consortium.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren KennedySee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy$Id: release,v 1.63 2005/09/09 01:00:04 marka Exp $
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren KennedyPreparing a bind9 release
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren KennedyHere's a rough outline of the steps to follow in preparing a new bind9
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyrelease.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Update the README file
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Send the new README file to webteam@nominum.com at least 48
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy hours prior to the planned release and ask them to prepare
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy the web pages for the new version. If there have been only
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy minor changes, send context diffs relative to the previous
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy release instead.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Do a "cvs update" to check that all changes have been committed.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Verify that the file "version" contains the correct version
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy number (it should have been incremented after the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy previous release)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - If building from a release branch, check that any important
88a916040716032880a2a28e8f26912aef5426daAkash Ayare bug fixes made on the mainline since the last release have
88a916040716032880a2a28e8f26912aef5426daAkash Ayare been pulled up. You can do this by comparing the CHANGES
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy files using the util/check-pullups.pl script. For example,
88a916040716032880a2a28e8f26912aef5426daAkash Ayare running the script from a mainline tree:
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy perl util/check-pullups.pl CHANGES ../9.2/CHANGES ../9.2/EXCLUDED
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy This will list all bug fixes on the mainline that are not
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy on the 9.2 release branch.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Before creating a new release branch, update the lib/*/api files
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy as needed. See the libtool info file for information about what
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy the various numbers mean.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Check that http://status.isc.org/bind9/bind9.html
88a916040716032880a2a28e8f26912aef5426daAkash Ayare shows a clean build and test status for all supported
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy systems and that the tests are actually being run on the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy version being released (the version can be found in the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy page behind the "Source tar build" link).
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Check that running "make all_tests" in bin/tests does not
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy produce compile errors.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Regenerate the documentation by running "make man" (mainline/9.2)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy or by running genhtml.sh in doc/arm (9.1 release branch)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy and commit it. Note that not all machines have the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy necessary XML tools, but at least trebuchet, cuba,
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy and Scanner's machine do. Commit any files that were
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy regenerated.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Verify that the documents in doc/misc are up-to-date.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Update the copyrights. According to tale:
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy Go to the root of the source tree.
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy The scripts need to be run from there; they reference the util
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy subdirectory internally.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $ make distclean
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ... [I prefer to check out a fresh source tree --gson]
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $ perl util/merge_copyrights
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $ diff util/copyrights util/newcopyrights
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ... examine output, particularly any files with the "?" type, and
88a916040716032880a2a28e8f26912aef5426daAkash Ayare ... then edit util/newcopyrights if necessary
88a916040716032880a2a28e8f26912aef5426daAkash Ayare $ mv util/newcopyrights util/copyrights
88a916040716032880a2a28e8f26912aef5426daAkash Ayare $ cvs ci -m'merge_copyrights' util/copyrights
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $ perl util/update_copyrights < util/copyrights
88a916040716032880a2a28e8f26912aef5426daAkash Ayare $ cvs diff
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy ... examine output, edit as necessary. mail me about anything that
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ... the script should have been able to do itself. :-)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $ cvs ci -m'update_copyrights'
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy - Announce a CVS freeze if doing an alpha or beta release from
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy the mainline, or stop doing pullups if building from a release branch.
88a916040716032880a2a28e8f26912aef5426daAkash Ayare
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy - Run util/altbuild.sh. This is to make sure that
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy builds using libtool, separate source/object directories, and other
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy obscure build options work. This script may need some hacking if run
on anything other than NetBSD. Save the output (it's big) and look
for error and warning messages.
cd $top_of_mainline_tree
sh util/altbuild.sh v9_0
or
cd $top_of_9_1_tree
sh util/altbuild.sh v9_1
Alteratively, you can do this after building the kit, by giving
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.
If you're reading this part of these instructions in order to generate
a version of the patch for a new release, you'll need to pick a
version of the patch from some prior release to use as a starting
point. In general, the patch corresponding to the most recent
prior release will be the best starting point.
$ patch -p0 < contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.x.y-patch \
> 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.
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
$ 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