release revision 31f15d225d716df580dd3859908ea2449367513c
9ec65cbae2f760e485a1c54df5b19853688d5c91wroweCopyright (C) 2000, 2001 Internet Software Consortium.
e296cd58fd352dd39ca28ccb4da39969a3c0b405wroweSee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe$Id: release,v 1.47 2001/10/16 21:56:31 gson Exp $
8cc01204a878dc5f39bba11aa279564b81b15803wrowePreparing a bind9 release
8cc01204a878dc5f39bba11aa279564b81b15803wroweHere's a rough outline of the steps to follow in preparing a new bind9
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe - Update the README file
8cc01204a878dc5f39bba11aa279564b81b15803wrowe - Send the new README file to webteam@nominum.com at least 48
8cc01204a878dc5f39bba11aa279564b81b15803wrowe hours prior to the planned release and ask them to prepare
8cc01204a878dc5f39bba11aa279564b81b15803wrowe the web pages for the new version. If there have been only
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe minor changes, send context diffs relative to the previous
8cc01204a878dc5f39bba11aa279564b81b15803wrowe release instead.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe - Do a "cvs update" to check that all changes have been committed.
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe - Verify that the file "version" contains the correct version
8cc01204a878dc5f39bba11aa279564b81b15803wrowe number (it should have been incremented after the
8cc01204a878dc5f39bba11aa279564b81b15803wrowe previous release)
e296cd58fd352dd39ca28ccb4da39969a3c0b405wrowe - Update the lib/*/api files as needed. See the libtool
8cc01204a878dc5f39bba11aa279564b81b15803wrowe info file for information about what the various numbers mean.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe - If building from a release branch, check that any important
8cc01204a878dc5f39bba11aa279564b81b15803wrowe bug fixes made on the mainline since the last release have
8cc01204a878dc5f39bba11aa279564b81b15803wrowe been pulled up. You can do this by comparing the CHANGES
8cc01204a878dc5f39bba11aa279564b81b15803wrowe files using the util/check-pullups.pl script. For example,
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe running the script from a mainline tree:
8cc01204a878dc5f39bba11aa279564b81b15803wrowe perl util/check-pullups.pl CHANGES ../9.2/CHANGES
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe This will list all bug fixes on the mainline that are not
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe on the 9.2 release branch.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe shows a clean build and test status for all supported
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe systems and that the tests are actually being run on the
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe version being released (the version can be found in the
8cc01204a878dc5f39bba11aa279564b81b15803wrowe page behind the "Source tar build" link).
1e83c8de3aa48b316b28057d53995272baf1260cwrowe - Check that running "make all_tests" in bin/tests does not
0bcc003d275c6b0a9060d43be89762b218cbc2c7wrowe produce compile errors.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe - Regenerate the documentation by running "make man" (mainline/9.2)
a05bf8787a5ebc31d7ee35ed47daa7bf61d7d8bdwrowe or by running genhtml.sh in doc/arm (9.1 release branch)
a05bf8787a5ebc31d7ee35ed47daa7bf61d7d8bdwrowe and commit it. Note that not all machines have the
8cc01204a878dc5f39bba11aa279564b81b15803wrowe necessary XML tools, but at least trebuchet, cuba,
8cc01204a878dc5f39bba11aa279564b81b15803wrowe and Scanner's machine do.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe - Verify that the documents in doc/misc are up-to-date.
fd17b124e2965430b3cf53126281038f3417b120ake - Update the copyrights. According to tale:
35d1320d3d0d35befecfec36f60ab300c97ed379wrowe Go to the root of the source tree.
3650179099116e01ae64f9eb9f81c1b4efa55f6awrowe The scripts need to be run from there; they reference the util
3650179099116e01ae64f9eb9f81c1b4efa55f6awrowe subdirectory internally.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe $ make distclean
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe ... [I prefer to check out a fresh source tree --gson]
8cc01204a878dc5f39bba11aa279564b81b15803wrowe ... examine output, particularly any files with the "?" type, and
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe ... then edit util/newcopyrights if necessary
8cc01204a878dc5f39bba11aa279564b81b15803wrowe $ cvs ci -m'merge_copyrights' util/copyrights
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe ... examine output, edit as necessary. mail me about anything that
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe ... the script should have been able to do itself. :-)
8cc01204a878dc5f39bba11aa279564b81b15803wrowe $ cvs ci -m'update_copyrights'
1e83c8de3aa48b316b28057d53995272baf1260cwrowe - Announce a CVS freeze if doing an alpha or beta release from
0bcc003d275c6b0a9060d43be89762b218cbc2c7wrowe the mainline, or stop doing pullups if building from a release branch.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe - Run util/altbuild.sh. This is to make sure that
a05bf8787a5ebc31d7ee35ed47daa7bf61d7d8bdwrowe builds using libtool, separate source/object directories, and other
a05bf8787a5ebc31d7ee35ed47daa7bf61d7d8bdwrowe obscure build options work. This script may need some hacking if run
8cc01204a878dc5f39bba11aa279564b81b15803wrowe on anything other than NetBSD. Save the output (it's big) and look
8cc01204a878dc5f39bba11aa279564b81b15803wrowe for error and warning messages.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe cd $top_of_mainline_tree
3650179099116e01ae64f9eb9f81c1b4efa55f6awrowe cd $top_of_9_1_tree
8cc01204a878dc5f39bba11aa279564b81b15803wrowe Alteratively, you can do this after building the kit, by giving
8cc01204a878dc5f39bba11aa279564b81b15803wrowe the kit .tar.gz file as an argument to altbuild.sh instad of
8cc01204a878dc5f39bba11aa279564b81b15803wrowe the CVS tag.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe - If you can (= your system is similar enough to the one Tale is using),
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe check the header files for cruft by running the command
9ec65cbae2f760e485a1c54df5b19853688d5c91wrowe [ This step is quite imperfect and should probably be skipped
10078223775df7373bee05db4423a2074b4e94f7wrowe for now -- Tale ]
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe find lib -name '*.h' -print | xargs perl util/check-includes.pl
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe - Ensure that the JPNIC patch applies cleanly:
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe If you don't have the "iconv" library, you need to get it from
8cc01204a878dc5f39bba11aa279564b81b15803wrowe http://clisp.cons.org/~haible/packages-libiconv.html and install it.
8cc01204a878dc5f39bba11aa279564b81b15803wrowe $ patch -p0 < contrib/idn/mdnkit/patch/bind9/patch.most > patch.out 2>&1
8cc01204a878dc5f39bba11aa279564b81b15803wrowe $ egrep Hunk patch.out
10078223775df7373bee05db4423a2074b4e94f7wrowe All hunks should have applied successfully with no offset or fuzz.
6001c2b751ba380362e79f6882c7c59dd66ea077wrowe If all succeeded but some were offset or had fuzz, the patch will be
6001c2b751ba380362e79f6882c7c59dd66ea077wrowe regenerated at the end of this stage.
0d46e76597d1856f9520ea0639f636d9e282818ewrowe [ Sample on netbsd ... ]
0d46e76597d1856f9520ea0639f636d9e282818ewrowe $ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
d11b7841115068dac9217012fd94df40010bcdc3wrowe $ cd ../../.. ; : cd back to top level
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe $ cp configure configure.orig
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe $ ./configure
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe ... should cleanly compile
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe $ make distclean
2a82c148954b3b0115f5079b6e3222348ee87401wrowe $ mkdir -p /tmp/mdn/{lib,include}
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe $ ./configure --with-mdn=/tmp/mdn --with-iconv="-L/usr/local/lib -liconv"
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe $ LD_LIBRARY_PATH=/usr/local/lib:/tmp/mdn/lib:/usr/lib make
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe ... should cleanly compile
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe [ Some tests will be added to bin/tests/system to validate operation. ]
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe Generate a fresh copy of the diffs:
2a82c148954b3b0115f5079b6e3222348ee87401wrowe $ awk '/^\+\+\+ / {print $2}' $patchd/patch.most |
2a82c148954b3b0115f5079b6e3222348ee87401wrowe while read i; do
2a82c148954b3b0115f5079b6e3222348ee87401wrowe diff -u2 $i.orig $i
2a82c148954b3b0115f5079b6e3222348ee87401wrowe $ cvs diff -u2 configure > $patchd/patch.configure
2a82c148954b3b0115f5079b6e3222348ee87401wrowe $ cvs ci -ko $patchd/patch.*
2a82c148954b3b0115f5079b6e3222348ee87401wrowe - Add a marker line like " --- 9.0.0rc7 released ---"
2a82c148954b3b0115f5079b6e3222348ee87401wrowe to the CHANGES file.
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe - Tag the CVS source tree with the final tag, as in
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe "cvs rtag v9_0_0rc1 bind9" (mainline) or
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe "cvs rtag -r v9_2 v9_2_0rc7 bind9" (release branch).
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe - Build the release kit. This procedure differs
1e83c8de3aa48b316b28057d53995272baf1260cwrowe between the 9.0 release branch and later versions.
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe On the 9.0 release branch,
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe cd <temporary directory>
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe cvs export -r v9_0_0rc7 bind9
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe sh configure
1e83c8de3aa48b316b28057d53995272baf1260cwrowe On the 9.[1-2] release branch or mainline, use the
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe - Build bind9 from the kit on at least one machine
1e83c8de3aa48b316b28057d53995272baf1260cwrowe and test it. Run it as a caching name server.
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe If you can, try resolving some IPv6 addresses and
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe doing queries over IPv6.
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe - If problems are found at this stage, fix them, move the
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe release tag up using "rtag -F", and respin the kit.
1e83c8de3aa48b316b28057d53995272baf1260cwrowe - Sign the distribution files with the ISC signing PGP key
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe and fix the permissions on the signature file:
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe pgp -sba bind-9.2.0rc7.tar.gz -u 0x51BAB2ED
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe - Verify the PGP signature:
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe (Look for the words "Good signature" in the output.)
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe - Prepare a release announcement based on the previous one.
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe - Copy the distribution and PGP signature files to the FTP site:
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe ver=9.2.0rc7
769f52b55c8a1af9eee6358f46e72544bf94e6a5wrowe ssh -n isrv4.pa.vix.com "mkdir /udir/ftp/isc/bind9/$ver"
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe - If there is a companion binary kit for NT, sign it and release it:
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe pgp -sba BIND$ver.zip -u 0x51BAB2ED
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe chmod 644 BIND$ver.zip.asc
f5d85dbf1e689639bdcfae06845bcb17c2490dd9wrowe ssh -n isrv4.pa.vix.com "mkdir /udir/ftp/isc/bind/contrib/ntbind-$ver"
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe isrv4.pa.vix.com:/udir/ftp/isc/bind/contrib/ntbind-$ver
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe - Download using FTP (or Netscape) using the URLs in the release
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe announcement and verify the PGP signature again
fa37f3b5860c420de057e550615a21d3a40a7a06wrowe - Increment the version in the file "version"
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe - Resume doing pullups
ff72463d40dfaec35f4fb3170a82e6e4cb40f597wrowe - Announce the release on bind-announce@isc.org