Add option to build without multi-buffer crypto. 90/8290/3
authorThomas F Herbert <therbert@redhat.com>
Tue, 29 Aug 2017 20:07:51 +0000 (16:07 -0400)
committerSergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Tue, 12 Sep 2017 18:42:32 +0000 (18:42 +0000)
JIRA VPP-498

This patch also allows RPMs to be built without multi-
buffer crypto for some RPM based downstream distros that
don't have sufficiently new nasm or don't have an USA
export license for multi-buffer crypto.

The default is to build WITH multi-buffer crypto
for x86-64. This patch allows optional building without
multi-buffer crypto.

To build without multi-buffer crypto, set the AESNI
environment variable to n.
To build rpm packages without multi-buffer crypto,
build the rpms with the option turned off.

make build AESNI=n

or..

make pkg-rpm --without aesni

---How to test this patch on a Centos build.---

Build as above and verify that nasm isn't executed during
the build process.
vpp may be installed and the dpdk plugin may be inspected to
verify that the multi-buffer code isn't present.

Change-Id: I8c5cfd4cdd9eb2b96772a687eaa54560806e001b
Signed-off-by: Thomas F Herbert <therbert@redhat.com>
Makefile
dpdk/Makefile
extras/rpm/vpp.spec

index 01da7d1..c08115d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -17,6 +17,7 @@ CCACHE_DIR?=$(BR)/.ccache
 GDB?=gdb
 PLATFORM?=vpp
 SAMPLE_PLUGIN?=no
+export AESNI?=y
 
 ,:=,
 define disable_plugins
@@ -94,7 +95,7 @@ endif
 RPM_DEPENDS += chrpath libffi-devel rpm-build
 ifeq ($(OS_ID),fedora)
        RPM_DEPENDS += nasm
-else
+else ifeq ($(findstring y,$(AESNI)),y)
        RPM_DEPENDS += https://kojipkgs.fedoraproject.org//packages/nasm/2.12.02/2.fc26/x86_64/nasm-2.12.02-2.fc26.x86_64.rpm
 endif
 
index afe50c4..4e0ad4f 100644 (file)
@@ -34,14 +34,13 @@ DPDK_17.08_TARBALL_MD5_CKSUM := 0641f59ea8ea98afefa7cfa2699f6241
 DPDK_SOURCE := $(B)/dpdk-$(DPDK_VERSION)
 MACHINE=$(shell uname -m)
 
-AESNI ?= n
 ISA_L_CRYPTO_LIB := n
 
 IPSEC_MB_VER ?= 0.46
 ISA_L_CRYPTO_VER := 2.18.0
 
 ifeq ($(MACHINE),$(filter $(MACHINE),x86_64))
-AESNI = y
+  AESNI ?= y
 # DPDK pre 17.08 depends on ISA-L Crypto library for GCM PMD
   ifneq ($(firstword $(sort $(DPDK_VERSION), 17.08)), 17.08)
   ISA_L_CRYPTO_LIB = y
@@ -49,6 +48,8 @@ AESNI = y
   $(info Building ISA-L Crypto $(ISA_L_CRYPTO_VER) library)
   endif
 $(info Building IPSec-MB $(IPSEC_MB_VER) library)
+else
+  AESNI ?= N
 endif
 
 AESNIMB_LIB_TARBALL := v$(IPSEC_MB_VER).tar.gz
index 439e6bd..6c14b03 100644 (file)
@@ -1,3 +1,4 @@
+%bcond_without aesni
 %define _vpp_build_dir   build-tool-native
 %define _unitdir         /lib/systemd/system
 %define _topdir          %(pwd)
@@ -41,7 +42,9 @@ BuildRequires: python-devel, python-virtualenv
 %endif
 BuildRequires: glibc-static, java-1.8.0-openjdk, java-1.8.0-openjdk-devel yum-utils, redhat-lsb
 BuildRequires: apr-devel
+%if %{with aesni}
 BuildRequires: nasm
+%endif
 BuildRequires: numactl-devel
 BuildRequires: autoconf automake libtool byacc bison flex
 
@@ -120,8 +123,13 @@ This package contains the python bindings for the vpp api
 groupadd -f -r vpp
 
 %build
-make bootstrap
-make -C build-root PLATFORM=vpp TAG=%{_vpp_tag} install-packages
+%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
 
 %install