]> git.proxmox.com Git - mirror_frr.git/blame_incremental - redhat/quagga.spec.in
2005-11-04 Paul Jakma <paul.jakma@sun.com>
[mirror_frr.git] / redhat / quagga.spec.in
... / ...
CommitLineData
1# configure options
2#
3# Some can be overriden on rpmbuild commandline with:
4# rpmbuild --define 'variable value'
5#
6
7%{!?with_snmp: %define with_snmp 1 }
8%{!?with_vtysh: %define with_vtysh 1 }
9%{!?with_ospf_te: %define with_ospf_te 1 }
10%{!?with_nssa: %define with_nssa 1 }
11%{!?with_opaque_lsa: %define with_opaque_lsa 1 }
12%{!?with_tcp_zebra: %define with_tcp_zebra 0 }
13%{!?with_vtysh: %define with_vtysh 1 }
14%{!?with_pam: %define with_pam 1 }
15%{!?with_ipv6: %define with_ipv6 1 }
16%{!?with_ospfclient: %define with_ospfclient 1 }
17%{!?with_ospfapi: %define with_ospfapi 1 }
18%{!?with_irdp: %define with_irdp 1 }
19%{!?with_rtadv: %define with_rtadv 1 }
20%{!?with_isisd: %define with_isisd 1 }
21%{!?with_shared: %define with_shared 1 }
22%{!?with_multipath: %define with_multipath 64 }
23%{!?quagga_user: %define quagga_user quagga }
24%{!?vty_group: %define vty_group quaggavty }
25
26# path defines
27%define _sysconfdir /etc/quagga
28%define zeb_src %{_builddir}/%{name}-%{version}
29%define zeb_rh_src %{zeb_src}/redhat
30%define zeb_docs %{zeb_src}/doc
31
32# defines for configure
33%define _libexecdir %{_exec_prefix}/libexec/quagga
34%define _libdir %{_exec_prefix}/%{_lib}/quagga
35%define _includedir %{_prefix}/include
36%define _localstatedir /var/run/quagga
37
38# misc internal defines
39%{!?quagga_uid: %define quagga_uid 92 }
40%{!?quagga_gid: %define quagga_gid 92 }
41%define daemon_list zebra ripd ospfd bgpd
42
43%if %{with_ipv6}
44%define daemonv6_list ripngd ospf6d
45%else
46%define daemonv6_list ""
47%endif
48
49%if %{with_isisd}
50%define daemon_other isisd
51%else
52%define daemon_other ""
53%endif
54
55%define all_daemons %{daemon_list} %{daemonv6_list} %{daemon_other} watchquagga
56
57# allow build dir to be kept
58%{!?keep_build: %define keep_build 0 }
59
60Summary: Routing daemon
61Name: quagga
62Version: @VERSION@
63Release: @CONFDATE@01
64License: GPL
65Group: System Environment/Daemons
66Source0: http://www.quagga.net/snapshots/cvs/%{name}-%{version}.tar.gz
67URL: http://www.quagga.net
68%if %{with_snmp}
69BuildRequires: net-snmp-devel
70Prereq: net-snmp
71%endif
72%if %{with_vtysh}
73BuildRequires: readline readline-devel ncurses ncurses-devel
74Prereq: ncurses
75%endif
76BuildRequires: texinfo tetex autoconf pam-devel patch libcap-devel texi2html
77# Initscripts > 5.60 is required for IPv6 support
78Prereq: initscripts >= 5.60
79Prereq: ncurses pam
80Prereq: /sbin/install-info
81Provides: routingdaemon
82BuildRoot: %{_tmppath}/%{name}-%{version}-root
83Obsoletes: bird gated mrt zebra
84
85%description
86Quagga is a free software that manages TCP/IP based routing
87protocol. It takes multi-server and multi-thread approach to resolve
88the current complexity of the Internet.
89
90Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, and RIPng.
91
92Quagga is intended to be used as a Route Server and a Route Reflector. It is
93not a toolkit, it provides full routing power under a new architecture.
94Quagga by design has a process for each protocol.
95
96Quagga is a fork of GNU Zebra.
97
98%package contrib
99Summary: contrib tools for quagga
100Group: System Environment/Daemons
101
102%description contrib
103Contributed/3rd party tools which may be of use with quagga.
104
105%package devel
106Summary: Header and object files for quagga development
107Group: System Environment/Daemons
108
109%description devel
110The quagga-devel package contains the header and object files neccessary for
111developing OSPF-API and quagga applications.
112
113%prep
114%setup -q
115
116%build
117
118# For standard gcc verbosity, uncomment these lines:
119#CFLAGS="%{optflags} -Wall -Wsign-compare -Wpointer-arith"
120#CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
121
122# For ultra gcc verbosity, uncomment these lines also:
123#CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
124#CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
125#CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
126#CFLAGS="${CFLAGS} -Wpacked -Wpadded"
127
128%configure \
129%if !%{with_shared}
130 --disable-shared \
131%endif
132%if %{with_ipv6}
133 --enable-ipv6 \
134%endif
135%if %{with_snmp}
136 --enable-snmp \
137%endif
138%if %{with_multipath}
139 --enable-multipath=%{with_multipath} \
140%endif
141%if %{with_tcp_zebra}
142 --enable-tcp-zebra \
143%endif
144%if %{with_nssa}
145 --enable-nssa \
146%endif
147%if %{with_opaque_lsa}
148 --enable-opaque-lsa \
149%endif
150%if %{with_ospf_te}
151 --enable-ospf-te \
152%endif
153%if %{with_vtysh}
154 --enable-vtysh \
155%endif
156%if %{with_ospfclient}
157 --enable-ospfclient=yes \
158%else
159 --enable-ospfclient=no\
160%endif
161%if %{with_ospfapi}
162 --enable-ospfapi=yes \
163%else
164 --enable-ospfapi=no \
165%endif
166%if %{with_irdp}
167 --enable-irdp=yes \
168%else
169 --enable-irdp=no \
170%endif
171%if %{with_rtadv}
172 --enable-rtadv=yes \
173%else
174 --enable-rtadv=no \
175%endif
176%if %{with_isisd}
177 --enable-isisd \
178%else
179 --disable-isisd \
180%endif
181%if %{with_pam}
182 --with-libpam \
183%endif
184%if %quagga_user
185 --enable-user=%quagga_user \
186 --enable-group=%quagga_user \
187%endif
188%if %vty_group
189 --enable-vty-group=%vty_group \
190%endif
191--enable-netlink --enable-gcc-rdynamic
192
193make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
194
195pushd doc
196texi2html -glossary -number quagga.texi
197popd
198
199%install
200rm -rf $RPM_BUILD_ROOT
201
202install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig,logrotate.d,pam.d} \
203 $RPM_BUILD_ROOT/var/log/quagga $RPM_BUILD_ROOT%{_infodir}
204
205make install \
206 DESTDIR=$RPM_BUILD_ROOT
207
208# Remove this file, as it is uninstalled and causes errors when building on RH9
209rm -rf $RPM_BUILD_ROOT/usr/share/info/dir
210
211# install etc sources
212for daemon in %{all_daemons} ; do
213 if [ x"${daemon}" != x"" ] ; then
214 install %{zeb_rh_src}/${daemon}.init \
215 $RPM_BUILD_ROOT/etc/rc.d/init.d/${daemon}
216 fi
217done
218install -m644 %{zeb_rh_src}/quagga.pam \
219 $RPM_BUILD_ROOT/etc/pam.d/quagga
220install -m644 %{zeb_rh_src}/quagga.logrotate \
221 $RPM_BUILD_ROOT/etc/logrotate.d/quagga
222install -m644 %{zeb_rh_src}/quagga.sysconfig \
223 $RPM_BUILD_ROOT/etc/sysconfig/quagga
224install -d -m750 $RPM_BUILD_ROOT/var/run/quagga
225
226%pre
227# add vty_group
228%if %vty_group
229if getent group %vty_group > /dev/null ; then : ; else \
230 /usr/sbin/groupadd -r %vty_group > /dev/null || : ; fi
231%endif
232
233# add quagga user and group
234%if %quagga_user
235# Ensure that quagga_gid gets correctly allocated
236if getent group %quagga_user >/dev/null; then : ; else \
237 /usr/sbin/groupadd -g %quagga_gid %quagga_user > /dev/null || : ; \
238fi
239if getent passwd %quagga_user >/dev/null ; then : ; else \
240 /usr/sbin/useradd -u %quagga_uid -g %quagga_gid \
241 -M -r -s /sbin/nologin -c "Quagga routing suite" \
242 -d %_localstatedir %quagga_user 2> /dev/null || : ; \
243fi
244%endif
245
246%post
247# zebra_spec_add_service <service name> <port/proto> <comment>
248# e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
249
250zebra_spec_add_service ()
251{
252 # Add port /etc/services entry if it isn't already there
253 if [ -f /etc/services ] && \
254 ! %__sed -e 's/#.*$//' /etc/services | %__grep -wq $1 ; then
255 echo "$1 $2 # $3" >> /etc/services
256 fi
257}
258
259zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
260zebra_spec_add_service zebra 2601/tcp "zebra vty"
261zebra_spec_add_service ripd 2602/tcp "RIPd vty"
262%if %{with_ipv6}
263zebra_spec_add_service ripngd 2603/tcp "RIPngd vty"
264%endif
265zebra_spec_add_service ospfd 2604/tcp "OSPFd vty"
266zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
267%if %{with_ipv6}
268zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
269%endif
270%if %{with_ospfapi}
271zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
272%endif
273%if %{with_isisd}
274zebra_spec_add_service isisd 2608/tcp "ISISd vty"
275%endif
276
277for daemon in %daemon_list ; do
278 /sbin/chkconfig --add ${daemon}
279done
280
281/sbin/install-info %{_infodir}/quagga.info.gz %{_infodir}/dir
282
283# Create dummy files if they don't exist so basic functions can be used.
284if [ ! -e %{_sysconfdir}/zebra.conf ]; then
285 echo "hostname `hostname`" > %{_sysconfdir}/zebra.conf
286%if %{quagga_user}
287 chown %quagga_user:%quagga_user %{_sysconfdir}/zebra.conf
288%endif
289 chmod 640 %{_sysconfdir}/zebra.conf
290fi
291if [ ! -e %{_sysconfdir}/vtysh.conf ]; then
292 touch %{_sysconfdir}/vtysh.conf
293 chmod 640 %{_sysconfdir}/vtysh.conf
294fi
295
296%postun
297if [ "$1" -ge 1 ]; then
298 # Find out which daemons need to be restarted.
299 for daemon in %all_daemons ; do
300 if [ -f /var/lock/subsys/$daemon ]; then
301 eval restart_$daemon=yes
302 else
303 eval restart_$daemon=no
304 fi
305 done
306 # Rename restart flags for daemons handled specially.
307 running_zebra="$restart_zebra"
308 restart_zebra=no
309 running_watchquagga="$restart_watchquagga"
310 restart_watchquagga=no
311 # Stop watchquagga first.
312 [ "$running_watchquagga" = yes ] && \
313 /etc/rc.d/init.d/watchquagga stop >/dev/null 2>&1
314 # Stop all daemons other than zebra and watchquagga.
315 for daemon in %all_daemons ; do
316 eval restart=\$restart_${daemon}
317 [ "$restart" = yes ] && \
318 /etc/rc.d/init.d/$daemon stop >/dev/null 2>&1
319 done
320 # Restart zebra.
321 [ "$running_zebra" = yes ] && \
322 /etc/rc.d/init.d/zebra restart >/dev/null 2>&1
323 # Start all daemons other than zebra and watchquagga.
324 for daemon in %all_daemons ; do
325 eval restart=\$restart_${daemon}
326 [ "$restart" = yes ] && \
327 /etc/rc.d/init.d/$daemon start >/dev/null 2>&1
328 done
329 # Start watchquagga last.
330 # Avoid postun scriptlet error if watchquagga is not running.
331 [ "$running_watchquagga" = yes ] && \
332 /etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 || :
333fi
334/sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
335
336%preun
337if [ "$1" = "0" ]; then
338 for daemon in %all_daemons ; do
339 /etc/rc.d/init.d/${daemon} stop >/dev/null 2>&1
340 /sbin/chkconfig --del ${daemon}
341 done
342 /sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
343fi
344
345%clean
346%if !%{keep_build}
347rm -rf $RPM_BUILD_ROOT
348%endif
349
350%files
351%defattr(-,root,root)
352%doc */*.sample* AUTHORS COPYING
353%doc doc/quagga.html
354%doc doc/mpls
355%doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO
356%if %{quagga_user}
357%dir %attr(751,%quagga_user,%quagga_user) %{_sysconfdir}
358%dir %attr(750,%quagga_user,%quagga_user) /var/log/quagga
359%dir %attr(751,%quagga_user,%quagga_user) /var/run/quagga
360%else
361%dir %attr(750,root,root) %{_sysconfdir}
362%dir %attr(750,root,root) /var/log/quagga
363%dir %attr(755,root,root) /usr/share/info
364%dir %attr(750,root,root) /var/run/quagga
365%endif
366%if %{vty_group}
367%attr(750,%quagga_user,%vty_group) %{_sysconfdir}/vtysh.conf.sample
368%endif
369%{_infodir}/*info*
370%{_mandir}/man*/*
371%{_sbindir}/zebra
372%{_sbindir}/ospfd
373%{_sbindir}/ripd
374%{_sbindir}/bgpd
375%{_sbindir}/watchquagga
376%if %{with_ipv6}
377%{_sbindir}/ripngd
378%{_sbindir}/ospf6d
379%endif
380%if %{with_isisd}
381%{_sbindir}/isisd
382%endif
383%dir %attr(755,root,root) %{_libdir}
384%if %{with_shared}
385%dir %{_libdir}
386%{_libdir}/lib*.so
387%{_libdir}/lib*.so.*
388%endif
389%if %{with_vtysh}
390%{_bindir}/*
391%endif
392%config /etc/quagga/[!v]*
393%config /etc/rc.d/init.d/*
394%config(noreplace) /etc/sysconfig/quagga
395%config(noreplace) /etc/pam.d/quagga
396%config(noreplace) %attr(640,root,root) /etc/logrotate.d/*
397
398%files contrib
399%defattr(-,root,root)
400%doc tools
401
402%files devel
403%defattr(-,root,root)
404%if %{with_ospfclient}
405%{_sbindir}/ospfclient
406%endif
407%{_libdir}/*.a
408%{_libdir}/*.la
409%dir %attr(755,root,root) %{_includedir}/%{name}
410%{_includedir}/%name/*.h
411%dir %attr(755,root,root) %{_includedir}/%{name}/ospfd
412%{_includedir}/%name/ospfd/*.h
413%if %{with_ospfapi}
414%dir %attr(755,root,root) %{_includedir}/%{name}/ospfapi
415%{_includedir}/%name/ospfapi/*.h
416%endif
417
418%changelog
419* Thu Sep 12 2005 Paul Jakma <paul@dishone.st>
420- Steal some changes from Fedora spec file:
421- Add with_rtadv variable
422- Test for groups/users with getent before group/user adding
423- Readline need not be an explicit prerequisite
424- install-info delete should be postun, not preun
425
426* Wed Jan 12 2005 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
427- on package upgrade, implement careful, phased restart logic
428- use gcc -rdynamic flag when linking for better backtraces
429
430* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
431- daemonv6_list should contain only IPv6 daemons
432
433* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
434- watchquagga added
435- on upgrade, all daemons should be condrestart'ed
436- on removal, all daemons should be stopped
437
438* Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
439- Use makeinfo --html to generate quagga.html
440
441* Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
442- Fix with_ipv6 set to 0 build
443
444* Sat Oct 23 2004 Paul Jakma <paul@dishone.st>
445- Update to 0.97.2
446
447* Sat Oct 23 2004 Andrew J. Schorr <aschorr@telemetry-investments.com>
448- Make directories be owned by the packages concerned
449- Update logrotate scripts to use correct path to killall and use pid files
450
451* Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
452- Update to 0.97.0
453
454* Wed Sep 15 2004 Paul Jakma <paul@dishone.st>
455- build snmp support by default
456- build irdp support
457- build with shared libs
458- devel subpackage for archives and headers
459
460* Thu Jan 08 2004 Paul Jakma <paul@dishone.st>
461- updated sysconfig files to specify local dir
462- added ospf_dump.c crash quick fix patch
463- added ospfd persistent interface configuration patch
464
465* Tue Dec 30 2003 Paul Jakma <paul@dishone.st>
466- sync to CVS
467- integrate RH sysconfig patch to specify daemon options (RH)
468- default to have vty listen only to 127.1 (RH)
469- add user with fixed UID/GID (RH)
470- create user with shell /sbin/nologin rather than /bin/false (RH)
471- stop daemons on uninstall (RH)
472- delete info file on %preun, not %postun to avoid deletion on upgrade. (RH)
473- isisd added
474- cleanup tasks carried out for every daemon
475
476* Sun Nov 2 2003 Paul Jakma <paul@dishone.st>
477- Fix -devel package to include all files
478- Sync to 0.96.4
479
480* Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
481- Renamed to Quagga
482- Sync to Quagga release 0.96
483
484* Tue Mar 20 2003 Paul Jakma <paul@dishone.st>
485- zebra privileges support
486
487* Mon Mar 18 2003 Paul Jakma <paul@dishone.st>
488- Fix mem leak in 'show thread cpu'
489- Ralph Keller's OSPF-API
490- Amir: Fix configure.ac for net-snmp
491
492* Sat Mar 1 2003 Paul Jakma <paul@dishone.st>
493- ospfd IOS prefix to interface matching for 'network' statement
494- temporary fix for PtP and IPv6
495- sync to zebra.org CVS
496
497* Mon Jan 20 2003 Paul Jakma <paul@dishone.st>
498- update to latest cvs
499- Yon's "show thread cpu" patch - 17217
500- walk up tree - 17218
501- ospfd NSSA fixes - 16681
502- ospfd nsm fixes - 16824
503- ospfd OLSA fixes and new feature - 16823
504- KAME and ifindex fixes - 16525
505- spec file changes to allow redhat files to be in tree
506
507* Sat Dec 28 2002 Alexander Hoogerhuis <alexh@ihatent.com>
508- Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
509- Fixed up some build requirements (patch)
510- Added conditional build requirements for vtysh / snmp
511- Added conditional to %files for %_bindir depending on vtysh
512
513* Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
514- update to latest CVS
515- add Greg Troxel's md5 buffer copy/dup fix
516- add RIPv1 fix
517- add Frank's multicast flag fix
518
519* Wed Oct 09 2002 Paul Jakma <paulj@alphyra.ie>
520- update to latest CVS
521- timestamped crypt_seqnum patch
522- oi->on_write_q fix
523
524* Mon Sep 30 2002 Paul Jakma <paulj@alphyra.ie>
525- update to latest CVS
526- add vtysh 'write-config (integrated|daemon)' patch
527- always 'make rebuild' in vtysh/ to catch new commands
528
529* Fri Sep 13 2002 Paul Jakma <paulj@alphyra.ie>
530- update to 0.93b
531
532* Wed Sep 11 2002 Paul Jakma <paulj@alphyra.ie>
533- update to latest CVS
534- add "/sbin/ip route flush proto zebra" to zebra RH init on startup
535
536* Sat Aug 24 2002 Paul Jakma <paulj@alphyra.ie>
537- update to current CVS
538- add OSPF point to multipoint patch
539- add OSPF bugfixes
540- add BGP hash optimisation patch
541
542* Fri Jun 14 2002 Paul Jakma <paulj@alphyra.ie>
543- update to 0.93-pre1 / CVS
544- add link state detection support
545- add generic PtP and RFC3021 support
546- various bug fixes
547
548* Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
549- Fix bug #51336
550
551