summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcvsdist <cvsdist@fedoraproject.org>2004-09-09 03:38:18 +0000
committercvsdist <cvsdist@fedoraproject.org>2004-09-09 03:38:18 +0000
commit2b390dd9d6791b485b21f06f93489caf9cb0de84 (patch)
tree75fa3f7fdab0b79b6ea30a994100cae29a29def7
parent82ddc2660daaefbd3c2008dbb8ec1c6ed2b8db35 (diff)
downloadbind-2b390dd9d6791b485b21f06f93489caf9cb0de84.tar.gz
bind-2b390dd9d6791b485b21f06f93489caf9cb0de84.tar.xz
bind-2b390dd9d6791b485b21f06f93489caf9cb0de84.zip
auto-import changelog data from bind-9.2.4rc6-6.src.rpmbind-9_2_4rc6-6
Mon Aug 09 2004 Jason Vas Dias <jvdias@redhat.com> - Fixed bug 129289: bind-chroot install / deinstall - on install, existing config files 'safe_replace'd - with links to chroot copies; on uninstall, moved back.
-rw-r--r--bind.spec102
1 files changed, 80 insertions, 22 deletions
diff --git a/bind.spec b/bind.spec
index c48d32e..cdb8d93 100644
--- a/bind.spec
+++ b/bind.spec
@@ -25,7 +25,7 @@ Patch9: bind-9.2.3rc3-deprecation_msg_shut_up.diff.bz2
Url: http://www.isc.org/products/BIND/
Buildroot: %{_tmppath}/%{name}-root
Version: 9.2.4rc6
-Release: 4
+Release: 6
BuildRequires: openssl-devel gcc glibc-devel >= 2.2.5-26 glibc-kernheaders >= 2.4-7.10 libtool pkgconfig fileutils tar
Requires(pre,preun): shadow-utils
@@ -99,32 +99,77 @@ based off code from Jan "Yenya" Kasprzak <kas@fi.muni.cz>
%attr(770,named,named) %prefix/var/named/slaves
%post chroot
-if test -r /etc/sysconfig/named && grep -q ^ROOTDIR= /etc/sysconfig/named
+safe_replace()
+{
+ f1=$1;
+ f2=$2;
+ o=$3;
+ g=$4;
+ m=$5;
+ dc=$6;
+ if /usr/bin/test "x" = "x$f1" -o "x" = "x$f2" -o "$f1" = "$f2"; then
+ return 1;
+ fi;
+ if /usr/bin/test -r $f1 -a -s $f1 -a '!' -L $f1; then
+ if /usr/bin/test -r $f2 -a -s $f2 -a '!' -L $f2; then
+ /bin/mv $f1 $f1'.rpmsave' >/dev/null 2>&1 || :;
+ /bin/mv $f2 $f1 > /dev/null 2>&1 || :;
+ else
+ /bin/rm -f $f2 > /dev/null 2>&1 || :;
+ fi;
+ /bin/mv $f1 $f2 > /dev/null 2>&1 || :;
+ /bin/ln -s $f2 $f1 > /dev/null 2>&1 || :;
+ else
+ /bin/rm -f $f1 > /dev/null 2>&1 || :;
+ if /usr/bin/test -r $f2 -a -s $f2; then
+ /bin/ln -s $f2 $f1 > /dev/null 2>&1 || :;
+ else
+ if /usr/bin/test "x$dc" != "x"; then
+ echo $dc > $f2;
+ /bin/ln -s $f2 $f1 > /dev/null 2>&1 || :;
+ else
+ return 2;
+ fi;
+ fi;
+ fi;
+ chown $o':'$g $f2;
+ chmod $m $f2;
+ return 0;
+}
+if /usr/bin/test -r /etc/sysconfig/named && /bin/egrep -q '^ROOTDIR=' /etc/sysconfig/named
then :
else
-echo ROOTDIR="%{prefix}" >>/etc/sysconfig/named
+echo ROOTDIR="%{prefix}" >>/etc/sysconfig/named;
fi
-if test -r /etc/localtime
+if /usr/bin/test -r /etc/localtime
then
- cp -fp /etc/localtime "%{prefix}/etc/localtime"
+ /bin/cp -fp /etc/localtime "%{prefix}/etc/localtime"
fi
-if test -r /etc/rndc.key
-then
- cp -fp /etc/rndc.key "%{prefix}/etc/rndc.key"
- chown root:named "%{prefix}/etc/rndc.key"
-fi
-if test -r /etc/named.conf
-then
- cp -fp /etc/named.conf "%{prefix}/etc/named.conf"
- chown root:named "%{prefix}/etc/named.conf"
-fi
-if test -r /etc/named.custom
-then
- cp -fp /etc/named.custom "%{prefix}/etc/named.custom"
- chown root:named "%{prefix}/etc/named.custom"
-fi
-for i in `ls -1d /var/named/* | grep -v /var/named/chroot`; do
- cp -rf $i "%{prefix}/var/named/" 2> /dev/null
+safe_replace /etc/rndc.key "%{prefix}/etc/rndc.key" root named 644 '';
+r=$?;
+if /usr/bin/test "$r" -eq 2; then
+ /usr/bin/rm -f /etc/rndc.key
+ echo 'key "rndckey" {
+ algorithm hmac-md5;
+ secret "'`/usr/sbin/dns-keygen`'"
+};' > /etc/rndc.key;
+ safe_replace /etc/rndc.key "%{prefix}/etc/rndc.key" root named 644 '';
+fi;
+safe_replace /etc/named.custom "%{prefix}/etc/named.custom" root named 644 '' || :;
+if /usr/bin/test "$?" -eq "0"; then
+ safe_replace /etc/named.conf "%{prefix}/etc/named.conf" root named 644 'include "/etc/named.custom";\ninclude "/etc/rndc.key";'
+else
+ safe_replace /etc/named.conf "%{prefix}/etc/named.conf" root named 644 'include "/etc/rndc.key";'
+fi;
+/usr/bin/find /var/named -type f | /bin/egrep -v /var/named/chroot | while read f;
+do
+ d=`/usr/bin/dirname $f`;
+ if test '!' -d "%{prefix}$d"; then
+ mkdir "%{prefix}$d";
+ chown named:named "%{prefix}$d";
+ chmod 655 "%{prefix}$d";
+ fi;
+ safe_replace $f "%{prefix}$f" named named 644 '' || :;
done
mknod "%{prefix}/dev/random" c 1 8
mknod "%{prefix}/dev/zero" c 1 5
@@ -138,6 +183,14 @@ fi
%preun chroot
if [ "$1" = "0" ]; then
+ /usr/bin/find /var/named/chroot -type f | while read f;
+ do
+ F=`echo $f | sed 's#/var/named/chroot##'`;
+ if /usr/bin/test -L $F && test `/usr/bin/readlink $F` = $f; then
+ /bin/rm -f $F;
+ /bin/mv $f $F;
+ fi;
+ done
if test -r /etc/sysconfig/named && grep -q ^ROOTDIR= /etc/sysconfig/named
then
grep -v ROOTDIR="%{prefix}" /etc/sysconfig/named > /tmp/named
@@ -335,6 +388,11 @@ rm -rf ${RPM_BUILD_ROOT} ${RPM_BUILD_DIR}/%{name}-%{version}
%endif
%changelog
+* Mon Aug 9 2004 Jason Vas Dias <jvdias@redhat.com>
+- Fixed bug 129289: bind-chroot install / deinstall
+- on install, existing config files 'safe_replace'd
+- with links to chroot copies; on uninstall, moved back.
+
* Fri Aug 6 2004 Jason Vas Dias <jvdias@redhat.com>
- Fixed bug 129258: "${prefix}/var/tmp" typo in spec