%bcond_without aesni %{!?_topdir:%define _topdir %(pwd)} %define _vpp_build_dir build-tool-native %define _unitdir /lib/systemd/system %define _builddir %{_topdir} %define _mu_build_dir %{_topdir}/%{name}-%{_version}/build-root %define _vpp_tag %{getenv:TAG} %if "%{_vpp_tag}" == "" %define _vpp_tag vpp %endif %define _vpp_install_dir install-%{_vpp_tag}-native # Failsafe backport of Python2-macros for RHEL <= 6 %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %{!?python_version: %global python_version %(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])")} %{!?__python2: %global __python2 %{__python}} %{!?python2_sitelib: %global python2_sitelib %{python_sitelib}} %{!?python2_sitearch: %global python2_sitearch %{python_sitearch}} %{!?python2_version: %global python2_version %{python_version}} %{!?python2_minor_version: %define python2_minor_version %(%{__python} -c "import sys ; print sys.version[2:3]")} %{?systemd_requires} # SELinux Related definitions %global selinuxtype targeted %global moduletype services %global modulenames vpp-custom # Usage: _format var format # Expand 'modulenames' into various formats as needed # Format must contain '$x' somewhere to do anything useful %global _format() export %1=""; for x in %{modulenames}; do %1+=%2; %1+=" "; done; # Relabel files %global relabel_files() \ # ADD files in *.fc file # Version of distribution SELinux policy package %global selinux_policyver 3.13.1-128.6.fc22 Name: vpp Summary: Vector Packet Processing License: ASL 2.0 Version: %{_version} Release: %{_release} BuildRequires: systemd, chrpath BuildRequires: check, check-devel BuildRequires: mbedtls-devel mbedtls %if 0%{?fedora} Requires: vpp-lib = %{_version}-%{_release}, vpp-selinux-policy = %{_version}-%{_release}, net-tools, pciutils Requires: compat-openssl10 Requires: boost-filesystem mbedtls libffi-devel BuildRequires: subunit, subunit-devel BuildRequires: compat-openssl10-devel BuildRequires: python, python-devel, python-virtualenv, python-ply BuildRequires: python3, python36-devel, python3-virtualenv BuildRequires: cmake %else %if 0%{rhel} >= 7 Requires: epel-release Requires: vpp-lib = %{_version}-%{_release}, vpp-selinux-policy = %{_version}-%{_release}, net-tools, pciutils, python36 Requires: boost-filesystem mbedtls libffi-devel BuildRequires: epel-release BuildRequires: mbedtls-devel mbedtls BuildREquires: openssl-devel BuildRequires: python36-devel %if 0%{rhel} == 7 BuildRequires: devtoolset-7-toolchain BuildRequires: cmake3 BuildRequires: glibc-static, yum-utils %else BuildRequires: cmake BuildRequires: dnf-utils %endif %endif %endif BuildRequires: libffi-devel BuildRequires: redhat-lsb BuildRequires: apr-devel BuildRequires: numactl-devel BuildRequires: autoconf automake libtool byacc bison flex BuildRequires: boost boost-devel BuildRequires: selinux-policy selinux-policy-devel Source: %{name}-%{_version}-%{_release}.tar.xz # Source: vpp-latest.tar.xz %description This package provides VPP executables: vpp, vpp_api_test, vpp_json_test vpp - the vector packet engine vpp_api_test - vector packet engine API test tool vpp_json_test - vector packet engine JSON test tool %package lib Summary: VPP libraries Group: System Environment/Libraries Requires: vpp-selinux-policy = %{_version}-%{_release} %description lib This package contains the VPP shared libraries, including: vppinfra - foundation library supporting vectors, hashes, bitmaps, pools, and string formatting. 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 for VPP. Install this package if you want to write a program for compilation and linking with vpp lib. vlib vlibmemory vnet - devices, classify, dhcp, ethernet flow, gre, ip, etc. vpp-api vppinfra %package plugins Summary: Vector Packet Processing--runtime plugins Group: System Environment/Libraries Requires: vpp = %{_version}-%{_release} numactl-libs %description plugins This package contains VPP plugins %package api-lua Summary: VPP api lua bindings Group: Development/Libraries Requires: vpp = %{_version}-%{_release}, vpp-lib = %{_version}-%{_release} %description api-lua This package contains the lua bindings for the vpp api %package api-python Summary: VPP api python bindings Group: Development/Libraries Requires: vpp = %{_version}-%{_release}, vpp-lib = %{_version}-%{_release}, libffi-devel Requires: python-setuptools %description api-python This package contains the python bindings for the vpp api %package api-python3 Summary: VPP api python3 bindings Group: Development/Libraries Requires: vpp = %{_version}-%{_release}, vpp-lib = %{_version}-%{_release}, libffi-devel Requires: python-setuptools %description api-python3 This package contains the python3 bindings for the vpp api %package selinux-policy Summary: VPP Security-Enhanced Linux (SELinux) policy Group: System Environment/Base Requires(post): selinux-policy-base >= %{selinux_policyver}, selinux-policy-targeted >= %{selinux_policyver}, policycoreutils, libselinux-utils %if 0%{rhel} < 8 Requires(post): policycoreutils-python %else Requires(post): python3-policycoreutils %endif %description selinux-policy This package contains a tailored VPP SELinux policy %prep %setup -q -n %{name}-%{_version} %pre # Add the vpp group groupadd -f -r vpp %build %if 0%{rhel} < 8 . /opt/rh/devtoolset-7/enable %endif %if %{with aesni} make bootstrap make -C build-root PLATFORM=vpp TAG=%{_vpp_tag} install-packages %else make bootstrap AESNI=n make -C build-root PLATFORM=vpp AESNI=n TAG=%{_vpp_tag} install-packages %endif cd %{_mu_build_dir}/../src/vpp-api/python && %py2_build cd %{_mu_build_dir}/../src/vpp-api/python && %py3_build cd %{_mu_build_dir}/../extras/selinux && make -f %{_datadir}/selinux/devel/Makefile %install # # binaries # mkdir -p -m755 %{buildroot}%{_bindir} mkdir -p -m755 %{buildroot}%{_unitdir} install -p -m 755 %{_mu_build_dir}/%{_vpp_install_dir}/vpp/bin/* %{buildroot}%{_bindir} # api mkdir -p -m755 %{buildroot}/usr/share/vpp/api # # configs # mkdir -p -m755 %{buildroot}/etc/vpp mkdir -p -m755 %{buildroot}/etc/sysctl.d install -p -m 644 %{_mu_build_dir}/../extras/r