summaryrefslogtreecommitdiff
path: root/freerouter.spec
diff options
context:
space:
mode:
Diffstat (limited to 'freerouter.spec')
-rw-r--r--freerouter.spec161
1 files changed, 161 insertions, 0 deletions
diff --git a/freerouter.spec b/freerouter.spec
new file mode 100644
index 0000000..2bb9345
--- /dev/null
+++ b/freerouter.spec
@@ -0,0 +1,161 @@
+%undefine _missing_build_ids_terminate_build
+%undefine _debugsource_packages
+
+Name: freerouter
+Version: 24.8.15
+Release: 1%{?dist}
+Summary: Free, open source router OS process
+
+License: CC-BY-SA
+URL: http://www.freertr.org/
+Source0: https://github.com/mc36/freeRtr/archive/refs/tags/v%{?version}.tar.gz
+Source1: freerouter-p4dpdk.service
+Source2: freerouter-p4dpdk-pkt.service
+Source3: freerouter-p4emu.service
+Source4: freerouter-p4mnl.service
+Source5: freerouter-p4udp.service
+Source6: freerouter-p4urng.service
+Source7: freerouter-p4xdp.service
+Source8: freerouter-p4xsk.service
+%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?openEuler}
+Recommends: socat
+Recommends: freerouter-native
+BuildRequires: liburing-devel
+BuildRequires: libxdp-devel
+BuildRequires: openssl-devel
+%else
+BuildRequires: openssl1.1-devel
+%endif
+BuildRequires: systemd
+BuildRequires: clang llvm
+BuildRequires: dpdk-devel
+BuildRequires: libpcap-devel
+BuildRequires: libmnl-devel
+BuildRequires: java-11-openjdk-devel
+Requires: java-11-openjdk-headless
+
+%description
+freeRouter speaks routing protocols, and (re)encapsulates packets on
+interfaces since it handles packets itself, it is independent of
+underlaying os capabilities (optionally, it can export forwarding tables
+through openflow to external switch) since it is an unprivilegized process,
+it receives and sends packets through sockets there are external, privileged
+processes that place traffic to these sockets (it means that internet can
+be used as backplane for router processes) the command line tries to
+mimic the industry standards with one exception: no global routing table:
+every routed interface must be in a virtual routing table positive side
+effect: there are no vrf-awareness questions
+
+%package native
+Summary: Native tools for better performance than socat
+Requires: %{name} = %{version}-%{release}
+%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?openEuler}
+Recommends: dpdk-tools xdp-tools
+%endif
+
+%description native
+These tools are completely optional but should deliver better performance
+than socat.
+
+
+%package doc
+BuildArch: noarch
+Summary: Examples of freeRouter test configurations
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+Examples of freeRouter test configurations.
+
+
+%prep
+%setup -q -n freeRtr-%{?version}
+cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} .
+
+%build
+pushd src
+./cj.sh
+./cp.sh
+popd
+
+pushd misc/native
+sed -i '/^strip/d' c.sh
+./c.sh
+popd
+
+%install
+find binTmp -size 0 -print -delete
+find misc/demo -type f -not -name '*.txt' -delete
+sed -i 's|/usr/bin/freerouter|/usr/lib/jvm/jre-11-openjdk/bin/java -jar /usr/share/java/rtr.jar|g' misc/debian2/freerouter.service
+
+mkdir -p %{buildroot}%{_bindir}
+mkdir -p %{buildroot}%{_libdir}
+mkdir -p %{buildroot}%{_javadir}
+mkdir -p %{buildroot}%{_unitdir}
+mkdir -p %{buildroot}%{_datadir}/freerouter
+mkdir -p %{buildroot}%{_sysconfdir}/freerouter/interfaces
+mkdir -p %{buildroot}%{_sharedstatedir}/freerouter
+
+install -m644 src/rtr.jar %{buildroot}%{_javadir}
+cp binTmp/*.bin %{buildroot}%{_bindir}
+install -m755 binTmp/*.so %{buildroot}%{_libdir}
+install -m755 misc/debian2/interface.sh %{buildroot}%{_datadir}/freerouter/
+install -m644 misc/debian2/interface.cpu_port %{buildroot}%{_sysconfdir}/freerouter/interfaces/cpu_port
+install -m644 misc/debian2/rtr-hw.txt misc/debian2/rtr-sw.txt %{buildroot}%{_sysconfdir}/freerouter
+install -m644 misc/debian2/freerouter-native@.service %{buildroot}%{_unitdir}
+install -m644 misc/debian2/freerouter.service %{buildroot}%{_unitdir}
+install -m644 misc/debian2/freerouter.service %{buildroot}%{_unitdir}/freerouter@.service
+sed -i 's|rtr-|%i-|g' %{buildroot}%{_unitdir}/freerouter@.service
+
+%pre
+getent group freerouter >/dev/null 2>&1 || groupadd -r freerouter >/dev/null 2>&1 || :
+getent passwd freerouter >/dev/null 2>&1 || useradd -M -r -g freerouter -s /sbin/nologin \
+ -c "freeRouter OS process" -d %{_sharedstatedir}/freerouter freerouter || :
+usermod -aG dialout freerouter
+
+%post
+%systemd_post freerouter.service
+%systemd_post freerouter@\*.service
+
+%preun
+%systemd_preun freerouter.service
+%systemd_preun freerouter@\*.service
+
+%postun
+%systemd_postun_with_restart freerouter.service
+%systemd_postun_with_restart freerouter@\*.service
+
+%post native
+%systemd_post freerouter-native@\*.service
+
+%preun native
+%systemd_preun freerouter-native@\*.service
+
+%postun native
+%systemd_postun_with_restart freerouter-native@\*.service
+
+
+%files
+%license misc/debian2/copyright
+%doc misc/demo misc/captures readme.md changelog.txt todo.txt
+%dir %attr(0755,freerouter,freerouter) %{_sharedstatedir}/freerouter
+%dir %attr(0770,freerouter,freerouter) %{_sysconfdir}/freerouter
+%attr(0644,freerouter,freerouter) %config(noreplace) %{_sysconfdir}/freerouter/rtr-hw.txt
+%attr(0644,freerouter,freerouter) %config(noreplace) %{_sysconfdir}/freerouter/rtr-sw.txt
+%{_javadir}/rtr.jar
+%{_unitdir}/freerouter.service
+%{_unitdir}/freerouter@.service
+
+%files native
+%doc freerouter-p4dpdk.service freerouter-p4dpdk-pkt.service
+%doc freerouter-p4emu.service freerouter-p4mnl.service
+%doc freerouter-p4udp.service freerouter-p4urng.service
+%doc freerouter-p4xdp.service freerouter-p4xsk.service
+%dir %{_sysconfdir}/freerouter/interfaces
+%config(noreplace) %{_sysconfdir}/freerouter/interfaces/cpu_port
+%{_bindir}/*.bin
+%{_libdir}/*.so
+%{_datadir}/freerouter/
+%{_unitdir}/freerouter-native@.service
+
+%files doc
+%doc cfg