139 lines
4.6 KiB
Plaintext
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$
|