From b878f491b6590678210aa94ed49327d192148144 Mon Sep 17 00:00:00 2001 From: Martin Klozik Date: Fri, 21 Apr 2017 09:57:56 +0100 Subject: build: Automated VPP build VSPERF makefiles were updated to automatically download and compile VPP. VPP will not be installed into the OS, but it will be executed from VSPERF's src subdirectory. Thus underlying OS is not affected by VPP build required by VSPERF. It also allows quick switch among different versions of various tools used by VSPERF. As part of this patch, VERIFY and MERGE CI jobs were updated to build VPP and test it with basic set of integration tests. JIRA: VSPERF-493 Change-Id: I958b9031c4fefc87c4c63a471d2ba1a0db1eaaa4 Signed-off-by: Martin Klozik Reviewed-by: Al Morton Reviewed-by: Christian Trautman Reviewed-by: Sridhar Rao Reviewed-by: Trevor Cooper --- src/Makefile | 1 + src/package-list.mk | 4 +++ src/vpp/Makefile | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 src/vpp/Makefile (limited to 'src') diff --git a/src/Makefile b/src/Makefile index fbc2e711..6cd21dd6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -40,6 +40,7 @@ SUBDIRS += l2fwd SUBDIRS += dpdk SUBDIRS += ovs SUBDIRS += qemu +SUBDIRS += vpp ovs: dpdk WITH_LINUX = VHOST_USER = y diff --git a/src/package-list.mk b/src/package-list.mk index 9334cd8e..a8188f50 100644 --- a/src/package-list.mk +++ b/src/package-list.mk @@ -19,6 +19,10 @@ DPDK_TAG ?= v16.07 OVS_URL ?= https://github.com/openvswitch/ovs OVS_TAG ?= ed26e3ea9995ba632e681d5990af5ee9814f650e +# VPP section +VPP_URL ?= https://git.fd.io/vpp +VPP_TAG ?= v17.04 + # QEMU section QEMU_URL ?= https://github.com/qemu/qemu.git QEMU_TAG ?= v2.5.0 diff --git a/src/vpp/Makefile b/src/vpp/Makefile new file mode 100644 index 00000000..de50d941 --- /dev/null +++ b/src/vpp/Makefile @@ -0,0 +1,76 @@ +# makefile to manage VPP package +# + +# Copyright 2017 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include ../mk/master.mk +include ../package-list.mk + +WORK_DIR = vpp +TAG_DONE_FLAG = $(WORK_DIR)/.$(VPP_TAG).done + +.PHONY: install force_install force_make + +all: force_make + @echo "Finished making $(WORK_DIR) " + +config $(WORK_DIR)/Makefile: $(WORK_DIR)/configure + $(AT)cd $(WORK_DIR); $(CONFIG_CMD) + @echo "Configure done" + +force_make: $(WORK_DIR)/Makefile + $(AT)cd $(WORK_DIR) && git pull $(VPP_URL) $(VPP_TAG) + @echo "git pull done" + # install vpp dependecies, currently it works for RHEL, CentOS and Ubuntu + # another option is to copy all required VPP dependencies into VSPERF + # installation files and keep them updated + $(AT)$(MAKE) -C $(WORK_DIR) UNATTENDED=y install-dep + $(AT)$(MAKE) -C $(WORK_DIR) build-release $(MORE_MAKE_FLAGS) + # vppctl expects that vpp_api_test is installed in system directories + # in order to execute vppctl from src/ subtree we have to use absolute path + $(AT)sed -i -e 's|vpp_api_test|$(CURDIR)/$(WORK_DIR)/build-root/install-vpp-native/vpp/bin/vpp_api_test|g' $(WORK_DIR)/build-root/install-vpp-native/vpp/bin/vppctl + @echo "Make done" + +install: + @echo "Make install in $(WORK_DIR) (stub) " + +# hard way to clean and clobber +clean: + $(AT)cd $(WORK_DIR) && git clean -xfd *.o +clobber: + $(AT)rm -rf $(WORK_DIR) + +# distclean is for developer who would like to keep the +# clone git repo, saving time to fetch again from url +distclean: + $(AT)cd $(WORK_DIR) && git clean -xfd && git checkout -f + +test: + @echo "Make test in $(WORK_DIR) (stub) " + +sanity: + @echo "Make sanity in $(WORK_DIR) (stub) " + +$(WORK_DIR)/configure: $(TAG_DONE_FLAG) + +$(WORK_DIR): + $(AT)git clone $(VPP_URL) + +$(TAG_DONE_FLAG): $(WORK_DIR) + $(AT)cd vpp; git checkout $(VPP_TAG) +ifneq ($(PATCH_FILE),) + $(AT)cd $(WORK_DIR); patch -p1 < ../$(PATCH_FILE) +endif + $(AT)touch $@ -- cgit 1.2.3-korg