We need to have new tenants in the development package.
This is first of series of patches which will allow us to have multiple
external libs and tools packaged for developer's convenience.
Change-Id: I884bd75fba96005bbf8cea92774682b2228e0e22
Signed-off-by: Damjan Marion <damarion@cisco.com>
/build-root/vapi_test/
/build-root/vom_test/
/build-config.mk
-/dpdk/*.tar.gz
-/dpdk/*.tar.xz
-/dpdk/vpp-dpdk*.deb
-/dpdk/vpp-dpdk*.changes
+/build/external/*.tar.gz
+/build/external/*.tar.xz
+/build/external/vpp-*.deb
+/build/external/vpp-*.changes
/path_setup
/tools/
# start autotools ignore
.PHONY: test test-debug retest retest-debug test-doc test-wipe-doc test-help test-wipe
.PHONY: test-cov test-wipe-cov
+define banner
+ @echo "========================================================================"
+ @echo " $(1)"
+ @echo "========================================================================"
+ @echo " "
+endef
+
help:
@echo "Make Targets:"
@echo " install-dep - install software dependencies"
@echo " run-vat - run vpp-api-test tool"
@echo " pkg-deb - build DEB packages"
@echo " pkg-rpm - build RPM packages"
- @echo " dpdk-install-dev - install DPDK development packages"
+ @echo " install-ext-deps - install external development dependencies"
@echo " ctags - (re)generate ctags database"
@echo " gtags - (re)generate gtags database"
@echo " cscope - (re)generate cscope database"
make -C extras/rpm srpm
dpdk-install-dev:
- make -C dpdk install-$(PKG)
+ $(call banner,"This command is deprecated. Please use 'make install-ext-libs'")
+ make -C build/external install-$(PKG)
+
+install-ext-deps:
+ make -C build/external install-$(PKG)
ctags: ctags.files
@ctags --totals --tag-relative -L $<
wipe-doxygen:
$(call make-doxy)
-define banner
- @echo "========================================================================"
- @echo " $(1)"
- @echo "========================================================================"
- @echo " "
-endef
-
-verify: install-dep $(BR)/.deps.ok dpdk-install-dev
+verify: install-dep $(BR)/.deps.ok install-ext-deps
$(call banner,"Building for PLATFORM=vpp using gcc")
@make -C build-root PLATFORM=vpp TAG=vpp wipe-all install-packages
$(call banner,"Building sample-plugin")
--- /dev/null
+# Copyright (c) 2015 Cisco and/or its affiliates.
+# 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.
# See the License for the specific language governing permissions and
# limitations under the License.
+external_source = build
+
ifneq (,$(findstring debug,$(TAG)))
DPDK_DEBUG=y
else
DPDK_MAKE_ARGS += DPDK_MAKE_EXTRA_ARGS="$(DPDK_MAKE_EXTRA_ARGS)"
endif
-dpdk_configure = echo
+external_configure = echo
-dpdk_make_args = $(DPDK_MAKE_ARGS) ebuild-build
+external_make_args = $(DPDK_MAKE_ARGS) -C external ebuild-build
-dpdk_install = make $(DPDK_MAKE_ARGS) ebuild-install
+external_install = make $(DPDK_MAKE_ARGS) -C external ebuild-install
CMAKE?=cmake
endif
+vpp_cmake_prefix_path = /opt/vpp/external/$(shell uname -m)
+vpp_cmake_prefix_path += $(PACKAGE_INSTALL_DIR)external
+vpp_cmake_prefix_path := $(subst $() $(),;,$(vpp_cmake_prefix_path))
+
vpp_cmake_args ?=
vpp_cmake_args += -DCMAKE_INSTALL_PREFIX:PATH=$(PACKAGE_INSTALL_DIR)
vpp_cmake_args += -DCMAKE_C_FLAGS="$($(TAG)_TAG_CFLAGS)"
vpp_cmake_args += -DCMAKE_LINKER_FLAGS="$($(TAG)_TAG_LDFLAGS)"
-vpp_cmake_args += -DCMAKE_PREFIX_PATH:PATH="$(PACKAGE_INSTALL_DIR)/../dpdk"
+vpp_cmake_args += -DCMAKE_PREFIX_PATH:PATH="$(vpp_cmake_prefix_path)"
# Use devtoolset on centos 7
ifneq ($(wildcard /opt/rh/devtoolset-7/enable),)
vpp_cmake_args += -DCMAKE_PROGRAM_PATH:PATH="/opt/rh/devtoolset-7/root/bin"
endif
-vpp_configure_depend += dpdk-install
+vpp_configure_depend += external-install
vpp_configure = \
cd $(PACKAGE_BUILD_DIR) && \
$(CMAKE) -G Ninja $(vpp_cmake_args) $(call find_source_fn,$(PACKAGE_SOURCE))
B := $(DPDK_BUILD_DIR)
I := $(DPDK_INSTALL_DIR)
DPDK_VERSION ?= 18.08
-PKG_SUFFIX ?= vpp3
+PKG_VERSION ?= $(shell git describe --abbrev=0 | cut -d- -f1 | cut -dv -f2)
+PKG_SUFFIX ?= $(shell git log --oneline $$(git describe --abbrev=0).. . | wc -l)
DPDK_BASE_URL ?= http://fast.dpdk.org/rel
DPDK_TARBALL := dpdk-$(DPDK_VERSION).tar.xz
DPDK_TAR_URL := $(DPDK_BASE_URL)/$(DPDK_TARBALL)
# .deb packaging
##############################################################################
+DEB_VER := $(PKG_VERSION)
DEB_ARCH=$(shell dpkg --print-architecture 2> /dev/null)
-DEV_DEB=vpp-dpdk-dev_$(DPDK_VERSION)-$(PKG_SUFFIX)_$(DEB_ARCH).deb
-INSTALLED_DEB_VER=$(shell dpkg-query --showformat='$${Version}' --show vpp-dpdk-dev 2> /dev/null)
+DEV_DEB=vpp-ext-deps_$(DEB_VER)-$(PKG_SUFFIX)_$(DEB_ARCH).deb
+INSTALLED_VER=$(shell dpkg-query --showformat='$${Version}' --show vpp-ext-deps 2> /dev/null)
.PHONY: build-deb install-deb check-deb
deb/debian/changelog: Makefile
- @echo "vpp-dpdk ($(DPDK_VERSION)-$(PKG_SUFFIX)) unstable; urgency=low" > $@
+ @echo "vpp-ext-deps ($(DEB_VER)-$(PKG_SUFFIX)) unstable; urgency=low" > $@
@echo "" >> $@
- @echo " * DPDK Release $(DPDK_VERSION)" >> $@
+ @echo " * Version $(DEB_VER)" >> $@
@echo "" >> $@
@echo " -- VPP Dev <vpp-dev@lists.fd.io> $(shell date -R)" >> $@
build-deb: $(DEV_DEB)
install-deb:
-ifneq ($(INSTALLED_DEB_VER),$(DPDK_VERSION)-$(PKG_SUFFIX))
+ifneq ($(INSTALLED_VER),$(DEB_VER)-$(PKG_SUFFIX))
@echo "=========================================================="
- @echo " Out of date DPDK package installed."
- @echo " Installed: $(INSTALLED_DEB_VER)"
- @echo " Needed: $(DPDK_VERSION)-$(PKG_SUFFIX)"
+ @echo " Out of date vpp-ext-deps package installed."
+ @echo " Installed: $(INSTALLED_VER)"
+ @echo " Needed: $(DEB_VER)-$(PKG_SUFFIX)"
@echo "=========================================================="
@make $(DEV_DEB)
@sudo dpkg -i $(DEV_DEB)
else
@echo "=========================================================="
- @echo " Up-to-date DPDK package already installed"
+ @echo " Up-to-date vpp-ext-deps package already installed"
@echo "=========================================================="
endif
check-deb:
-ifneq ($(INSTALLED_DEB_VER),$(DPDK_VERSION)-$(PKG_SUFFIX))
+ifneq ($(INSTALLED_VER),$(DEB_VER)-$(PKG_SUFFIX))
@echo "=========================================================="
@echo " Outdated DPDK package detected:"
- @echo " Installed: vpp-dpdk-dev $(INSTALLED_DEB_VER)"
- @echo " Current: vpp-dpdk-dev $(DPDK_VERSION)-$(PKG_SUFFIX)"
+ @echo " Installed: vpp-ext-deps $(INSTALLED_VER)"
+ @echo " Current: vpp-ext-deps $(DEB_VER)-$(PKG_SUFFIX)"
@echo ""
- @echo " Please upgrade by invoking 'make dpdk-install-dev'"
+ @echo " Please upgrade by invoking 'make install-ext-deps'"
@echo " from the top level directory."
@echo "=========================================================="
endif
# .rpm packaging
##############################################################################
+RPM_VER := $(PKG_VERSION)
RPM_ARCH=$(shell rpm --eval "%{_arch}" 2> /dev/null)
-DEV_RPM=vpp-dpdk-devel-$(DPDK_VERSION)-$(PKG_SUFFIX).$(RPM_ARCH).rpm
-INSTALLED_RPM_VER=$(shell rpm -q --queryformat '%{VERSION}-%{RELEASE}' vpp-dpdk-devel 2> /dev/null | grep -v "not inst")
+DEV_RPM=vpp-ext-deps-$(RPM_VER)-$(PKG_SUFFIX).$(RPM_ARCH).rpm
+INSTALLED_RPM_VER=$(shell rpm -q --queryformat '%{VERSION}-%{RELEASE}' vpp-ext-deps 2> /dev/null | grep -v "not inst")
.PHONY: build-rpm install-rpm check-rpm
-$(DEV_RPM): Makefile rpm/vpp-dpdk.spec
+$(DEV_RPM): Makefile rpm/vpp-ext-deps.spec
@rpmbuild -bb \
--define "_topdir $(CURDIR)/rpm" \
- --define "_version $(DPDK_VERSION)" \
+ --define "_version $(RPM_VER)" \
--define "_release $(PKG_SUFFIX)" \
- $(CURDIR)/rpm/vpp-dpdk.spec
+ $(CURDIR)/rpm/vpp-ext-deps.spec
mv rpm/RPMS/$(RPM_ARCH)/*.rpm .
git clean -fdx rpm
build-rpm: $(DEV_RPM)
install-rpm:
-ifneq ($(INSTALLED_RPM_VER),$(DPDK_VERSION)-$(PKG_SUFFIX))
+ifneq ($(INSTALLED_RPM_VER),$(PRM_VER)-$(PKG_SUFFIX))
@$(MAKE) $(DEV_RPM)
sudo rpm -Uih $(DEV_RPM)
else
endif
check-rpm:
-ifneq ($(INSTALLED_RPM_VER),$(DPDK_VERSION)-$(PKG_SUFFIX))
+ifneq ($(INSTALLED_RPM_VER),$(RPM_VER)-$(PKG_SUFFIX))
@echo "=========================================================="
@echo " Outdated DPDK package detected:"
- @echo " Installed: vpp-dpdk-devel $(INSTALLED_RPM_VER)"
- @echo " Current: vpp-dpdk-devel $(DPDK_VERSION)-$(PKG_SUFFIX)"
+ @echo " Installed: vpp-ext-deps $(INSTALLED_RPM_VER)"
+ @echo " Current: vpp-ext-deps $(RPM_VER)-$(PKG_SUFFIX)"
@echo ""
- @echo " Please upgrade by invoking 'make dpdk-install-dev'"
+ @echo " Please upgrade by invoking 'make install-ext-deps'"
@echo " from the top level directory."
@echo "=========================================================="
endif
.PHONY: ebuild-build ebuild-install
ebuild-build:
-ifeq ($(INSTALLED_DEB_VER)$(INSTALLED_RPM_VER),)
+ifeq ($(INSTALLED_VER)$(INSTALLED_RPM_VER),)
@echo "=========================================================="
@echo "Building DPDK from source. Consider installing development"
- @echo "package by invoking 'make dpdk-install-dev' from the"
+ @echo "package by invoking 'make install-ext-deps' from the"
@echo "top level directory"
@echo "=========================================================="
make config
else
-ifneq ($(INSTALLED_DEB_VER),)
+ifneq ($(INSTALLED_VER),)
make check-deb
endif
ifneq ($(INSTALLED_RPM_VER),)
endif
ebuild-install:
-ifeq ($(INSTALLED_DEB_VER)$(INSTALLED_RPM_VER),)
+ifeq ($(INSTALLED_VER)$(INSTALLED_RPM_VER),)
make install
endif
--- /dev/null
+Source: vpp-ext-deps
+Section: net
+Priority: extra
+Maintainer: vpp-dev@lists.fd.io
+Build-Depends: debhelper (>= 9), dkms
+Standards-Version: 3.9.4
+
+Package: vpp-ext-deps
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: VPP developer package containing dependencies
+Replaces: vpp-dpdk-dev
+Conflicts: vpp-dpdk-dev
--- /dev/null
+#!/usr/bin/make -f
+DH_VERBOSE = 1
+PKG=vpp-ext-deps
+
+VERSION = $(shell dpkg-parsechangelog | sed -nr '/^Version:/s/Version: //p')
+BASE_VER = $(word 1, $(subst -, ,$(VERSION)))
+
+export DPDK_BUILD_DIR=$(CURDIR)/_build
+export DPDK_INSTALL_DIR=$(CURDIR)/debian/tmp/opt/vpp/external/$(shell uname -m)/
+
+MAKE_ARGS=-C ..
+
+include /usr/share/dpkg/default.mk
+
+%:
+ dh $@
+
+override_dh_clean:
+ make $(MAKE_ARGS) clean
+
+override_dh_auto_configure:
+ make $(MAKE_ARGS) config
+
+override_dh_install:
+ make $(MAKE_ARGS) install
+ dh_install -p$(PKG) --autodest /opt
+
--- /dev/null
+%define _install_dir /opt/vpp/external/%(uname -m)
+%define _make_args -C ../.. DPDK_BUILD_DIR=%{_topdir}/tmp DPDK_INSTALL_DIR=%{buildroot}/%{_install_dir}
+
+Name: vpp-ext-deps
+Version: %{_version}
+Release: %{_release}
+Summary: VPP development package with external dependencies
+License: BSD
+
+%description
+VPP development package with external dependencies
+
+%install
+make %{_make_args} config
+make %{_make_args} install
+
+%files
+%{_install_dir}
+++ /dev/null
-Source: vpp-dpdk
-Section: net
-Priority: extra
-Maintainer: vpp-dev@lists.fd.io
-Build-Depends: debhelper (>= 9), dkms
-Standards-Version: 3.9.4
-
-Package: vpp-dpdk-dev
-Architecture: any
-Depends: ${shlibs:Depends}
-Description: DPDK Development Package for VPP
-Conflicts: dpdk, dpdk-dev, libdpdk-dev
-
-Package: vpp-dpdk-dkms
-Architecture: any
-Depends: ${misc:Depends}
-Description: DPDK Development Package for VPP - Kernel Modules
-Conflicts: dpdk-igb-uio-dkms
+++ /dev/null
-#!/usr/bin/make -f
-DH_VERBOSE = 1
-PKG=vpp-dpdk
-
-VERSION = $(shell dpkg-parsechangelog | sed -nr '/^Version:/s/Version: //p')
-BASE_VER = $(word 1, $(subst -, ,$(VERSION)))
-
-export DPDK_BUILD_DIR=$(CURDIR)/_build
-export DPDK_INSTALL_DIR=$(CURDIR)/debian/tmp/usr
-
-SRC=$(wildcard _build/dpdk*$(BASE_VER))
-
-MAKE_ARGS=-C ..
-
-include /usr/share/dpkg/default.mk
-
-%:
- dh $@ --with dkms
-
-override_dh_clean:
- make $(MAKE_ARGS) clean
-
-override_dh_auto_configure:
- make $(MAKE_ARGS) config
-
-override_dh_install:
- make $(MAKE_ARGS) install
- dh_install -p$(PKG)-dkms \
- $(SRC)/lib/librte_eal/common/include/rte_pci_dev_feature_defs.h \
- $(SRC)/lib/librte_eal/common/include/rte_pci_dev_features.h \
- $(wildcard $(SRC)/*/*/*/igb_uio/igb_uio.c) \
- $(wildcard $(SRC)/*/*/*/igb_uio/compat.h) \
- $(wildcard $(SRC)/*/*/igb_uio/igb_uio.c) \
- $(wildcard $(SRC)/*/*/igb_uio/compat.h) \
- debian/dkms/Makefile \
- /usr/src/$(PKG)-dkms-$(VERSION)
- dh_install -p$(PKG)-dev --autodest /usr
-
-override_dh_dkms:
- dh_dkms -p$(PKG)-dkms -V $(VERSION)
+++ /dev/null
-PACKAGE_VERSION=#MODULE_VERSION#
-PACKAGE_NAME="vpp-dpdk-dkms"
-CLEAN="make clean"
-BUILT_MODULE_NAME[0]="igb_uio"
-BUILT_MODULE_LOCATION[0]="./"
-DEST_MODULE_LOCATION[0]="/kernel/net"
-MAKE[1]="make"
-AUTOINSTALL="yes"
+++ /dev/null
-%define _make_args -C ../.. DPDK_BUILD_DIR=%{_topdir}/tmp DPDK_INSTALL_DIR=%{buildroot}/usr
-
-Name: vpp-dpdk
-Version: %{_version}
-Release: %{_release}
-Summary: DPDK development packages for VPP
-License: BSD
-
-%description
-
-%package devel
-Summary: DPDK development package for VPP
-Group: Development/Libraries
-
-%description devel
-
-%install
-make %{_make_args} config
-make %{_make_args} install
-
-%files devel
-/usr/bin/*
-/usr/include/dpdk/*
-/usr/lib/*
-/usr/sbin/*
-/usr/share/dpdk
echo 'Building VCL test apps'
cd $VPP_DIR
$SUDOCMD perl -pi -e 's/noinst_PROGRAMS/bin_PROGRAMS/g' $VPP_DIR/src/vcl.am
-$SUDOCMD make dpdk-install-dev build-release
+$SUDOCMD make install-ext-deps build-release
sudo sysctl -p$VPP_DIR/src/vpp/conf/80-vpp.conf
sudo modprobe uio_pci_generic
pr("Linker flags" "${CMAKE_LINKER_FLAGS}")
pr("Target processor" "${CMAKE_SYSTEM_PROCESSOR}")
pr("Build type" "${CMAKE_BUILD_TYPE}")
+pr("Prefix path" "${CMAKE_PREFIX_PATH}")
pr("Install prefix" "${CMAKE_INSTALL_PREFIX}")
if [ -n "$multi_host"] && [ ! -f "$dpdk_devbind" ] ; then
echo "ERROR: Can't find dpdk-devbind.py!"
- echo " Run \"cd \$WS_ROOT; make dpdk-install-dev\" to install it."
+ echo " Run \"cd \$WS_ROOT; make install-ext-deps\" to install it."
echo
env_test_failed="true"
fi