release revision 070347dafd61757886d03b80628ada12214fec61
c25356d5978632df6203437e1953bcb29e0c736fTimo SirainenCopyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
c25356d5978632df6203437e1953bcb29e0c736fTimo SirainenCopyright (C) 2000-2003 Internet Software Consortium.
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo SirainenSee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
49e358eebea107aad9919dcc4bd88cee8519ba2eTimo Sirainen
49e358eebea107aad9919dcc4bd88cee8519ba2eTimo Sirainen$Id: release,v 1.63 2005/09/09 01:00:04 marka Exp $
49e358eebea107aad9919dcc4bd88cee8519ba2eTimo Sirainen
c0435c854a0e7246373b9752d163095cc4fbe985Timo SirainenPreparing a bind9 release
dd62b77c932d1b518f2a3e4bf80e36542becc256Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo SirainenHere's a rough outline of the steps to follow in preparing a new bind9
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainenrelease.
03f5c621d06d6b6d77a145196c9633a7aa64dc78Timo Sirainen
c06f4017027263cf3a08becc551f5126409e2a83Timo Sirainen - Update the README file
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
411d6baa37f31d90730e90c4a28c43e1974bbe58Timo Sirainen - Send the new README file to webteam@nominum.com at least 48
7e1f68ad71d3485f1882142837b01f7a98ca8467Timo Sirainen hours prior to the planned release and ask them to prepare
7e1f68ad71d3485f1882142837b01f7a98ca8467Timo Sirainen the web pages for the new version. If there have been only
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen minor changes, send context diffs relative to the previous
daf029d2a627daa39d05507140f385162828172eTimo Sirainen release instead.
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen - Do a "cvs update" to check that all changes have been committed.
2526d52441ef368215ab6bf04fd0356d3b09d235Timo Sirainen
2526d52441ef368215ab6bf04fd0356d3b09d235Timo Sirainen - Verify that the file "version" contains the correct version
fe363b433b8038a69b55169da9dca27892ad7d18Timo Sirainen number (it should have been incremented after the
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen previous release)
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen
fe363b433b8038a69b55169da9dca27892ad7d18Timo Sirainen - If building from a release branch, check that any important
fe363b433b8038a69b55169da9dca27892ad7d18Timo Sirainen bug fixes made on the mainline since the last release have
dd62b77c932d1b518f2a3e4bf80e36542becc256Timo Sirainen been pulled up. You can do this by comparing the CHANGES
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen files using the util/check-pullups.pl script. For example,
cd56a23e21f1df3f79648cf07e2f4385e2fadebbTimo Sirainen running the script from a mainline tree:
cd56a23e21f1df3f79648cf07e2f4385e2fadebbTimo Sirainen
cd56a23e21f1df3f79648cf07e2f4385e2fadebbTimo Sirainen perl util/check-pullups.pl CHANGES ../9.2/CHANGES ../9.2/EXCLUDED
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen This will list all bug fixes on the mainline that are not
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen on the 9.2 release branch.
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen - Before creating a new release branch, update the lib/*/api files
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen as needed. See the libtool info file for information about what
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen the various numbers mean.
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen - Check that http://status.isc.org/bind9/bind9.html
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen shows a clean build and test status for all supported
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen systems and that the tests are actually being run on the
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen version being released (the version can be found in the
07e4875d250e7a7157cd99132aafc773cf3cdf83Timo Sirainen page behind the "Source tar build" link).
07e4875d250e7a7157cd99132aafc773cf3cdf83Timo Sirainen
07e4875d250e7a7157cd99132aafc773cf3cdf83Timo Sirainen - Check that running "make all_tests" in bin/tests does not
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen produce compile errors.
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen - Regenerate the documentation by running "make man" (mainline/9.2)
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen or by running genhtml.sh in doc/arm (9.1 release branch)
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen and commit it. Note that not all machines have the
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen necessary XML tools, but at least trebuchet, cuba,
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen and Scanner's machine do. Commit any files that were
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen regenerated.
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen - Verify that the documents in doc/misc are up-to-date.
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen - Update the copyrights. According to tale:
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen Go to the root of the source tree.
602a0434db30d8e3292d1c161a803d96a879a74fTimo Sirainen The scripts need to be run from there; they reference the util
602a0434db30d8e3292d1c161a803d96a879a74fTimo Sirainen subdirectory internally.
602a0434db30d8e3292d1c161a803d96a879a74fTimo Sirainen
602a0434db30d8e3292d1c161a803d96a879a74fTimo Sirainen $ make distclean
602a0434db30d8e3292d1c161a803d96a879a74fTimo Sirainen ... [I prefer to check out a fresh source tree --gson]
07e4875d250e7a7157cd99132aafc773cf3cdf83Timo Sirainen $ perl util/merge_copyrights
07e4875d250e7a7157cd99132aafc773cf3cdf83Timo Sirainen $ diff util/copyrights util/newcopyrights
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen ... examine output, particularly any files with the "?" type, and
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen ... then edit util/newcopyrights if necessary
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen $ mv util/newcopyrights util/copyrights
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen $ cvs ci -m'merge_copyrights' util/copyrights
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen $ perl util/update_copyrights < util/copyrights
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen $ cvs diff
7e1f68ad71d3485f1882142837b01f7a98ca8467Timo Sirainen ... examine output, edit as necessary. mail me about anything that
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen ... the script should have been able to do itself. :-)
7e1f68ad71d3485f1882142837b01f7a98ca8467Timo Sirainen $ cvs ci -m'update_copyrights'
89e195dfb5c4b0efd9b9f459771a4467674e5b1fTimo Sirainen
08fb191d6148feb3ed14e2d6c625cd248dd1c1d4Timo Sirainen - Announce a CVS freeze if doing an alpha or beta release from
08fb191d6148feb3ed14e2d6c625cd248dd1c1d4Timo Sirainen the mainline, or stop doing pullups if building from a release branch.
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen
89e195dfb5c4b0efd9b9f459771a4467674e5b1fTimo Sirainen - Run util/altbuild.sh. This is to make sure that
137ea7ca34005345aa2304a940149b7f3774d727Timo Sirainen builds using libtool, separate source/object directories, and other
89e195dfb5c4b0efd9b9f459771a4467674e5b1fTimo Sirainen obscure build options work. This script may need some hacking if run
7e1f68ad71d3485f1882142837b01f7a98ca8467Timo Sirainen on anything other than NetBSD. Save the output (it's big) and look
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen for error and warning messages.
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
c06f4017027263cf3a08becc551f5126409e2a83Timo Sirainen cd $top_of_mainline_tree
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen sh util/altbuild.sh v9_0
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen or
c06f4017027263cf3a08becc551f5126409e2a83Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen cd $top_of_9_1_tree
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen sh util/altbuild.sh v9_1
65cb456a072219fa35b55695d476b0bf51e2d735Timo Sirainen
65cb456a072219fa35b55695d476b0bf51e2d735Timo Sirainen Alteratively, you can do this after building the kit, by giving
c06f4017027263cf3a08becc551f5126409e2a83Timo Sirainen the kit .tar.gz file as an argument to altbuild.sh instad of
c06f4017027263cf3a08becc551f5126409e2a83Timo Sirainen the CVS tag.
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen
ecc81625167ed96c04c02aa190a1ea5baa65b474Timo Sirainen - 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