Blame SPECS/frr.spec

df9172
%global frr_libdir %{_libexecdir}/frr
df9172
df9172
%global _hardened_build 1
df9172
%define _legacy_common_support 1
9ad5e0
%global selinuxtype targeted
9ad5e0
%bcond_without selinux
df9172
df9172
Name: frr
9ad5e0
Version: 8.3.1
9ad5e0
Release: 5%{?checkout}%{?dist}
df9172
Summary: Routing daemon
df9172
License: GPLv2+
df9172
URL: http://www.frrouting.org
df9172
Source0: https://github.com/FRRouting/frr/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
df9172
Source1: %{name}-tmpfiles.conf
4d9cdd
Source2: frr-sysusers.conf
9ad5e0
Source3: frr.fc
9ad5e0
Source4: frr.te
9ad5e0
Source5: frr.if
9ad5e0
Source6: remove-babeld-ldpd.sh
df9172
BuildRequires:  autoconf
df9172
BuildRequires:  automake
df9172
BuildRequires:  bison >= 2.7
df9172
BuildRequires:  c-ares-devel
df9172
BuildRequires:  flex
df9172
BuildRequires:  gcc
df9172
BuildRequires:  gcc-c++
df9172
BuildRequires:  git-core
df9172
BuildRequires:  groff
df9172
BuildRequires:  json-c-devel
df9172
BuildRequires:  libcap-devel
df9172
BuildRequires:  libtool
df9172
BuildRequires:  libyang-devel >= 2.0.0
df9172
BuildRequires:  make
df9172
BuildRequires:  ncurses
df9172
BuildRequires:  ncurses-devel
df9172
BuildRequires:  net-snmp-devel
df9172
BuildRequires:  pam-devel
df9172
BuildRequires:  patch
df9172
BuildRequires:  perl-XML-LibXML
df9172
BuildRequires:  perl-generators
df9172
BuildRequires:  python3-devel
df9172
BuildRequires:  python3-pytest
df9172
BuildRequires:  python3-sphinx
df9172
BuildRequires:  readline-devel
df9172
BuildRequires:  systemd-devel
df9172
BuildRequires:  systemd-rpm-macros
df9172
BuildRequires:  texinfo
df9172
df9172
Requires: net-snmp
df9172
Requires: ncurses
df9172
Requires(post): systemd
df9172
Requires(post): /sbin/install-info
df9172
Requires(post): hostname
df9172
Requires(preun): systemd
df9172
Requires(preun): /sbin/install-info
df9172
Requires(postun): systemd
9ad5e0
9ad5e0
%if 0%{?with_selinux}
9ad5e0
Requires: (%{name}-selinux = %{version}-%{release} if selinux-policy-%{selinuxtype})
9ad5e0
%endif
9ad5e0
df9172
Conflicts: quagga
df9172
Provides: routingdaemon = %{version}-%{release}
df9172
df9172
Patch0000: 0000-remove-babeld-and-ldpd.patch
df9172
Patch0002: 0002-enable-openssl.patch
df9172
Patch0003: 0003-disable-eigrp-crypto.patch
df9172
Patch0004: 0004-fips-mode.patch
9ad5e0
Patch0005: 0005-ospf-api.patch
9ad5e0
Patch0006: 0006-graceful-restart.patch
9ad5e0
Patch0007: 0007-cve-2022-37032.patch
9ad5e0
Patch0008: 0008-frr-non-root-user.patch
df9172
df9172
%description
df9172
FRRouting is free software that manages TCP/IP based routing protocols. It takes
df9172
a multi-server and multi-threaded approach to resolve the current complexity
df9172
of the Internet.
df9172
df9172
FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, NHRP, PBR, EIGRP and BFD.
df9172
df9172
FRRouting is a fork of Quagga.
df9172
9ad5e0
%if 0%{?with_selinux}
9ad5e0
%package selinux
9ad5e0
Summary:        Selinux policy for FRR
9ad5e0
BuildArch:      noarch
9ad5e0
Requires:       selinux-policy-%{selinuxtype}
9ad5e0
Requires(post): selinux-policy-%{selinuxtype}
9ad5e0
BuildRequires:  selinux-policy-devel
9ad5e0
%{?selinux_requires}
9ad5e0
9ad5e0
%description selinux
9ad5e0
SELinux policy modules for FRR package
9ad5e0
9ad5e0
%endif
9ad5e0
df9172
%prep
df9172
%autosetup -S git
9ad5e0
mkdir selinux
9ad5e0
cp -p %{SOURCE3} %{SOURCE4} %{SOURCE5} selinux
df9172
df9172
%build
df9172
autoreconf -ivf
df9172
df9172
%configure \
df9172
    --sbindir=%{frr_libdir} \
df9172
    --sysconfdir=%{_sysconfdir}/frr \
df9172
    --libdir=%{_libdir}/frr \
df9172
    --libexecdir=%{_libexecdir}/frr \
df9172
    --localstatedir=%{_localstatedir}/run/frr \
df9172
    --enable-multipath=64 \
df9172
    --enable-vtysh=yes \
df9172
    --disable-ospfclient \
df9172
    --disable-ospfapi \
df9172
    --enable-snmp=agentx \
df9172
    --enable-user=frr \
df9172
    --enable-group=frr \
df9172
    --enable-vty-group=frrvty \
df9172
    --enable-rtadv \
df9172
    --disable-exampledir \
df9172
    --enable-systemd=yes \
df9172
    --enable-static=no \
df9172
    --disable-ldpd \
df9172
    --disable-babeld \
df9172
    --with-moduledir=%{_libdir}/frr/modules \
df9172
    --with-crypto=openssl \
df9172
    --enable-fpm
df9172
df9172
%make_build MAKEINFO="makeinfo --no-split" PYTHON=%{__python3}
df9172
df9172
pushd doc
df9172
make info
df9172
popd
df9172
9ad5e0
%if 0%{?with_selinux}
9ad5e0
make -C selinux -f %{_datadir}/selinux/devel/Makefile %{name}.pp
9ad5e0
bzip2 -9 selinux/%{name}.pp
9ad5e0
%endif
9ad5e0
df9172
%install
df9172
mkdir -p %{buildroot}/etc/{frr,rc.d/init.d,sysconfig,logrotate.d,pam.d,default} \
df9172
         %{buildroot}/var/log/frr %{buildroot}%{_infodir} \
df9172
         %{buildroot}%{_unitdir}
df9172
df9172
mkdir -p -m 0755 %{buildroot}%{_libdir}/frr
df9172
mkdir -p %{buildroot}%{_tmpfilesdir}
df9172
df9172
%make_install
df9172
df9172
# Remove this file, as it is uninstalled and causes errors when building on RH9
df9172
rm -rf %{buildroot}/usr/share/info/dir
df9172
df9172
install -p -m 644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf
df9172
install -p -m 644 tools/etc/frr/daemons %{buildroot}/etc/frr/daemons
df9172
install -p -m 644 tools/frr.service %{buildroot}%{_unitdir}/frr.service
df9172
install -p -m 755 tools/frrinit.sh %{buildroot}%{frr_libdir}/frr
df9172
install -p -m 755 tools/frrcommon.sh %{buildroot}%{frr_libdir}/frrcommon.sh
df9172
install -p -m 755 tools/watchfrr.sh %{buildroot}%{frr_libdir}/watchfrr.sh
df9172
df9172
install -p -m 644 redhat/frr.logrotate %{buildroot}/etc/logrotate.d/frr
df9172
install -p -m 644 redhat/frr.pam %{buildroot}/etc/pam.d/frr
df9172
install -d -m 775 %{buildroot}/run/frr
df9172
4d9cdd
install -p -D -m 0644 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysusersdir}/frr.conf
4d9cdd
9ad5e0
%if 0%{?with_selinux}
9ad5e0
install -D -m 644 selinux/%{name}.pp.bz2 \
9ad5e0
        %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
9ad5e0
install -D -m 644 selinux/%{name}.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}.if
9ad5e0
%endif
9ad5e0
df9172
# Delete libtool archives
df9172
find %{buildroot} -type f -name "*.la" -delete -print
df9172
df9172
#Upstream does not maintain a stable API, these headers from -devel subpackage are no longer needed
df9172
rm %{buildroot}%{_libdir}/frr/*.so
df9172
rm -r %{buildroot}%{_includedir}/frr/
df9172
df9172
%pre
4d9cdd
%sysusers_create_compat %{SOURCE2}
4d9cdd
exit 0
df9172
df9172
%post
df9172
%systemd_post frr.service
df9172
df9172
if [ -f %{_infodir}/%{name}.inf* ]; then
df9172
    install-info %{_infodir}/frr.info %{_infodir}/dir || :
df9172
fi
df9172
df9172
# Create dummy files if they don't exist so basic functions can be used.
df9172
# Only create frr.conf when first installing, otherwise it can change
df9172
# the behavior of the package
df9172
if [ $1 -eq 1 ]; then
df9172
    if [ ! -e %{_sysconfdir}/frr/frr.conf ]; then
df9172
        echo "hostname `hostname`" > %{_sysconfdir}/frr/frr.conf
df9172
        chown frr:frr %{_sysconfdir}/frr/frr.conf
df9172
        chmod 640 %{_sysconfdir}/frr/frr.conf
df9172
    fi
df9172
fi
df9172
df9172
#still used by vtysh, this way no error is produced when using vtysh
df9172
if [ ! -e %{_sysconfdir}/frr/vtysh.conf ]; then
df9172
    touch %{_sysconfdir}/frr/vtysh.conf
df9172
    chmod 640 %{_sysconfdir}/frr/vtysh.conf
df9172
    chown frr:frrvty %{_sysconfdir}/frr/vtysh.conf
df9172
fi
df9172
df9172
df9172
%postun
df9172
%systemd_postun_with_restart frr.service
df9172
df9172
%preun
df9172
%systemd_preun frr.service
df9172
df9172
#only when removing frr
df9172
if [ $1 -eq 0 ]; then
df9172
	if [ -f %{_infodir}/%{name}.inf* ]; then
df9172
    	install-info --delete %{_infodir}/frr.info %{_infodir}/dir || :
df9172
	fi
df9172
fi
df9172
9ad5e0
%if 0%{?with_selinux}
9ad5e0
%pre selinux
9ad5e0
%selinux_relabel_pre -s %{selinuxtype}
9ad5e0
9ad5e0
%post selinux
9ad5e0
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
9ad5e0
%selinux_relabel_post -s %{selinuxtype}
9ad5e0
#/var/tmp and /var/run need to be relabeled as well if FRR is running before upgrade
9ad5e0
if [ $1 == 2 ]; then
9ad5e0
    %{_sbindir}/restorecon -R /var/tmp/frr &> /dev/null
9ad5e0
    %{_sbindir}/restorecon -R /var/run/frr &> /dev/null
9ad5e0
fi
9ad5e0
9ad5e0
%postun selinux
9ad5e0
if [ $1 -eq 0 ]; then
9ad5e0
    %selinux_modules_uninstall -s %{selinuxtype} %{name}
9ad5e0
    %selinux_relabel_post -s %{selinuxtype}
9ad5e0
fi
9ad5e0
%endif
9ad5e0
df9172
%check
df9172
make check PYTHON=%{__python3}
df9172
df9172
%files
df9172
%defattr(-,root,root)
df9172
%license COPYING
df9172
%doc doc/mpls
df9172
%dir %attr(750,frr,frr) %{_sysconfdir}/frr
df9172
%dir %attr(755,frr,frr) /var/log/frr
df9172
%dir %attr(755,frr,frr) /run/frr
df9172
%{_infodir}/*info*
df9172
%{_mandir}/man*/*
df9172
%dir %{frr_libdir}/
df9172
%{frr_libdir}/*
df9172
%{_bindir}/*
df9172
%dir %{_libdir}/frr
df9172
%{_libdir}/frr/*.so.*
df9172
%dir %{_libdir}/frr/modules
df9172
%{_libdir}/frr/modules/*
df9172
%config(noreplace) %attr(644,root,root) /etc/logrotate.d/frr
df9172
%config(noreplace) %attr(644,frr,frr) /etc/frr/daemons
df9172
%config(noreplace) /etc/pam.d/frr
df9172
%{_unitdir}/*.service
df9172
%dir /usr/share/yang
df9172
/usr/share/yang/*.yang
df9172
%{_tmpfilesdir}/%{name}.conf
4d9cdd
%{_sysusersdir}/frr.conf
df9172
9ad5e0
%if 0%{?with_selinux}
9ad5e0
%files selinux
9ad5e0
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.*
9ad5e0
%{_datadir}/selinux/devel/include/distributed/%{name}.if
9ad5e0
%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
9ad5e0
%endif
9ad5e0
df9172
%changelog
9ad5e0
* Mon Nov 28 2022 Michal Ruprich <mruprich@redhat.com> - 8.3.1-5
9ad5e0
- Resolves: #2147522 - It is not possible to run FRR as a non-root user
9ad5e0
9ad5e0
* Thu Nov 24 2022 Michal Ruprich <mruprich@redhat.com> - 8.3.1-4
9ad5e0
- Resolves: #2144500 - AVC error when reloading FRR with provided reload script
9ad5e0
9ad5e0
* Wed Oct 19 2022 Michal Ruprich <mruprich@redhat.com> - 8.3.1-3
9ad5e0
- Related: #2129743 - Adding missing rules for vtysh and other daemons
9ad5e0
9ad5e0
* Mon Oct 17 2022 Michal Ruprich <mruprich@redhat.com> - 8.3.1-2
9ad5e0
- Resolves: #2128738 - out-of-bounds read in the BGP daemon may lead to information disclosure or denial of service
9ad5e0
9ad5e0
* Thu Oct 13 2022 Michal Ruprich <mruprich@redhat.com> - 8.3.1-1
9ad5e0
- Resolves: #2129731 - Rebase FRR to the latest version
9ad5e0
- Resolves: #2129743 - Add targeted SELinux policy for FRR
9ad5e0
- Resolves: #2127494 - BGP incorrectly withdraws routes on graceful restart capable routers 
9ad5e0
4d9cdd
* Tue Jun 14 2022 Michal Ruprich - 8.2.2-4
4d9cdd
- Resolves: #2095404 - frr use systemd-sysusers
4d9cdd
4d9cdd
* Tue May 24 2022 Michal Ruprich <mruprich@redhat.com> - 8.2.2-3
4d9cdd
- Resolves: #2081304 - Enhanced TMT testing for centos-stream
4d9cdd
4d9cdd
* Mon May 02 2022 Michal Ruprich <mruprich@redhat.com> - 8.2.2-2
4d9cdd
- Resolves: #2069571 - the dynamic routing setup does not work any more
4d9cdd
4d9cdd
* Mon May 02 2022 Michal Ruprich <mruprich@redhat.com> - 8.2.2-1
4d9cdd
- Resolves: #2069563 - Rebase frr to version 8.2.2
4d9cdd
b9932b
* Tue Nov 16 2021 Michal Ruprich <mruprich@redhat.com> - 8.0-5
b9932b
- Resolves: #2023318 - Rebuilding for the new json-c library
b9932b
b9932b
* Wed Sep 01 2021 Michal Ruprich <mruprich@redhat.com> - 8.0-4
b9932b
- Resolves: #1997603 - ospfd not running with ospf opaque-lsa option used
b9932b
df9172
* Mon Aug 16 2021 Michal Ruprich <mruprich@redhat.com> - 8.0-3
df9172
- Related: #1990858 - Fixing prefix-list duplication check
df9172
df9172
* Thu Aug 12 2021 Michal Ruprich <mruprich@redhat.com> - 8.0-2
df9172
- Related: #1990858 - Frr needs higher version of libyang
df9172
df9172
* Tue Aug 10 2021 Michal Ruprich <mruprich@redhat.com> - 8.0-1
df9172
- Resolves: #1990858 - Possible rebase of frr to version 8.0
df9172
df9172
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 7.5.1-7
df9172
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
df9172
  Related: rhbz#1991688
df9172
df9172
* Wed Jul 21 2021 Michal Ruprich <mruprich@redhat.com> - 7.5.1-6
df9172
- Resolves: #1983967 - ospfd crashes in route_node_delete with assertion fail
df9172
df9172
* Wed Jun 16 2021 Mohan Boddu <mboddu@redhat.com> - 7.5.1-5
df9172
- Rebuilt for RHEL 9 BETA for openssl 3.0
df9172
  Related: rhbz#1971065
df9172
df9172
* Fri Jun 04 2021 Michal Ruprich <mruprich@redhat.com> - 7.5.1-4
df9172
- Resolves: #1958155 - Upgrading frr unconditionally creates /etc/frr/frr.conf, breaking existing configuration
df9172
df9172
* Fri Apr 23 2021 Michal Ruprich <mruprich@redhat.com> - 7.5.1-3
df9172
- Resolves: #1939456 - /etc/frr permissions are bogus
df9172
- Resolves: #1951303 - FTBFS in CentOS Stream
df9172
df9172
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 7.5.1-2
df9172
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
df9172
df9172
* Tue Mar 16 2021 Michal Ruprich <mruprich@redhat.com> - 7.5.1-1
df9172
- New version 7.5.1
df9172
- Enabling grpc, adding hostname for post scriptlet
df9172
- Moving files to libexec due to selinux issues
df9172
df9172
* Tue Feb 16 2021 Michal Ruprich <mruprich@redhat.com> - 7.5-3
df9172
- Fixing FTBS - icc options are confusing the new gcc
df9172
df9172
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 7.5-2
df9172
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
df9172
df9172
* Fri Jan 01 2021 Michal Ruprich <mruprich@redhat.com> - 7.5-1
df9172
- New version 7.5
df9172
df9172
* Mon Sep 21 2020 Michal Ruprich <mruprich@redhat.com> - 7.4-1
df9172
- New version 7.4
df9172
df9172
* Thu Aug 27 2020 Josef Řídký <jridky@redhat.com> - 7.3.1-4
df9172
- Rebuilt for new net-snmp release
df9172
df9172
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 7.3.1-3
df9172
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
df9172
df9172
* Thu Jun 18 2020 Michal Ruprich <mruprich@redhat.com> - 7.3.1-1
df9172
- New version 7.3.1
df9172
- Fixes a couple of bugs(#1832259, #1835039, #1830815, #1830808, #1830806, #1830800, #1830798, #1814773)
df9172
df9172
* Tue May 19 2020 Michal Ruprich <mruprich@redhat.com> - 7.3-6
df9172
- Removing texi2html, it is not available in Rawhide anymore
df9172
df9172
* Mon May 18 2020 Michal Ruprich <mruprich@redhat.com> - 7.3-5
df9172
- Rebuild for new version of libyang
df9172
df9172
* Tue Apr 21 2020 Björn Esser <besser82@fedoraproject.org> - 7.3-4
df9172
- Rebuild (json-c)
df9172
df9172
* Mon Apr 13 2020 Björn Esser <besser82@fedoraproject.org> - 7.3-3
df9172
- Update json-c-0.14 patch with a solution from upstream
df9172
df9172
* Mon Apr 13 2020 Björn Esser <besser82@fedoraproject.org> - 7.3-2
df9172
- Add support for upcoming json-c 0.14.0
df9172
df9172
* Wed Feb 19 2020 Michal Ruprich <mruprich@redhat.com> - 7.3-1
df9172
- New version 7.3
df9172
df9172
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 7.2-2
df9172
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
df9172
df9172
* Mon Dec 16 2019 Michal Ruprich <mruprich@redhat.com> - 7.2-1
df9172
- New version 7.2
df9172
df9172
* Tue Nov 12 2019 Michal Ruprich <mruprich@redhat.com> - 7.1-5
df9172
- Rebuilding for new version of libyang
df9172
df9172
* Mon Oct 07 2019 Michal Ruprich <mruprich@redhat.com> - 7.1-4
df9172
- Adding noreplace to the /etc/frr/daemons file
df9172
df9172
* Fri Sep 13 2019 Michal Ruprich <mruprich@redhat.com> - 7.1-3
df9172
- New way of finding python version during build
df9172
- Replacing crypto of all routing daemons with openssl
df9172
- Disabling EIGRP crypto because it is broken
df9172
- Disabling crypto in FIPS mode
df9172
df9172
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 7.1-2
df9172
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
df9172
df9172
* Tue Jun 25 2019 Michal Ruprich <mruprich@redhat.com> - 7.1-1
df9172
- New version 7.1
df9172
df9172
* Wed Jun 19 2019 Michal Ruprich <mruprich@redhat.com> - 7.0-2
df9172
- Initial build
df9172