freebsd-nq/FREEBSD-Upgrade
2009-05-31 05:20:54 +00:00

139 lines
4.6 KiB
Plaintext

FreeBSD maintainer's guide to updating BIND 9
=============================================
1) Obtain the latest source distribution from the ISC's FTP server
(ftp://ftp.isc.org/isc/bind9/)
2) Check out the head of the subversion "vendor branch"
svn co $REPO/vendor/bind9/dist
NOTE: For RELENG_6 (BIND 9.3.x) s/dist/dist-9.3/ throughout this file
3) Unpack the tarball in a suitable directory:
tar zxvf bind-9.<x.y>.tar.gz -X dist/FREEBSD-Xlist
Check to see if any files have been added or deleted using
diff -ur dist bind-9.<x.y> -x \.svn | grep 'Only in'
4) Copy new files over the old ones:
cp -Rp bind-9.<x.y>/* dist/
5) Double-check for changes using 'svn status'
6) Use 'svn add' and 'svn rm' to bring dist up to date for files found above.
Update FREEBSD-Xlist as needed.
The files in vendor/bind9/dist should now look exactly like those in the
ISC sources, minus the files/directories in FREEBSD-Xlist above.
Carefully check the output of 'svn status' and 'svn diff'
It's not if you're paranoid, it's if you are paranoid enough
7) Commit the update to the vendor files:
cd dist ; svn ci -m "Vendor import of BIND 9.X.Y"
svn cp $REPO/vendor/bind9/dist $REPO/vendor/bind9/${version}
(this is a server-side operation, you dont have to check it out)
8) Update the files in src/contrib/bind9:
cd head/contrib/bind9
Make sure you are up to date:
svn update ; svn status
svn merge $REPO/vendor/bind9/dist .
Resolve conflicts (if any)
Carefully check the output of 'svn status' and 'svn diff'
NOTE: You may need 2 copies of head/contrib/bind9 at this point,
one to do the work in steps 9 and 10 below, and a clean
version to commit in step 13.
9) Remove any references to the {bin,lib}/tests and docutil
directories from the configure and Makefile templates:
$ sed -i.orig -e '/\/tests/d; /docutil/d; /\/xsl/d;' \
configure.in Makefile.in */Makefile.in
Please do not commit this change. You only need this to generate config.h.
10) Generate and run configure:
NOTE: Disabling libxml and idn is temporary, adding support
for these features is planned.
aclocal ; autoheader ; autoconf
$ ./configure --prefix=/usr \
--without-libxml2 --without-idn \
--infodir=/usr/share/info --mandir=/usr/share/man \
--enable-threads --disable-ipv6 \
--enable-getifaddrs --disable-linux-caps \
--with-openssl=/usr --with-randomdev=/dev/random
Note that we intentionally disable IPv6 support on the configure
command line; src/lib/bind/config.mk will re-enable it at compile
time if WITHOUT_INET6 is not defined.
11) Copy the following generated files to src/lib/bind:
Path in src/contrib/bind9 Path in src/lib/bind
------------------------------------------------------------
s=../../lib/bind
cp config.h ${s}/config.h
cp lib/isc/include/isc/platform.h ${s}/isc/isc/platform.h
cp lib/lwres/include/lwres/netdb.h ${s}/lwres/lwres/netdb.h
cp lib/lwres/include/lwres/platform.h ${s}/lwres/lwres/platform.h
Do not commit any other file that was modified or created in
steps 6) or 7).
12) cd src/lib/bind/dns && make -DMAINTAINER_MODE generate && rm gen
13) Test build the updated files with a clean /usr/obj and empty src.conf
The following directories contain Makefiles for bits and pieces of
BIND 9:
FreeBSD directory ISC directory
========================================================
src/lib/bind bind9/lib
src/lib/bind/bind9 bind9/lib/bind9
src/lib/bind/dns bind9/lib/dns
src/lib/bind/isc bind9/lib/isc
src/lib/bind/isccc bind9/lib/isccc
src/lib/bind/isccfg bind9/lib/isccfg
src/lib/bind/lwres bind9/lib/lwres
src/share/doc/bind9 bind9/doc/{arm,misc}
src/usr.bin/dig bind9/bin/dig
src/usr.bin/host bind9/bin/dig
src/usr.bin/nslookup bind9/bin/dig
src/usr.bin/nsupdate bind9/bin/nsupdate
src/usr.sbin/dnssec-dsfromkey bind9/bin/dnssec
src/usr.sbin/dnssec-keygen bind9/bin/dnssec
src/usr.sbin/dnssec-keyfromlabel bind9/bin/dnssec
src/usr.sbin/dnssec-signzone bind9/bin/dnssec
src/usr.sbin/named bind9/bin/named
src/usr.sbin/named-checkconf bind9/bin/check
src/usr.sbin/named-checkzone bind9/bin/check
src/usr.sbin/rndc bind9/bin/rndc
src/usr.sbin/rndc-confgen bind9/bin/rndc
Make sure that the lists of sources, headers and man pages in each
FreeBSD Makefile accurately reflects those in the corresponding ISC
Makefile. Please strive to keep those lists in the same order and
with line breaks in the same places to ease future comparisons.
A) Build and test.
B) Lather, rinse, repeat.
C) Commit when everything builds cleanly and works properly.
-- des@FreeBSD.org
-- dougb@FreeBSD.org
$FreeBSD$