## START: Set by rpmautospec ## (rpmautospec version 0.8.4) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 1; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2025 Robin Jarry %global forgeurl https://github.com/DPDK/grout %global _lto_cflags %nil %global dpdk_version 25.11.3 %define dpdk_cpu generic %ifarch x86_64 %if %{defined el9} %global toolset gcc-toolset-13 %global __meson /usr/bin/scl run %toolset -- /usr/bin/meson %define dpdk_cpu x86-64-v2 %endif %if %{defined el10} %define dpdk_cpu x86-64-v3 %endif %endif # FRR integration (disabled on EPEL) %if %{defined epel} %bcond_with frr %else %bcond_without frr %endif Name: grout Version: 0.18.0 Summary: Graph router based on DPDK License: BSD-3-Clause Group: System Environment/Daemons %forgemeta URL: %{forgeurl} Release: %{autorelease} Source0: %{forgesource} Source1: https://fast.dpdk.org/rel/dpdk-%{dpdk_version}.tar.xz Source2: %{forgeurl}/releases/download/v%{version}/grout-%{version}.tar.gz.asc Source3: %{forgeurl}/raw/refs/heads/main/devtools/release-keys.asc BuildRequires: gnupg2 %if %{defined toolset} BuildRequires: %toolset BuildRequires: scl-utils %else BuildRequires: gcc >= 13 %endif BuildRequires: libcap-devel BuildRequires: libcmocka-devel BuildRequires: libecoli-devel >= 0.10.0 BuildRequires: libevent-devel BuildRequires: libmnl-devel BuildRequires: make BuildRequires: meson BuildRequires: ninja-build BuildRequires: numactl-devel BuildRequires: pkgconf BuildRequires: scdoc BuildRequires: socat BuildRequires: systemd %if %{with frr} BuildRequires: frr-headers >= 10.5 BuildRequires: libyang-devel BuildRequires: json-c-devel %endif # DPDK dependencies BuildRequires: libarchive-devel BuildRequires: python3-pyelftools BuildRequires: rdma-core-devel Provides: bundled(dpdk) = %{dpdk_version} # No point in running a DPDK application on 32 bit x86: see fedora#2336884 ExcludeArch: %{ix86} # DPDK does not build on s390x: see fedora#2336876 ExcludeArch: s390x # Upstream does not support ppc64le: see fedora#2459679 ExcludeArch: ppc64le %description grout stands for Graph Router. In English, "grout" refers to thin mortar that hardens to fill gaps between tiles. grout is a DPDK based network processing application. It uses the rte_graph library for data path processing. Its main purpose is to simulate a network function or a physical router for testing/replicating real (usually closed source) VNF/CNF behavior with an open-source tool. It comes with a client library to configure it over a standard UNIX socket and a CLI that uses that library. The CLI can be used as an interactive shell, but also in scripts one command at a time, or by batches. %package headers Summary: Development headers for building %{name} API clients BuildArch: noarch %description headers This package contains the development headers to build %{name} API clients. %if %{with frr} %global frr_curr %(rpm -q --qf '%%{version}' frr-headers | awk -F. -v OFS=. '{ print $1, $2 }') %global frr_next %(rpm -q --qf '%%{version}' frr-headers | awk -F. -v OFS=. '{ print $1, $2+1 }') %package frr Summary: FRR zebra dataplane plugin for grout. Requires: %{name}%{?_isa} = %{version}-%{release} Requires: frr%{?_isa} >= %{frr_curr} Requires: frr%{?_isa} < %{frr_next} %description frr This package contains the FRR zebra dataplane plugin for grout. %endif %prep %gpgverify -k3 -s2 -d0 %forgesetup %autopatch -p1 mkdir -p subprojects/packagecache/ mv %{SOURCE1} subprojects/packagecache/ %build export GROUT_VERSION=%{version}-%{release} %meson -Dfrr=%{?with_frr:enabled}%{!?with_frr:disabled} \ -Ddpdk_cpu=%{dpdk_cpu} %meson_build %install %meson_install --skip-subprojects %if %{without frr} rm -f %{buildroot}%{_mandir}/man7/grout-frr.7* %endif %post %systemd_post %{name}.service %preun %systemd_preun %{name}.service %files %doc README.md %license licenses/BSD-3-clause.txt %config(noreplace) %{_sysconfdir}/default/grout %config(noreplace) %{_sysconfdir}/grout.init %attr(644, root, root) %{_unitdir}/grout.service %attr(755, root, root) %{_datadir}/bash-completion/completions/grout %attr(755, root, root) %{_datadir}/bash-completion/completions/grcli %attr(755, root, root) %{_bindir}/grcli %attr(755, root, root) %{_bindir}/grout %attr(644, root, root) %{_mandir}/man1/grcli* %attr(644, root, root) %{_mandir}/man8/grout.8* %files headers %doc README.md %license licenses/BSD-3-clause.txt %{_datadir}/pkgconfig/grout.pc %{_includedir}/grout/*.h %if %{with frr} %post frr if [ -f /etc/frr/daemons ] && ! grep -q '^zebra_options=.*dplane_grout' /etc/frr/daemons; then cp -a /etc/frr/daemons /etc/frr/daemons.rpmsave echo 'zebra_options="$zebra_options -M dplane_grout"' >> /etc/frr/daemons fi if [ -x "/usr/lib/systemd/systemd-update-helper" ]; then /usr/lib/systemd/systemd-update-helper system-reload || : fi %postun frr if [ "$1" -eq 0 ] && [ -f /etc/frr/daemons ] && grep -q '^zebra_options=.*dplane_grout' /etc/frr/daemons; then cp -a /etc/frr/daemons /etc/frr/daemons.rpmsave sed -i -e '/^zebra_options="\$zebra_options -M dplane_grout"$/d' \ -e 's/-M dplane_grout//' /etc/frr/daemons fi if [ -x "/usr/lib/systemd/systemd-update-helper" ]; then /usr/lib/systemd/systemd-update-helper system-reload || : fi %files frr %doc README.md %license licenses/GPL-2.0-or-later.txt %{_libdir}/frr/modules/dplane_grout.so %attr(644, root, root) %{_mandir}/man7/grout-frr.7* %attr(644, root, root) %{_unitdir}/frr.service.d/grout.conf %endif %changelog ## START: Generated by rpmautospec * Wed Sep 23 2026 Robin Jarry - 0.18.0-1 - New upstream release 0.18.0 * Mon Sep 14 2026 Robin Jarry - 0.17.1-1 - New upstream release 0.17.1 * Fri Aug 21 2026 Michal Ruprich - 0.17.0-3 - Bumping version to build with correct dependencies * Tue Aug 18 2026 Robin Jarry - 0.17.0-2 - Rebuild for frr 10.7.0 * Mon Aug 17 2026 Robin Jarry - 0.17.0-1 - New upstream release 0.17.0 (fedora#2516056) * Wed Aug 12 2026 Robin Jarry - 0.16.3-2 - Rebuild for frr 10.7.0 * Tue Aug 04 2026 Robin Jarry - 0.16.3-1 - New upstream release 0.16.3 (fedora#2504044) * Thu Jul 16 2026 Fedora Release Engineering - 0.16.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild * Mon Jul 13 2026 Robin Jarry - 0.16.1-1 - New upstream release 0.16.1 (fedora#2499432) * Mon Jun 15 2026 Yaakov Selkowitz - 0.16.0-2 - Rebuilt for openssl 4.0 * Thu Jun 11 2026 Robin Jarry - 0.16.0-1 - New upstream release 0.15.0 (fedora#2487832) * Mon Apr 20 2026 Robin Jarry - 0.15.0-2 - Disable build on ppc64le (fedora#2459679) * Fri Apr 10 2026 Robin Jarry - 0.15.0-1 - New upstream release 0.15.0 (fedora#2456872) * Fri Jan 16 2026 Fedora Release Engineering - 0.14.3-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild * Sat Dec 20 2025 Robin Jarry - 0.14.3-2 - Remove invalid requires for grout-headers * Sat Dec 20 2025 Robin Jarry - 0.14.3-1 - New upstream release 0.14.3 (fedora#2421499) * Sat Dec 20 2025 Robin Jarry - 0.14.2-7 - Enable grout-frr plugin * Sat Dec 20 2025 Robin Jarry - 0.14.2-6 - Rename grout-devel to grout-headers * Sat Dec 20 2025 Robin Jarry - 0.14.2-5 - Export GROUT_VERSION without a v prefix * Sat Dec 20 2025 Robin Jarry - 0.14.2-4 - Remove duplicate install of data files * Fri Dec 12 2025 Robin Jarry - 0.14.2-3 - Force march=corei7 for embedded dpdk build (fedora#2421749) * Fri Dec 12 2025 Robin Jarry - 0.14.2-2 - Declare bundled dpdk dependency (fedora#2421749) * Thu Dec 11 2025 Robin Jarry - 0.14.2-1 - New upstream release 0.14.2 * Thu Dec 04 2025 Robin Jarry - 0.14.1-2 - Add support for EL9 build * Thu Dec 04 2025 Robin Jarry - 0.14.1-1 - New upstream release 0.14.1 * Wed Dec 03 2025 Robin Jarry - 0.14.0-1 - New upstream release 0.14.0 * Mon Dec 01 2025 Robin Jarry - 0.13.0-4 - Link against static DPDK libraries * Mon Dec 01 2025 Robin Jarry - 0.13.0-3 - Disable unit tests * Sun Nov 30 2025 Robin Jarry - 0.13.0-2 - Include upstream patch to support libecoli 0.9.1 * Tue Oct 07 2025 Robin Jarry - 0.13.0-1 - New upstream release 0.13.0 (fedora#2379672) * Mon Oct 06 2025 Robin Jarry - 0.12.0-1 - New upstream release 0.12.0 * Thu Jul 24 2025 Fedora Release Engineering - 0.10.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild * Fri Jun 13 2025 Robin Jarry - 0.10.3-1 - New upstream release 0.10.3 (fedora#2372642) * Fri May 30 2025 Robin Jarry - 0.10.2-1 - New upstream release 0.10.2 (fedora#2368934) * Wed May 28 2025 Robin Jarry - 0.10.1-1 - New upstream release 0.10.1 * Wed May 07 2025 Robin Jarry - 0.10.0-1 - New upstream release 0.10.0 (fedora#2364689) * Tue Apr 15 2025 Robin Jarry - 0.9.1-1 - New upstream release 0.9.1 (fedora#2359712) * Mon Mar 31 2025 Robin Jarry - 0.9.0-1 - New upstream release 0.9.0 (fedora#2356278) * Wed Mar 26 2025 Robin Jarry - 0.8.4-1 - New upstream release 0.8.4 * Tue Mar 25 2025 Robin Jarry - 0.8.3-1 - New upstream release 0.8.3 (fedora#2354758) * Thu Feb 20 2025 Robin Jarry - 0.7.1-1 - New upstream release 0.7.1 (fedora#2346746) * Thu Jan 30 2025 Robin Jarry - 0.6-1 - New upstream release 0.6 (fedora#2342828) * Thu Jan 23 2025 Robin Jarry - 0.5-7 - Re-enable LTO flags * Thu Jan 23 2025 Robin Jarry - 0.5-6 - Fix build after sbin and bin unification (fedora#2340579) * Fri Jan 17 2025 Fedora Release Engineering - 0.5-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild * Mon Jan 13 2025 Robin Jarry - 0.5-4 - Disable all 32-bit builds (fedora#2336884) * Fri Jan 10 2025 Robin Jarry - 0.5-3 - Disable build on i686 * Fri Jan 10 2025 Robin Jarry - 0.5-2 - Disable build on s390x * Thu Jan 09 2025 Robin Jarry - 0.5-1 - New upstream release 0.5 * Thu Jan 09 2025 Robin Jarry - 0.4-1 - New upstream release 0.4 * Thu Jan 09 2025 Robin Jarry - 0.3-1 - Inital import (fedora#2336522) ## END: Generated by rpmautospec