From 4b0ac82a739bf7f1233ebb61269e27aa4cf9ab36 Mon Sep 17 00:00:00 2001 From: Thomas F Herbert Date: Tue, 29 Aug 2017 16:07:51 -0400 Subject: [PATCH] Add option to build without multi-buffer crypto. 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 --- Makefile | 3 ++- dpdk/Makefile | 5 +++-- extras/rpm/vpp.spec | 12 ++++++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 01da7d12982..c08115d47e5 100644 --- 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 diff --git a/dpdk/Makefile b/dpdk/Makefile index afe50c4ba7b..4e0ad4f3690 100644 --- a/dpdk/Makefile +++ b/dpdk/Makefile @@ -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 diff --git a/extras/rpm/vpp.spec b/extras/rpm/vpp.spec index 439e6bdaf41..6c14b039b3f 100644 --- a/extras/rpm/vpp.spec +++ b/extras/rpm/vpp.spec @@ -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 -- 2.16.6