From fc43ecc7ba23ddce46b9ec7732ff08cd9e5bcc1b Mon Sep 17 00:00:00 2001 From: ajs Date: Wed, 12 Jan 2005 16:41:33 +0000 Subject: 2005-01-12 Andrew J. Schorr * redhat/quagga.spec.in: Pass --enable-gcc-rdynamic to configure to get gcc to link with -rdynamic for better backtraces. When the rpm is upgraded, the restart logic now works as follows: 1. stop watchquagga; 2. stop all routing daemons; 3. restart zebra if it was running; 4. start all routing daemons that were running; and 5. start watchquagga if it was running. --- redhat/quagga.spec.in | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) (limited to 'redhat/quagga.spec.in') diff --git a/redhat/quagga.spec.in b/redhat/quagga.spec.in index a2a3ad16..b22ebc57 100644 --- a/redhat/quagga.spec.in +++ b/redhat/quagga.spec.in @@ -177,7 +177,7 @@ developing OSPF-API and quagga applications. %if %vty_group --enable-vty-group=%vty_group \ %endif ---enable-netlink +--enable-netlink --enable-gcc-rdynamic make %{?_smp_mflags} MAKEINFO="makeinfo --no-split" @@ -273,10 +273,41 @@ if [ ! -e %{_sysconfdir}/vtysh.conf ]; then fi %postun -if [ "$1" -ge "1" ]; then +if [ "$1" -ge 1 ]; then + # Find out which daemons need to be restarted. for daemon in %all_daemons ; do - /etc/rc.d/init.d/${daemon} condrestart >/dev/null 2>&1 + if [ -f /var/lock/subsys/$daemon ]; then + eval restart_$daemon=yes + else + eval restart_$daemon=no + fi done + # Rename restart flags for daemons handled specially. + running_zebra="$restart_zebra" + restart_zebra=no + running_watchquagga="$restart_watchquagga" + restart_watchquagga=no + # Stop watchquagga first. + [ "$running_watchquagga" = yes ] && \ + /etc/rc.d/init.d/watchquagga stop >/dev/null 2>&1 + # Stop all daemons other than zebra and watchquagga. + for daemon in %all_daemons ; do + eval restart=\$restart_${daemon} + [ "$restart" = yes ] && \ + /etc/rc.d/init.d/$daemon stop >/dev/null 2>&1 + done + # Restart zebra. + [ "$running_zebra" = yes ] && \ + /etc/rc.d/init.d/zebra restart >/dev/null 2>&1 + # Start all daemons other than zebra and watchquagga. + for daemon in %all_daemons ; do + eval restart=\$restart_${daemon} + [ "$restart" = yes ] && \ + /etc/rc.d/init.d/$daemon start >/dev/null 2>&1 + done + # Start watchquagga last. + [ "$running_watchquagga" = yes ] && \ + /etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 fi %preun @@ -362,6 +393,10 @@ rm -rf $RPM_BUILD_ROOT %changelog %changelog +* Wed Jan 12 2005 Andrew J. Schorr +- on package upgrade, implement careful, phased restart logic +- use gcc -rdynamic flag when linking for better backtraces + * Wed Dec 22 2004 Andrew J. Schorr - daemonv6_list should contain only IPv6 daemons -- cgit v1.2.1