summaryrefslogtreecommitdiffstats
path: root/build-root/rpm
diff options
context:
space:
mode:
Diffstat (limited to 'build-root/rpm')
-rw-r--r--build-root/rpm/vpp.service12
-rw-r--r--build-root/rpm/vpp.spec127
2 files changed, 139 insertions, 0 deletions
diff --git a/build-root/rpm/vpp.service b/build-root/rpm/vpp.service
new file mode 100644
index 00000000000..dd8ee36bd73
--- /dev/null
+++ b/build-root/rpm/vpp.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Vector Packet Processing Process
+After=syslog.target network.target auditd.service
+
+[Service]
+ExecStart=/bin/sh -c '/usr/bin/vpe $(cat /etc/vpp/startup.conf | sed -e "s/#.*//")'
+Type=simple
+Restart=on-failure
+RestartSec=5s
+
+[Install]
+WantedBy=multi-user.target
diff --git a/build-root/rpm/vpp.spec b/build-root/rpm/vpp.spec
new file mode 100644
index 00000000000..ddcdeb9f1ab
--- /dev/null
+++ b/build-root/rpm/vpp.spec
@@ -0,0 +1,127 @@
+%define _vpp_install_dir ../install-vpp-native
+%define _vpp_build_dir ../build-tool-native
+%define _unitdir /lib/systemd/system
+%define _topdir %(pwd)
+%define _builddir %{_topdir}
+%define _version %(../scripts/version rpm-version)
+%define _release %(../scripts/version rpm-release)
+
+Name: vpp
+Summary: Vector Packet Processing
+License: MIT
+Version: %{_version}
+Release: %{_release}
+Requires: vpp-lib = %{_version}-%{_release}, net-tools, pciutils
+
+%description
+This package provides VPP executables: vpe, vpe_api_test, vpe_json_test
+vpe - the vector packet engine
+vpe_api_test - vector packet engine API test tool
+vpe_json_test - vector packet engine JSON test tool
+
+%package lib
+Summary: VPP libraries
+Group: System Environment/Libraries
+
+%description lib
+This package contains the VPP shared libraries, including:
+vppinfra - foundation library supporting vectors, hashes, bitmaps, pools, and string formatting.
+dpdk - Intel DPDK library
+svm - vm library
+vlib - vector processing library
+vlib-api - binary API library
+vnet - network stack library
+
+%package devel
+Summary: VPP header files, static libraries
+Group: Development/Libraries
+Requires: vpp-lib
+
+%description devel
+This package contains the header files and static libraries for
+vppinfra. Install this package if you want to write or compile a
+program that needs vpp.
+Do we need to list those header files or just leave it blank ?
+dynamic vectors (vec.c), dynamic bitmaps (bitmap.h), allocation heap of
+objects (heap.c), allocation pool(pool.h), dynamic hash tables (hash.c), memory
+allocator (mheap.c), extendable printf-like interface built on top of vectors
+(format.c), formats for data structures (std-formats.c), and support for clock
+time-based function calls (timer.c).
+TODO: reference and describe only the .h files
+
+%install
+#
+# binaries
+#
+mkdir -p -m755 %{buildroot}%{_bindir}
+mkdir -p -m755 %{buildroot}%{_unitdir}
+install -p -m 755 %{_vpp_install_dir}/*/bin/* %{buildroot}%{_bindir}
+install -p -m 755 %{_vpp_build_dir}/vppapigen/vppapigen %{buildroot}%{_bindir}
+#
+# configs
+#
+mkdir -p -m755 %{buildroot}/etc/vpp
+mkdir -p -m755 %{buildroot}/etc/sysctl.d
+install -p -m 644 vpp.service %{buildroot}%{_unitdir}
+install -p -m 644 ../../vpp/conf/startup.conf %{buildroot}/etc/vpp
+install -p -m 644 ../../vpp/conf/80-vpp.conf %{buildroot}/etc/sysctl.d
+#
+# libraries
+#
+mkdir -p -m755 %{buildroot}%{_libdir}
+for file in $(find %{_vpp_install_dir}/*/lib* -type f -name '*.so.*.*.*' -print )
+do
+ install -p -m 755 $file %{buildroot}%{_libdir}
+done
+for file in $(cd %{buildroot}%{_libdir} && find . -type f -print | sed -e 's/^\.\///')
+do
+ # make lib symlinks
+ ( cd %{buildroot}%{_libdir} &&
+ ln -fs $file $(echo $file | sed -e 's/\(\.so\.[0-9]\+\).*/\1/') )
+done
+#
+# devel
+#
+for dir in $(find %{_vpp_install_dir}/*/include/ -maxdepth 0 -type d -print | grep -v dpdk)
+do
+ for subdir in $(cd ${dir} && find . -type d -print)
+ do
+ mkdir -p -m755 %{buildroot}/usr/include/${subdir}
+ done
+ for file in $(cd ${dir} && find . -type f -print)
+ do
+ install -p -m 644 $dir/$file %{buildroot}%{_includedir}/$file
+ done
+done
+# sample plugin
+mkdir -p -m755 %{buildroot}/usr/share/doc/vpp/examples/sample-plugin/sample
+for file in $(cd %{_vpp_install_dir}/../../sample-plugin && find -type f -print)
+do
+ install -p -m 644 %{_vpp_install_dir}/../../sample-plugin/$file \
+ %{buildroot}/usr/share/doc/vpp/examples/sample-plugin/$file
+done
+
+%post
+sysctl --system
+%systemd_post vpp.service
+
+%postun
+%systemd_postun_with_restart vpp.service
+
+%files
+%defattr(-,bin,bin)
+%{_unitdir}/vpp.service
+/usr/bin/vpe*
+/usr/bin/svm*
+%config /etc/sysctl.d/80-vpp.conf
+%config /etc/vpp/startup.conf
+
+%files lib
+%defattr(-,bin,bin)
+%{_libdir}/*
+
+%files devel
+%defattr(-,bin,bin)
+/usr/bin/vppapigen
+%{_includedir}/*
+/usr/share/doc/vpp/examples/sample-plugin