distro/redhat: Update to support CentOS/RHEL/Fedora, upstart/init/systemd
* redhat/quagga.spec.in: Update to support CentOS, RHEL and Fedora, and
support the various init systems across different versions of these
distros, e.g. upstart/init/systemd.
Clean up various warnings from rpmlint.
Remove configure options that are gone.
A few edits and commit message by:
Paul Jakma <paul.jakma@hpe.com> / <paul@jakma.org>
diff --git a/redhat/Makefile.am b/redhat/Makefile.am
index 4e99855..fadfe64 100644
--- a/redhat/Makefile.am
+++ b/redhat/Makefile.am
@@ -3,4 +3,6 @@
isisd.service ospf6d.init ospf6d.service ospfd.init ospfd.service \
quagga.logrotate quagga.pam quagga.spec \
quagga.sysconfig ripd.init ripd.service ripngd.init ripngd.service \
- watchquagga.init pimd.init pimd.service zebra.init zebra.service
+ watchquagga.init pimd.init pimd.service zebra.init zebra.service \
+ README.rpm_build.md
+
diff --git a/redhat/README.rpm_build.md b/redhat/README.rpm_build.md
new file mode 100644
index 0000000..3e8fa05
--- /dev/null
+++ b/redhat/README.rpm_build.md
@@ -0,0 +1,128 @@
+Building your own Quagga RPM
+============================
+(Tested on CentOS 6, CentOS 7 and Fedora 22.)
+
+1. Install the following packages to build the RPMs:
+
+ yum install git autoconf automake libtool make gawk readline-devel \
+ texinfo dejagnu net-snmp-devel groff rpm-build net-snmp-devel \
+ libcap-devel texi2html
+
+ (use `dnf install` on new Fedora instead of `yum install `)
+
+2. Checkout Quagga under a **unpriviledged** user account
+
+ git clone git://git.savannah.nongnu.org/quagga.git quagga
+
+3. Run Bootstrap and make distribution tar.gz
+
+ cd quagga
+ ./bootstrap.sh
+ ./configure --with-pkg-extra-version=-MyRPMVersion
+ make dist
+
+ Note: configure parameters are not important for the RPM building - except the
+ `with-pkg-extra-version` if you want to give the RPM a specific name to
+ mark your own unoffical build
+
+4. Create RPM directory structure and populate with sources
+
+ mkdir rpmbuild
+ mkdir rpmbuild/SOURCES
+ mkdir rpmbuild/SPECS
+ cp redhat/*.spec rpmbuild/SPECS/
+ cp quagga*.tar.gz rpmbuild/SOURCES/
+
+5. Edit rpm/SPECS/quagga.spec with configuration as needed
+ Look at the beginning of the file and adjust the following parameters to enable
+ or disable features as required:
+
+ ################# Quagga configure options ####################
+ # with-feature options
+ %{!?with_snmp: %global with_snmp 1 }
+ %{!?with_vtysh: %global with_vtysh 1 }
+ %{!?with_ospf_te: %global with_ospf_te 1 }
+ %{!?with_opaque_lsa: %global with_opaque_lsa 1 }
+ %{!?with_tcp_zebra: %global with_tcp_zebra 0 }
+ %{!?with_vtysh: %global with_vtysh 1 }
+ %{!?with_pam: %global with_pam 1 }
+ %{!?with_ospfclient: %global with_ospfclient 1 }
+ %{!?with_ospfapi: %global with_ospfapi 1 }
+ %{!?with_irdp: %global with_irdp 1 }
+ %{!?with_rtadv: %global with_rtadv 1 }
+ %{!?with_isisd: %global with_isisd 1 }
+ %{!?with_pimd: %global with_pimd 1 }
+ %{!?with_shared: %global with_shared 1 }
+ %{!?with_multipath: %global with_multipath 64 }
+ %{!?quagga_user: %global quagga_user quagga }
+ %{!?vty_group: %global vty_group quaggavt }
+ %{!?with_fpm: %global with_fpm 0 }
+ %{!?with_watchquagga: %global with_watchquagga 1 }
+
+6. Build the RPM
+
+ rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/quagga.spec
+
+DONE.
+
+If all works correctly, then you should end up with the RPMs under `rpmbuild/RPMS`
+and the Source RPM under `rpmbuild/SRPMS`
+
+
+Enabling daemons after installation of the package:
+---------------------------------------------------
+
+### init.d based systems (ie CentOS 6):
+
+1. Enable the daemons as needed to run after boot (Zebra is mandatory)
+
+ chkconfig zebra on
+ chkconfig ospfd on
+ chkconfig ospf6d on
+ chkconfig bgpd on
+ ... etc
+
+2. If you want to run `watchquagga`, then configure `/etc/sysconfig/quagga`
+ and uncomment the line with the daemons for `watchquagga` to monitor,
+ then enable watchquagga
+
+ chkconfig watchquagga on
+
+3. Check your firewall / IPtables to make sure the routing protocols are
+allowed.
+
+4. Start the daemons (or reboot)
+
+ service zebra start
+ service bgpd start
+ service ospfd start
+ ... etc
+
+Configuration is stored in `/etc/quagga/*.conf` files.
+
+
+### systemd based systems (ie CentOS 7, Fedora 22)
+
+1. Enable the daemons as needed to run after boot (Zebra is mandatory)
+
+ systemctl enable zebra
+ systemctl enable ospfd
+ systemctl enable ospf6d
+ systemctl enable bgpd
+ ... etc
+
+ Note: There is no watchquagga on systemd based systems. Systemd contains
+ the functionality of monitoring and restarting daemons.
+
+2. Check your firewall / IPtables to make sure the routing protocols are
+allowed.
+
+3. Start the daemons (or reboot)
+
+ systemctl start zebra
+ systemctl start bgpd
+ systemctl start ospfd
+ ... etc
+
+Configuration is stored in `/etc/quagga/*.conf` files.
+
diff --git a/redhat/quagga.spec.in b/redhat/quagga.spec.in
index b156475..a1263d1 100644
--- a/redhat/quagga.spec.in
+++ b/redhat/quagga.spec.in
@@ -2,6 +2,7 @@
#
# Some can be overriden on rpmbuild commandline with:
# rpmbuild --define 'variable value'
+# (use any value, ie 1 for flag "with_XXXX" definitions)
#
# E.g. rpmbuild --define 'release_rev 02' may be useful if building
# rpms again and again on the same day, so the newer rpms can be installed.
@@ -9,107 +10,141 @@
####################### Quagga configure options #########################
# with-feature options
-%{!?with_snmp: %define with_snmp 1 }
-%{!?with_vtysh: %define with_vtysh 1 }
-%{!?with_ospf_te: %define with_ospf_te 1 }
-%{!?with_nssa: %define with_nssa 1 }
-%{!?with_opaque_lsa: %define with_opaque_lsa 1 }
-%{!?with_tcp_zebra: %define with_tcp_zebra 0 }
-%{!?with_vtysh: %define with_vtysh 1 }
-%{!?with_pam: %define with_pam 1 }
-%{!?with_ospfclient: %define with_ospfclient 1 }
-%{!?with_ospfapi: %define with_ospfapi 1 }
-%{!?with_irdp: %define with_irdp 1 }
-%{!?with_rtadv: %define with_rtadv 1 }
-%{!?with_isisd: %define with_isisd 1 }
-%{!?with_pimd: %define with_pimd 1 }
-%{!?with_shared: %define with_shared 1 }
-%{!?with_multipath: %define with_multipath 64 }
-%{!?quagga_user: %define quagga_user quagga }
-%{!?vty_group: %define vty_group quaggavty }
+%{!?with_snmp: %global with_snmp 1 }
+%{!?with_vtysh: %global with_vtysh 1 }
+%{!?with_tcp_zebra: %global with_tcp_zebra 0 }
+%{!?with_vtysh: %global with_vtysh 1 }
+%{!?with_pam: %global with_pam 1 }
+%{!?with_ospfclient: %global with_ospfclient 1 }
+%{!?with_ospfapi: %global with_ospfapi 1 }
+%{!?with_irdp: %global with_irdp 1 }
+%{!?with_rtadv: %global with_rtadv 1 }
+%{!?with_isisd: %global with_isisd 1 }
+%{!?with_pimd: %global with_pimd 1 }
+%{!?with_shared: %global with_shared 1 }
+%{!?with_multipath: %global with_multipath 64 }
+%{!?quagga_user: %global quagga_user quagga }
+%{!?vty_group: %global vty_group quaggavt }
+%{!?with_fpm: %global with_fpm 0 }
+%{!?with_watchquagga: %global with_watchquagga 1 }
# path defines
%define _sysconfdir /etc/quagga
-%define zeb_src %{_builddir}/%{name}-%{version}
+%define zeb_src %{_builddir}/%{name}-%{quaggaversion}
%define zeb_rh_src %{zeb_src}/redhat
%define zeb_docs %{zeb_src}/doc
# defines for configure
-%define _libexecdir %{_exec_prefix}/libexec/quagga
-%define _libdir %{_exec_prefix}/%{_lib}/quagga
-%define _includedir %{_prefix}/include
%define _localstatedir /var/run/quagga
############################################################################
-####################### distro specific tweaks #############################
-# default distro. Override with rpmbuild -D "dist XXX"
-%{expand: %%define default_dist %(rpm -q --qf 'fc%%{VERSION}' fedora-release | grep -v 'not installed')}
-%{!?dist: %define dist %{default_dist}}
+#### Version String tweak
+# Remove invalid characters form version string and replace with _
+%{expand: %%define rpmversion %(echo '@VERSION@' | tr [:blank:]- _ )}
+%define quaggaversion @VERSION@
-# as distros change packages we depend on, our Requires have to change, sadly.
-%define quagga_buildreqs texi2html texinfo autoconf pam-devel
-%define quagga_buildreqs %{expand:%{quagga_buildreqs}} patch libcap-devel
+#### Check version of texi2html
+# Old versions don't support "--number-footnotes" option.
+%{expand: %%global texi2htmlversion %(rpm -q --qf '%%{VERSION}' texi2html | cut -d. -f1 )}
-# FC4 and 5 split texi2html out of tetex package.
-%define quagga_buildreqs %{expand:%{quagga_buildreqs}} texi2html
+#### Check for systemd or init.d (upstart)
+# Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7)
+%{expand: %%global initsystem %(if [[ `/sbin/init --version 2> /dev/null` =~ upstart ]]; then echo upstart; elif [[ `systemctl` =~ -\.mount ]]; then echo systemd; fi)}
+#
+# If init system is systemd, then always disable watchquagga
+#
+%if "%{initsystem}" == "systemd"
+ # Note: For systems with systemd, watchquagga will NOT be built. Systemd
+ # takes over the role of restarting crashed processes. Value will
+ # be overwritten with 0 below for systemd independent on the setting here
+ %global with_watchquagga 0
+%endif
-# man page probably needs groff for groff_ms macros
-%define quagga_buildreqs %{expand:%{quagga_buildreqs}} groff
-
-############################################################################
+# if FPM is enabled, then enable tcp_zebra as well
+#
+%if %{with_fpm}
+ %global with_tcp_zebra 1
+%endif
# misc internal defines
%{!?quagga_uid: %define quagga_uid 92 }
%{!?quagga_gid: %define quagga_gid 92 }
+%{!?vty_gid: %define vty_gid 85 }
+
%define daemon_list zebra ripd ospfd bgpd
%define daemonv6_list ripngd ospf6d
%if %{with_isisd}
-%define daemon_other isisd
+%define daemon_isisd isisd
%else
-%define daemon_other ""
+%define daemon_isisd ""
%endif
-%define all_daemons %{daemon_list} %{daemonv6_list} %{daemon_other} watchquagga
+%if %{with_pimd}
+%define daemon_pimd pimd
+%else
+%define daemon_pimd ""
+%endif
+
+%if %{with_watchquagga}
+%define daemon_watchquagga watchquagga
+%else
+%define daemon_watchquagga ""
+%endif
+
+%define all_daemons %{daemon_list} %{daemonv6_list} %{daemon_isisd} %{daemon_pimd} %{daemon_watchquagga}
# allow build dir to be kept
-%{!?keep_build: %define keep_build 0 }
+%{!?keep_build: %global keep_build 0 }
#release sub-revision (the two digits after the CONFDATE)
%{!?release_rev: %define release_rev 01 }
Summary: Routing daemon
-Name: quagga
-Version: @VERSION@
-Release: @CONFDATE@%{release_rev}
-License: GPL
-Group: System Environment/Daemons
-Source0: http://www.quagga.net/snapshots/cvs/%{name}-%{version}.tar.gz
-URL: http://www.quagga.net
+Name: quagga
+Version: %{rpmversion}
+Release: @CONFDATE@%{release_rev}%{?dist}
+License: GPLv2+
+Group: System Environment/Daemons
+Source0: http://download.savannah.gnu.org/releases/quagga/%{name}-%{quaggaversion}.tar.gz
+URL: http://www.quagga.net
+Requires: ncurses
+Requires(pre): /sbin/install-info
+Requires(preun): /sbin/install-info
+Requires(post): /sbin/install-info
+BuildRequires: texi2html texinfo autoconf patch libcap-devel groff
%if %{with_snmp}
BuildRequires: net-snmp-devel
-Requires(pre): net-snmp
+Requires: net-snmp
%endif
%if %{with_vtysh}
BuildRequires: readline readline-devel ncurses ncurses-devel
-Requires(pre): ncurses
+Requires: ncurses
%endif
-BuildRequires: %{quagga_buildreqs}
+%if %{with_pam}
+BuildRequires: pam-devel
+Requires: pam
+%endif
+%if "%{initsystem}" == "systemd"
+BuildRequires: systemd
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+%else
# Initscripts > 5.60 is required for IPv6 support
Requires(pre): initscripts >= 5.60
-Requires(pre): ncurses pam
-Requires(pre): /sbin/install-info
-Provides: routingdaemon
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-Obsoletes: bird gated mrt zebra
+%endif
+Provides: routingdaemon = %{version}-%{release}
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+Obsoletes: bird gated mrt zebra quagga-sysvinit
%description
Quagga is a free software that manages TCP/IP based routing
protocol. It takes multi-server and multi-thread approach to resolve
the current complexity of the Internet.
-Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, and RIPng.
+Quagga supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng and PIM.
Quagga is intended to be used as a Route Server and a Route Reflector. It is
not a toolkit, it provides full routing power under a new architecture.
@@ -127,13 +162,14 @@
%package devel
Summary: Header and object files for quagga development
Group: System Environment/Daemons
+Requires: %{name} = %{version}-%{release}
%description devel
The quagga-devel package contains the header and object files neccessary for
developing OSPF-API and quagga applications.
%prep
-%setup -q
+%setup -q -n quagga-%{quaggaversion}
%build
@@ -148,6 +184,11 @@
#CFLAGS="${CFLAGS} -Wpacked -Wpadded"
%configure \
+ --sysconfdir=%{_sysconfdir} \
+ --libdir=%{_libdir} \
+ --libexecdir=%{_libexecdir} \
+ --localstatedir=%{_localstatedir} \
+ --disable-werror \
%if !%{with_shared}
--disable-shared \
%endif
@@ -160,15 +201,6 @@
%if %{with_tcp_zebra}
--enable-tcp-zebra \
%endif
-%if %{with_nssa}
- --enable-nssa \
-%endif
-%if %{with_opaque_lsa}
- --enable-opaque-lsa \
-%endif
-%if %{with_ospf_te}
- --enable-ospf-te \
-%endif
%if %{with_vtysh}
--enable-vtysh \
%endif
@@ -200,57 +232,79 @@
%if %{with_pam}
--with-libpam \
%endif
-%if %quagga_user
+%if 0%{?quagga_user:1}
--enable-user=%quagga_user \
--enable-group=%quagga_user \
%endif
-%if %vty_group
+%if 0%{?vty_group:1}
--enable-vty-group=%vty_group \
%endif
---enable-netlink --enable-gcc-rdynamic
+%if %{with_fpm}
+ --enable-fpm \
+%else
+ --disable-fpm \
+%endif
+%if %{with_watchquagga}
+ --enable-watchquagga \
+%else
+ --disable-watchquagga \
+%endif
+ --enable-gcc-rdynamic
make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
pushd doc
+%if %{texi2htmlversion} < 5
+texi2html --number-sections quagga.texi
+%else
texi2html --number-footnotes --number-sections quagga.texi
+%endif
popd
%install
-rm -rf $RPM_BUILD_ROOT
-
-install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig,logrotate.d,pam.d} \
- $RPM_BUILD_ROOT/var/log/quagga $RPM_BUILD_ROOT%{_infodir}
-
-make install \
- DESTDIR=$RPM_BUILD_ROOT
+mkdir -p %{buildroot}/etc/{quagga,sysconfig,logrotate.d,pam.d} \
+ %{buildroot}/var/log/quagga %{buildroot}%{_infodir}
+make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install
# Remove this file, as it is uninstalled and causes errors when building on RH9
-rm -rf $RPM_BUILD_ROOT/usr/share/info/dir
+rm -rf %{buildroot}/usr/share/info/dir
-# install etc sources
+# install /etc sources
+%if "%{initsystem}" == "systemd"
+mkdir -p %{buildroot}%{_unitdir}
+for daemon in %{all_daemons} ; do
+ if [ x"${daemon}" != x"" ] ; then
+ install %{zeb_rh_src}/${daemon}.service \
+ %{buildroot}%{_unitdir}/${daemon}.service
+ fi
+done
+%else
+mkdir -p %{buildroot}/etc/rc.d/init.d
for daemon in %{all_daemons} ; do
if [ x"${daemon}" != x"" ] ; then
install %{zeb_rh_src}/${daemon}.init \
- $RPM_BUILD_ROOT/etc/rc.d/init.d/${daemon}
+ %{buildroot}/etc/rc.d/init.d/${daemon}
fi
done
+%endif
+
install -m644 %{zeb_rh_src}/quagga.pam \
- $RPM_BUILD_ROOT/etc/pam.d/quagga
+ %{buildroot}/etc/pam.d/quagga
install -m644 %{zeb_rh_src}/quagga.logrotate \
- $RPM_BUILD_ROOT/etc/logrotate.d/quagga
+ %{buildroot}/etc/logrotate.d/quagga
install -m644 %{zeb_rh_src}/quagga.sysconfig \
- $RPM_BUILD_ROOT/etc/sysconfig/quagga
-install -d -m750 $RPM_BUILD_ROOT/var/run/quagga
+ %{buildroot}/etc/sysconfig/quagga
+install -d -m750 %{buildroot}/var/run/quagga
%pre
# add vty_group
-%if %vty_group
+%if 0%{?vty_group:1}
if getent group %vty_group > /dev/null ; then : ; else \
- /usr/sbin/groupadd -r %vty_group > /dev/null || : ; fi
+ /usr/sbin/groupadd -r -g %vty_gid %vty_group > /dev/null || : ; fi
%endif
# add quagga user and group
-%if %quagga_user
+%if 0%{?quagga_user:1}
# Ensure that quagga_gid gets correctly allocated
if getent group %quagga_user >/dev/null; then : ; else \
/usr/sbin/groupadd -g %quagga_gid %quagga_user > /dev/null || : ; \
@@ -292,77 +346,145 @@
zebra_spec_add_service pimd 2611/tcp "PIMd vty"
%endif
-for daemon in %daemon_list ; do
+%if "%{initsystem}" == "systemd"
+for daemon in %all_daemons ; do
+ %systemd_post ${daemon}.service
+done
+%else
+for daemon in %all_daemons ; do
/sbin/chkconfig --add ${daemon}
done
+%endif
/sbin/install-info %{_infodir}/quagga.info.gz %{_infodir}/dir
# Create dummy files if they don't exist so basic functions can be used.
if [ ! -e %{_sysconfdir}/zebra.conf ]; then
echo "hostname `hostname`" > %{_sysconfdir}/zebra.conf
-%if %{quagga_user}
- chown %quagga_user:%quagga_user %{_sysconfdir}/zebra.conf
+%if 0%{?quagga_user:1}
+ chown %quagga_user:%quagga_user %{_sysconfdir}/zebra.conf*
%endif
chmod 640 %{_sysconfdir}/zebra.conf
fi
+for daemon in %{all_daemons} ; do
+ if [ ! -e %{_sysconfdir}/${daemon}.conf ]; then
+ touch %{_sysconfdir}/${daemon}.conf
+ %if 0%{?quagga_user:1}
+ chown %quagga_user:%quagga_user %{_sysconfdir}/${daemon}.conf*
+ %endif
+ fi
+done
+%if %{with_watchquagga}
+ # No config for watchquagga - this is part of /etc/sysconfig/quagga
+ rm -f %{_sysconfdir}/watchquagga.*
+%endif
+
if [ ! -e %{_sysconfdir}/vtysh.conf ]; then
touch %{_sysconfdir}/vtysh.conf
chmod 640 %{_sysconfdir}/vtysh.conf
+%if 0%{?vty_group:1}
+ chown quagga:%{vty_group} %{_sysconfdir}/vtysh.conf*
+%endif
fi
%postun
if [ "$1" -ge 1 ]; then
# Find out which daemons need to be restarted.
for daemon in %all_daemons ; do
- if [ -f /var/lock/subsys/$daemon ]; then
- eval restart_$daemon=yes
+ if [ -f /var/lock/subsys/${daemon} ]; then
+ eval restart_${daemon}=yes
else
- eval restart_$daemon=no
+ 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.
- # Avoid postun scriptlet error if watchquagga is not running.
- [ "$running_watchquagga" = yes ] && \
- /etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 || :
+ %if %{with_watchquagga}
+ running_watchquagga="$restart_watchquagga"
+ restart_watchquagga=no
+ %endif
+
+ %if "%{initsystem}" == "systemd"
+ ##
+ ## Systemd Version
+ ##
+ # No watchquagga for systemd version
+ #
+ # Stop all daemons other than zebra.
+ for daemon in %all_daemons ; do
+ eval restart=\$restart_${daemon}
+ [ "$restart" = yes ] && \
+ %systemd_postun ${daemon}.service
+ done
+ # Restart zebra.
+ [ "$running_zebra" = yes ] && \
+ %systemd_postun_with_restart $daemon.service
+ # Start all daemons other than zebra.
+ for daemon in %all_daemons ; do
+ eval restart=\$restart_${daemon}
+ [ "$restart" = yes ] && \
+ %systemd_post ${daemon}.service
+ done
+ %else
+ ##
+ ## init.d Version
+ ##
+ %if %{with_watchquagga}
+ # Stop watchquagga first.
+ [ "$running_watchquagga" = yes ] && \
+ /etc/rc.d/init.d/watchquagga stop >/dev/null 2>&1
+ %endif
+ # 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
+ %if %{with_watchquagga}
+ # Start watchquagga last.
+ # Avoid postun scriptlet error if watchquagga is not running.
+ [ "$running_watchquagga" = yes ] && \
+ /etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 || :
+ %endif
+ %endif
fi
-/sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
%preun
-if [ "$1" = "0" ]; then
- for daemon in %all_daemons ; do
- /etc/rc.d/init.d/${daemon} stop >/dev/null 2>&1
- /sbin/chkconfig --del ${daemon}
- done
- /sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
-fi
+%if "%{initsystem}" == "systemd"
+ ##
+ ## Systemd Version
+ ##
+ if [ "$1" = "0" ]; then
+ for daemon in %all_daemons ; do
+ %systemd_preun ${daemon}.service
+ done
+ fi
+%else
+ ##
+ ## init.d Version
+ ##
+ if [ "$1" = "0" ]; then
+ for daemon in %all_daemons ; do
+ /etc/rc.d/init.d/${daemon} stop >/dev/null 2>&1
+ /sbin/chkconfig --del ${daemon}
+ done
+ fi
+%endif
+/sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
%clean
-%if !%{keep_build}
-rm -rf $RPM_BUILD_ROOT
+%if !0%{?keep_build:1}
+rm -rf %{buildroot}
%endif
%files
@@ -371,26 +493,27 @@
%doc doc/quagga.html
%doc doc/mpls
%doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO
-%if %{quagga_user}
+%if 0%{?quagga_user:1}
%dir %attr(751,%quagga_user,%quagga_user) %{_sysconfdir}
%dir %attr(750,%quagga_user,%quagga_user) /var/log/quagga
%dir %attr(751,%quagga_user,%quagga_user) /var/run/quagga
%else
%dir %attr(750,root,root) %{_sysconfdir}
%dir %attr(750,root,root) /var/log/quagga
-%dir %attr(755,root,root) /usr/share/info
%dir %attr(750,root,root) /var/run/quagga
%endif
-%if %{vty_group}
+%if 0%{?vty_group:1}
%attr(750,%quagga_user,%vty_group) %{_sysconfdir}/vtysh.conf.sample
%endif
-%{_infodir}/*info*
+%{_infodir}/quagga.info.gz
%{_mandir}/man*/*
%{_sbindir}/zebra
%{_sbindir}/ospfd
%{_sbindir}/ripd
%{_sbindir}/bgpd
-%{_sbindir}/watchquagga
+%if %{with_watchquagga}
+ %{_sbindir}/watchquagga
+%endif
%{_sbindir}/ripngd
%{_sbindir}/ospf6d
%if %{with_pimd}
@@ -399,17 +522,33 @@
%if %{with_isisd}
%{_sbindir}/isisd
%endif
-%dir %attr(755,root,root) %{_libdir}
%if %{with_shared}
-%dir %{_libdir}
-%{_libdir}/lib*.so
-%{_libdir}/lib*.so.*
+%attr(755,root,root) %{_libdir}/lib*.so
+%attr(755,root,root) %{_libdir}/lib*.so.*
%endif
%if %{with_vtysh}
%{_bindir}/*
%endif
%config /etc/quagga/[!v]*
-%config /etc/rc.d/init.d/*
+%if "%{initsystem}" == "systemd"
+ %config %{_unitdir}/*.service
+%else
+ %config /etc/rc.d/init.d/zebra
+ %if %{with_watchquagga}
+ %config /etc/rc.d/init.d/watchquagga
+ %endif
+ %config /etc/rc.d/init.d/ripd
+ %config /etc/rc.d/init.d/ospfd
+ %config /etc/rc.d/init.d/bgpd
+ %config /etc/rc.d/init.d/ripngd
+ %config /etc/rc.d/init.d/ospf6d
+ %if %{with_isisd}
+ %config /etc/rc.d/init.d/isisd
+ %endif
+ %if %{with_pimd}
+ %config /etc/rc.d/init.d/pimd
+ %endif
+%endif
%config(noreplace) /etc/sysconfig/quagga
%config(noreplace) /etc/pam.d/quagga
%config(noreplace) %attr(640,root,root) /etc/logrotate.d/*
@@ -435,17 +574,27 @@
%endif
%changelog
-* Fri Sep 4 2015 Paul Jakma <paul@jakma.org> - %{version}
-- package the pimd binary
+* Thu Feb 11 2016 Paul Jakma <paul@jakma.org> - %{version}
- remove with_ipv6 conditionals, always build v6
- Fix UTF-8 char in spec changelog
- remove quagga.pam.stack, long deprecated.
-* Fri Sep 4 2015 Paul Jakma <paul@jakma.org> - %{version}
+* Thu Oct 22 2015 Martin Winter <mwinter@opensourcerouting.org>
+- Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa,
+ --enable-netlink
+- Remove support for old fedora 4/5
+- Fix for package nameing
+- Fix Weekdays of previous changelogs (bogus dates)
+- Add conditional logic to only build tex footnotes with supported texi2html
+- Added pimd to files section and fix double listing of /var/lib*/quagga
+- Numerous fixes to unify upstart/systemd startup into same spec file
+- Only allow use of watchquagga for non-systemd systems. no need with systemd
+
+* Fri Sep 4 2015 Paul Jakma <paul@jakma.org>
- buildreq updates
- add a default define for with_pimd
-* Thu Sep 12 2005 Paul Jakma <paul@dishone.st>
+* Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
- Steal some changes from Fedora spec file:
- Add with_rtadv variable
- Test for groups/users with getent before group/user adding
@@ -498,7 +647,7 @@
- add user with fixed UID/GID (RH)
- create user with shell /sbin/nologin rather than /bin/false (RH)
- stop daemons on uninstall (RH)
-- delete info file on %preun, not %postun to avoid deletion on upgrade. (RH)
+- delete info file on preun, not postun to avoid deletion on upgrade. (RH)
- isisd added
- cleanup tasks carried out for every daemon
@@ -510,10 +659,10 @@
- Renamed to Quagga
- Sync to Quagga release 0.96
-* Tue Mar 20 2003 Paul Jakma <paul@dishone.st>
+* Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
- zebra privileges support
-* Mon Mar 18 2003 Paul Jakma <paul@dishone.st>
+* Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
- Fix mem leak in 'show thread cpu'
- Ralph Keller's OSPF-API
- Amir: Fix configure.ac for net-snmp
@@ -537,7 +686,7 @@
- Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
- Fixed up some build requirements (patch)
- Added conditional build requirements for vtysh / snmp
-- Added conditional to %files for %_bindir depending on vtysh
+- Added conditional to files for _bindir depending on vtysh
* Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
- update to latest CVS
@@ -577,7 +726,7 @@
* Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
- Fix bug #51336
-* Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
+* Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
- Use generic initscript strings instead of initscript specific
( "Starting foo: " -> "Starting $prog:" )