From d89f21fc0602761f5adb0dd82b8c6e24a5636a20 Mon Sep 17 00:00:00 2001 From: Lou Berger Date: Wed, 8 Jan 2025 00:16:10 +0000 Subject: [PATCH 1/2] redhat: Add option to build pkg without docs and rpki support, allow for different system environments by including all built .so files Simplify file list by using wildcards to include any built %{_libdir}/frr/modules/*.so and +%{_libdir}/libfrr*.so* Signed-off-by: Lou Berger --- redhat/frr.spec.in | 54 ++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in index 1ba8f043b2..4c0a654c8e 100644 --- a/redhat/frr.spec.in +++ b/redhat/frr.spec.in @@ -31,6 +31,8 @@ %{!?with_watchfrr: %global with_watchfrr 1 } %{!?with_pathd: %global with_pathd 1 } %{!?with_grpc: %global with_grpc 0 } +%{!?with_rpki: %global with_rpki 1 } +%{!?with_docs: %global with_docs 1 } # user and group %{!?frr_user: %global frr_user frr } @@ -193,16 +195,22 @@ BuildRequires: pcre2-devel %if 0%{?rhel} && 0%{?rhel} < 7 #python27-devel is available from ius community repo for RedHat/CentOS 6 BuildRequires: python27-devel +%if %{with_docs} BuildRequires: python27-sphinx +%endif %else %if %{use_python2} BuildRequires: python-devel >= 2.7 +%if %{with_docs} BuildRequires: python-sphinx +%endif %else BuildRequires: python3-devel +%if %{with_docs} BuildRequires: python3-sphinx %endif %endif +%endif %if %{with_grpc} BuildRequires: grpc-devel >= 1.16.1 BuildRequires: protobuf-devel >= 3.6.1 @@ -283,6 +291,7 @@ The frr-devel package contains the header and object files necessary for developing OSPF-API and frr applications. +%if %{with_rpki} %package rpki-rtrlib Summary: BGP RPKI support (rtrlib) Group: System Environment/Daemons @@ -295,6 +304,7 @@ against cryptographic information stored in WHOIS databases. This is used to prevent hijacking of networks on the wider internet. It is only relevant to internet service providers using their own autonomous system number. +%endif %package snmp @@ -433,7 +443,9 @@ Adds GRPC support to the individual FRR daemons. --disable-bgp-vnc \ %endif --enable-isisd \ +%if %{with_rpki} --enable-rpki \ +%endif %if %{with_bfdd} --enable-bfdd \ %else @@ -465,9 +477,11 @@ sed -e '1c #!/usr/bin/python3' -i %{zeb_src}/tools/frr-reload.py sed -e '1c #!/usr/bin/python3' -i %{zeb_src}/tools/generate_support_bundle.py %endif +%if %{with_docs} pushd doc make info popd +%endif %install @@ -605,7 +619,9 @@ zebra_spec_add_service fabricd 2618/tcp "Fabricd vty" %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true %endif +%if %{with_docs} /sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir +%endif # Create dummy config file if they don't exist so basic functions can be used. if [ ! -e %{configdir}/frr.conf ] && [ ! -e %{configdir}/zebra.conf ]; then @@ -673,7 +689,9 @@ fi /sbin/chkconfig --del frr fi %endif +%if %{with_docs} /sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir +%endif %files @@ -690,8 +708,10 @@ fi %dir %attr(755,root,root) %{_localstatedir}/log/frr %dir %attr(750,root,root) %{_runstatedir}/frr %endif -%{_infodir}/frr.info.gz -%{_mandir}/man*/* +%if %{with_docs} + %{_infodir}/frr.info.gz + %{_mandir}/man*/* +%endif %{_sbindir}/zebra %{_sbindir}/staticd %{_sbindir}/ospfd @@ -739,19 +759,9 @@ fi %endif %if %{with_pathd} %{_sbindir}/pathd - %{_libdir}/frr/modules/pathd_pcep.so %endif -%{_libdir}/libfrr.so* -%{_libdir}/libfrrcares* -%{_libdir}/libfrrospf* -%if %{with_fpm} - %{_libdir}/frr/modules/zebra_fpm.so -%endif -%{_libdir}/frr/modules/zebra_cumulus_mlag.so -%{_libdir}/frr/modules/dplane_fpm_nl.so -%{_libdir}/frr/modules/bgpd_bmp.so -%{_libdir}/libfrr_pb.so* -%{_libdir}/libfrrfpm_pb.so* +%{_libdir}/libfrr*.so* +%{_libdir}/frr/modules/*.so %{_libdir}/libmgmt_be_nb.so* %{_bindir}/* %config(noreplace) %{configdir}/[!v]*.conf* @@ -791,6 +801,7 @@ fi %endif +%if %{with_rpki} %post rpki-rtrlib # add rpki module to daemons sed -i -e 's/^\(bgpd_options=\)\(.*\)\(".*\)/\1\2 -M rpki\3/' %{_sysconfdir}/frr/daemons @@ -798,22 +809,9 @@ sed -i -e 's/^\(bgpd_options=\)\(.*\)\(".*\)/\1\2 -M rpki\3/' %{_sysconfdir}/frr %postun rpki-rtrlib # remove rpki module from daemons sed -i 's/ -M rpki//' %{_sysconfdir}/frr/daemons - -%files rpki-rtrlib -%{_libdir}/frr/modules/bgpd_rpki.so - - -%files snmp -%{_libdir}/libfrrsnmp.so* -%{_libdir}/frr/modules/*snmp.so - - -%if %{with_grpc} -%files grpc -%{_libdir}/libfrrgrpc_pb.* -%{_libdir}/frr/modules/grpc.so %endif + %files devel %{_libdir}/lib*.so %dir %{_includedir}/%{name} From e2b5eed59f9a91fffb4b92de2586e984a8c5e2fe Mon Sep 17 00:00:00 2001 From: Lou Berger Date: Wed, 8 Jan 2025 00:17:42 +0000 Subject: [PATCH 2/2] doc: update redhat packaging doc with new options and use of Rocky 8 (Centos 8 is no more) Signed-off-by: Lou Berger --- doc/developer/packaging-redhat.rst | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/doc/developer/packaging-redhat.rst b/doc/developer/packaging-redhat.rst index 8037873461..277de5d16f 100644 --- a/doc/developer/packaging-redhat.rst +++ b/doc/developer/packaging-redhat.rst @@ -3,7 +3,7 @@ Packaging Red Hat ================= -Tested on CentOS 6, CentOS 7, CentOS 8 and Fedora 24. +Tested on CentOS 6, CentOS 7, Rocky 8 and Fedora 24. 1. On CentOS 6, refer to :ref:`building-centos6` for details on installing sufficiently up-to-date package versions to enable building FRR. @@ -18,14 +18,14 @@ Tested on CentOS 6, CentOS 7, CentOS 8 and Fedora 24. yum install rpm-build net-snmp-devel pam-devel libcap-devel - For CentOS 7 and CentOS 8, the package will be built using python3 + For CentOS 7 and Rocky 8, the package will be built using python3 and requires additional python3 packages:: yum install python3-devel python3-sphinx .. note:: - For CentOS 8 you need to install ``platform-python-devel`` package + For Rocky 8 you need to install ``platform-python-devel`` package to provide ``/usr/bin/pathfix.py``:: yum install platform-python-devel @@ -33,7 +33,7 @@ Tested on CentOS 6, CentOS 7, CentOS 8 and Fedora 24. If ``yum`` is not present on your system, use ``dnf`` instead. - You should enable ``PowerTools`` repo if using CentOS 8 which + You should enable ``PowerTools`` repo if using Rocky 8 which is disabled by default. 4. Checkout FRR:: @@ -88,11 +88,18 @@ Tested on CentOS 6, CentOS 7, CentOS 8 and Fedora 24. %{!?with_watchfrr: %global with_watchfrr 1 } %{!?with_pathd: %global with_pathd 1 } %{!?with_grpc: %global with_grpc 0 } + %{!?with_rpki: %global with_rpki 1 } + %{!?with_docs: %global with_docs 1 } 8. Build the RPM:: rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/frr.spec + To override :file:`rpm/SPECS/frr.spec` defaults on the rpmbuild + commandline with: + + rpmbuild --define 'variable value' + If building with RPKI, then download and install the additional RPKI packages from https://ci1.netdef.org/browse/RPKI-RTRLIB/latestSuccessful/artifact