diff --git a/.frr.metadata b/.frr.metadata new file mode 100644 index 0000000..d1cd685 --- /dev/null +++ b/.frr.metadata @@ -0,0 +1 @@ +ecfb105ca630fb9f265b93f054468efbdb6f2319 SOURCES/frr-7.0.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1bbe9d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/frr-7.0.tar.gz diff --git a/SOURCES/0000-remove-babeld-and-ldpd.patch b/SOURCES/0000-remove-babeld-and-ldpd.patch new file mode 100644 index 0000000..d5028d1 --- /dev/null +++ b/SOURCES/0000-remove-babeld-and-ldpd.patch @@ -0,0 +1,61 @@ +diff --git a/Makefile.am b/Makefile.am +index 5be3264..33abc1d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -130,8 +130,6 @@ include ospf6d/subdir.am + include ospfclient/subdir.am + include isisd/subdir.am + include nhrpd/subdir.am +-include ldpd/subdir.am +-include babeld/subdir.am + include eigrpd/subdir.am + include sharpd/subdir.am + include pimd/subdir.am +@@ -182,7 +180,6 @@ EXTRA_DIST += \ + snapcraft/helpers \ + snapcraft/snap \ + \ +- babeld/Makefile \ + bgpd/Makefile \ + bgpd/rfp-example/librfp/Makefile \ + bgpd/rfp-example/rfptest/Makefile \ +@@ -193,7 +190,6 @@ EXTRA_DIST += \ + eigrpd/Makefile \ + fpm/Makefile \ + isisd/Makefile \ +- ldpd/Makefile \ + lib/Makefile \ + nhrpd/Makefile \ + ospf6d/Makefile \ +diff --git a/redhat/daemons b/redhat/daemons +index 068d74d..36730ba 100644 +--- a/redhat/daemons ++++ b/redhat/daemons +@@ -44,11 +44,9 @@ ospf6d=no + ripd=no + ripngd=no + isisd=no +-ldpd=no + pimd=no + nhrpd=no + eigrpd=no +-babeld=no + sharpd=no + pbrd=no + staticd=no +diff --git a/redhat/daemons b/redhat/daemons +index 36730ba..c6090a7 100644 +--- a/redhat/daemons ++++ b/redhat/daemons +@@ -62,11 +62,9 @@ ospf6d_options=("-A ::1") + ripd_options=("-A 127.0.0.1") + ripngd_options=("-A ::1") + isisd_options=("-A 127.0.0.1") +-ldpd_options=("-A 127.0.0.1") + pimd_options=("-A 127.0.0.1") + nhrpd_options=("-A 127.0.0.1") + eigrpd_options=("-A 127.0.0.1") +-babeld_options=("-A 127.0.0.1") + sharpd_options=("-A 127.0.0.1") + pbrd_options=("-A 127.0.0.1") + staticd_options=("-A 127.0.0.1") diff --git a/SOURCES/0001-use-python3.patch b/SOURCES/0001-use-python3.patch new file mode 100644 index 0000000..6ecafb3 --- /dev/null +++ b/SOURCES/0001-use-python3.patch @@ -0,0 +1,10 @@ +diff --git a/tools/frr-reload.py b/tools/frr-reload.py +index 208fb11..0692adc 100755 +--- a/tools/frr-reload.py ++++ b/tools/frr-reload.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + # Frr Reloader + # Copyright (C) 2014 Cumulus Networks, Inc. + # diff --git a/SPECS/frr.spec b/SPECS/frr.spec new file mode 100644 index 0000000..021846e --- /dev/null +++ b/SPECS/frr.spec @@ -0,0 +1,223 @@ +%global frr_uid 92 +%global frr_gid 92 +%global vty_group frrvty +%global vty_gid 85 +%global frrversion 7.0 +%global frr_libdir /usr/lib/frr + +%global _hardened_build 1 + +Name: frr +Version: 7.0 +Release: 4%{?checkout}%{?dist} +Summary: Routing daemon +License: GPLv2+ +URL: http://www.frrouting.org +Source0: https://github.com/FRRouting/frr/releases/download/%{name}-%{frrversion}/%{name}-%{frrversion}.tar.gz +BuildRequires: perl-generators +BuildRequires: systemd +BuildRequires: gcc +BuildRequires: net-snmp-devel +BuildRequires: texinfo libcap-devel texi2html autoconf automake libtool patch groff +BuildRequires: readline readline-devel ncurses ncurses-devel +BuildRequires: git pam-devel c-ares-devel +BuildRequires: json-c-devel bison >= 2.7 flex perl-XML-LibXML +BuildRequires: python3-devel python3-sphinx python3-pytest +BuildRequires: systemd systemd-devel +BuildRequires: libyang-devel +Requires: net-snmp ncurses libyang-devel +Requires(post): systemd /sbin/install-info +Requires(preun): systemd /sbin/install-info +Requires(postun): systemd +Provides: routingdaemon = %{version}-%{release} +Obsoletes: frr-sysvinit quagga + +Patch0000: 0000-remove-babeld-and-ldpd.patch +Patch0001: 0001-use-python3.patch + +%description +FRRouting is free software that manages TCP/IP based routing protocols. It takes +a multi-server and multi-threaded approach to resolve the current complexity +of the Internet. + +FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, NHRP, PBR, EIGRP and BFD. + +FRRouting is a fork of Quagga. + +%package contrib +Summary: Contrib tools for frr +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description contrib +Contributed/3rd party tools which may be of use with frr. + +%package devel +Summary: Header and object files for frr development +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +The frr-devel package contains the header and object files necessary for +developing OSPF-API and frr applications. + +%prep +%autosetup -S git + +%build +autoreconf -ivf + +%configure \ + --sbindir=%{frr_libdir} \ + --sysconfdir=%{_sysconfdir}/frr \ + --libdir=%{_libdir}/frr \ + --libexecdir=%{_libexecdir}/frr \ + --localstatedir=%{_localstatedir}/run/frr \ + --enable-snmp=agentx \ + --enable-multipath=64 \ + --enable-vtysh=yes \ + --enable-ospfclient=no \ + --enable-ospfapi=no \ + --enable-user=frr \ + --enable-group=frr \ + --enable-vty-group=%vty_group \ + --enable-rtadv \ + --disable-exampledir \ + --enable-systemd=yes \ + --enable-static=no \ + --disable-ldpd \ + --disable-babeld \ + --with-moduledir=%{_libdir}/frr/modules \ + --enable-fpm + +%make_build MAKEINFO="makeinfo --no-split" PYTHON=%{__python3} + +pushd doc +make info +popd + +%install +mkdir -p %{buildroot}/etc/{frr,rc.d/init.d,sysconfig,logrotate.d,pam.d,default} \ + %{buildroot}/var/log/frr %{buildroot}%{_infodir} \ + %{buildroot}%{_unitdir} + +mkdir -p -m 0755 %{buildroot}%{_libdir}/frr + +%make_install + +# Remove this file, as it is uninstalled and causes errors when building on RH9 +rm -rf %{buildroot}/usr/share/info/dir + +install -p -m 644 %{_builddir}/%{name}-%{frrversion}/redhat/daemons %{buildroot}/etc/frr/daemons +install -p -m 644 %{_builddir}/%{name}-%{frrversion}/redhat/frr.service %{buildroot}%{_unitdir}/frr.service +install -p -m 755 %{_builddir}/%{name}-%{frrversion}/redhat/frr.init %{buildroot}%{frr_libdir}/frr +install -p -m 644 %{_builddir}/%{name}-%{frrversion}/redhat/frr.logrotate %{buildroot}/etc/logrotate.d/frr +install -p -m 644 %{_builddir}/%{name}-%{frrversion}/redhat/frr.pam %{buildroot}/etc/pam.d/frr +install -d -m 775 %{buildroot}/run/frr + +rm %{buildroot}%{_libdir}/frr/*.la +rm %{buildroot}%{_libdir}/frr/modules/*.la + +%pre +getent group %vty_group >/dev/null 2>&1 || groupadd -r %vty_group >/dev/null 2>&1 || : +getent group frr >/dev/null 2>&1 || groupadd -g frr >/dev/null 2>&1 || : +getent passwd frr >/dev/null 2>&1 || useradd -M -r -s /sbin/nologin \ + -c "FRRouting suite" -d %{_localstatedir}/run/frr frr || : +usermod -aG %vty_group frr + +%post +%systemd_post frr.service + +if [ -f %{_infodir}/%{name}.inf* ]; then + install-info %{_infodir}/frr.info %{_infodir}/dir || : +fi + +# Create dummy files if they don't exist so basic functions can be used. +if [ ! -e %{_sysconfdir}/frr/zebra.conf ]; then + echo "hostname `hostname`" > %{_sysconfdir}/frr/zebra.conf + chown frr:frr %{_sysconfdir}/frr/zebra.conf + chmod 640 %{_sysconfdir}/frr/zebra.conf +fi + +if [ ! -e %{_sysconfdir}/frr/vtysh.conf ]; then + touch %{_sysconfdir}/frr/vtysh.conf + chmod 640 %{_sysconfdir}/frr/vtysh.conf + chown frr:%{vty_group} %{_sysconfdir}/frr/vtysh.conf +fi + +%postun +%systemd_postun_with_restart frr.service + +#only when removing the package +if [ $1 -ge 0 ]; then + if [ -f %{_infodir}/%{name}.inf* ]; then + install-info --delete %{_infodir}/frr.info %{_infodir}/dir || : + fi +fi + +%preun +%systemd_preun frr.service + +%check +make check PYTHON=%{__python3} + +%files +%defattr(-,root,root) +%license COPYING +%doc zebra/zebra.conf.sample +%doc isisd/isisd.conf.sample +%doc ripd/ripd.conf.sample +%doc bgpd/bgpd.conf.sample* +%doc ospfd/ospfd.conf.sample +%doc ospf6d/ospf6d.conf.sample +%doc ripngd/ripngd.conf.sample +%doc pimd/pimd.conf.sample +%doc doc/mpls +%dir %attr(755,frr,frr) %{_sysconfdir}/frr +%dir %attr(755,frr,frr) /var/log/frr +%dir %attr(755,frr,frr) /run/frr +%{_infodir}/*info* +%{_mandir}/man*/* +%{frr_libdir}/* +%{_bindir}/* +%dir %{_libdir}/frr +%{_libdir}/frr/*.so.* +%{_libdir}/frr/modules/* +%config(noreplace) %attr(644,root,root) /etc/logrotate.d/frr +/etc/frr/daemons +%config(noreplace) /etc/pam.d/frr +%{_unitdir}/*.service +/usr/share/yang/*.yang +#%%{_libdir}/frr/frr/libyang_plugins/* + +%files contrib +%defattr(-,root,root) +%doc COPYING +%doc %attr(0644,root,root) tools/frrinit.sh +%doc %attr(0644,root,root) tools/watchfrr.sh +%doc %attr(0644,root,root) tools/zebra.el +%doc %attr(0644,root,root) tools/rrcheck.pl +%doc %attr(0644,root,root) tools/rrlookup.pl + +%files devel +%defattr(-,root,root) +%doc COPYING +%dir %{_libdir}/frr/ +%{_libdir}/frr/*.so +%dir %{_includedir}/frr +%{_includedir}/frr/*.h +%dir %{_includedir}/frr/ospfd +%{_includedir}/frr/ospfd/*.h +%dir %{_includedir}/frr/eigrpd +%{_includedir}/frr/eigrpd/*.h + +%changelog +* Wed Jun 19 2019 Michal Ruprich - 7.0-4 +- Related: #1657029 - frr-contrib is back, it is breaking the rpmdeplint test + +* Wed Jun 19 2019 Michal Ruprich - 7.0-3 +- Related: #1657029 - more cleanup, removed frr-contrib, frrvt changed to frrvty + +* Wed Jun 19 2019 Michal Ruprich - 7.0-2 +- Related: #1657029 - cleaning specfile, adding Requires on libyang-devel + +* Wed May 29 2019 Michal Ruprich - 7.0-1 +- Resolves: #1657029 - Add FRR as a replacement of Quagga in RHEL 8