From cb9cadad578297ffd78fa8a33670bdf1ab669e7e Mon Sep 17 00:00:00 2001 From: Ed Warnicke Date: Tue, 8 Dec 2015 15:45:58 -0700 Subject: Initial commit of vpp code. Change-Id: Ib246f1fbfce93274020ee93ce461e3d8bd8b9f17 Signed-off-by: Ed Warnicke --- build-root/deb/debian/.gitignore | 10 ++++++ build-root/deb/debian/README.vpp | 56 +++++++++++++++++++++++++++++ build-root/deb/debian/compat | 1 + build-root/deb/debian/control | 54 ++++++++++++++++++++++++++++ build-root/deb/debian/copyright | 9 +++++ build-root/deb/debian/rules | 30 ++++++++++++++++ build-root/deb/debian/source/format | 1 + build-root/deb/debian/vpp-bin.README.Debian | 53 +++++++++++++++++++++++++++ build-root/deb/debian/vpp.postinst | 8 +++++ build-root/deb/debian/vpp.upstart | 21 +++++++++++ 10 files changed, 243 insertions(+) create mode 100644 build-root/deb/debian/.gitignore create mode 100755 build-root/deb/debian/README.vpp create mode 100755 build-root/deb/debian/compat create mode 100644 build-root/deb/debian/control create mode 100644 build-root/deb/debian/copyright create mode 100755 build-root/deb/debian/rules create mode 100755 build-root/deb/debian/source/format create mode 100644 build-root/deb/debian/vpp-bin.README.Debian create mode 100644 build-root/deb/debian/vpp.postinst create mode 100644 build-root/deb/debian/vpp.upstart (limited to 'build-root/deb') diff --git a/build-root/deb/debian/.gitignore b/build-root/deb/debian/.gitignore new file mode 100644 index 00000000..6c9b412e --- /dev/null +++ b/build-root/deb/debian/.gitignore @@ -0,0 +1,10 @@ +changelog +files +*debhelper* +*.substvars +*.install +vpp-dpdk-dkms* +vpp/ +vpp-dev/ +vpp-lib/ +vpp-dpdk-dkms/ diff --git a/build-root/deb/debian/README.vpp b/build-root/deb/debian/README.vpp new file mode 100755 index 00000000..b343c786 --- /dev/null +++ b/build-root/deb/debian/README.vpp @@ -0,0 +1,56 @@ +Building DEB packages +===================== + +REQUIREMENTS: + You will need a working Internet connection to execute the build, because + the build procedure for the included "dpdk" project attempts to contact the + Internet host "dpdk.org". + +There are three main parts to the process: + a) Stage the source tree so that dpkg-source will recognize its organization + and create a valid DSC source package for you; + b) Ensure that the tools required for building DEB packages are installed; + and + c) Launch the build. + +1) Create, or have on hand, a local clone of the git repository, with no +untracked files or local modifications pending, up-to-date with the branch or +commit reference from which you wish to construct the source release. + +The branch and repository origins will differ based on local conditions. + +Example: +$ git clone -b master ssh://git@example.com:7999/~username/open-vpp + +("-b master" can be omitted since master is the default branch) + +2) Rename the checkout with a version number embedded in its name as is +conventional for code releases. Again, your version number may vary. + +Example: +$ mv open-vpp open-vpp-0.0.0 + +3) Ensure that the dpkg-buildpackage program is installed. + +E.g., + +# apt-get install dpkg-dev + +4) From the PARENT directory of the debian/ directory, run: + +$ cd open-vpp-0.0.0 +$ dpkg-buildpackage -I .git -us -uc + +(The -us and -uc flags omit GPG signatures from the .dsc and .changes files, +respectively. You can add them later, or if you are preparing a signed release +and have the signing key on hand, leave off the flags.) + +5) Get rid of the source directory; you now either have a source package with +which you can re-create it at any time, or there were problems with the build, +and you should go back to your git checkout to fix them. + +$ rm -r open-vpp-0.0.0 + +END + +vim:set ai et sw=4 ts=4 tw=80: diff --git a/build-root/deb/debian/compat b/build-root/deb/debian/compat new file mode 100755 index 00000000..ec635144 --- /dev/null +++ b/build-root/deb/debian/compat @@ -0,0 +1 @@ +9 diff --git a/build-root/deb/debian/control b/build-root/deb/debian/control new file mode 100644 index 00000000..0278286a --- /dev/null +++ b/build-root/deb/debian/control @@ -0,0 +1,54 @@ +Source: vpp +Section: net +Priority: extra +Maintainer: Cisco OpenVPP Packaging Team +Build-Depends: debhelper (>= 9), dkms +Standards-Version: 3.9.4 + +Package: vpp +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Vector Packet Processing--executables + This package provides VPP executables: vpe, vpe_api_test, vpe_json_test + vpe - the vector packet engine + vpe_api_test - vector packet engine API test tool + vpe_json_test - vector packet engine JSON test tool + +Package: vpp-dbg +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Vector Packet Processing--debug symbols + +Package: vpp-dev +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Vector Packet Processing--development support + This package contains development support files for the VPP libraries, including: + . + Do we need to list those header files or just leave it blank ? + dynamic vectors (vec.c), dynamic bitmaps (bitmap.h), allocation heap of + objects (heap.c), allocation pool(pool.h), dynamic hash tables (hash.c), memory + allocator (mheap.c), extendable printf-like interface built on top of vectors + (format.c), formats for data structures (std-formats.c), and support for clock + time-based function calls (timer.c). + . + TODO: reference and describe only the .h files + +Package: vpp-lib +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Vector Packet Processing--runtime libraries + This package contains the VPP shared libraries, including: + . + vppinfra - foundation library supporting vectors, hashes, bitmaps, pools, and string formatting. + dpdk - Intel DPDK library + svm - vm library + vlib - vector processing library + vlib-api - binary API library + vnet - network stack library + +Package: vpp-dpdk-dkms +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: DPDK 2.1 igb_uio_driver + This package contains Linux kernel modules distributed with DPDK. diff --git a/build-root/deb/debian/copyright b/build-root/deb/debian/copyright new file mode 100644 index 00000000..f9775c15 --- /dev/null +++ b/build-root/deb/debian/copyright @@ -0,0 +1,9 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: optional. +Upstream-Contact: optional. +Source: optional. +Disclaimer: optional. +Comment: optional. +License: Apache-2.0 +Copyright: 2015 Cisco and/or its affiliates and others. + diff --git a/build-root/deb/debian/rules b/build-root/deb/debian/rules new file mode 100755 index 00000000..bcee0121 --- /dev/null +++ b/build-root/deb/debian/rules @@ -0,0 +1,30 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +DH_VERBOSE = 1 + +# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk + +# see FEATURE AREAS in dpkg-buildflags(1) +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# see ENVIRONMENT in dpkg-buildflags(1) +# package maintainers to append CFLAGS +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# package maintainers to append LDFLAGS +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + +# main packaging script based on dh7 syntax +%: + dh $@ --with dkms + +override_dh_install: + dh_install --exclude .git + +override_dh_strip: + dh_strip --dbg-package=vpp-dbg + +override_dh_dkms: + dh_dkms -pvpp-dpdk-dkms diff --git a/build-root/deb/debian/source/format b/build-root/deb/debian/source/format new file mode 100755 index 00000000..89ae9db8 --- /dev/null +++ b/build-root/deb/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/build-root/deb/debian/vpp-bin.README.Debian b/build-root/deb/debian/vpp-bin.README.Debian new file mode 100644 index 00000000..25ecd38e --- /dev/null +++ b/build-root/deb/debian/vpp-bin.README.Debian @@ -0,0 +1,53 @@ +To run vpp with the debug shell: + +sudo vpe unix interactive + +which will result in a prompt that looks like: + +DBGvpd# + +To give it a spin, we can create a tap interface and try a simple ping +(with trace). + +To create the tap: + +DBGvpd# tap connect foobar +Created tap-0 for Linux tap 'foobar' +DBGvpd# show int + +To assign it an ip address (and 'up' the interface): + +DBGvpd# set int ip address tap-0 192.168.1.1/24 +DBGvpd# set int state tap-0 up + +To turn on packet tracing for the tap interface: +DBGvpd# trace add tapcli-rx 10 + +Now, to set up and try the other end from the unix prompt: +vagrant@vagrant-ubuntu-trusty-64:~$ sudo ip addr add 192.168.1.2/24 dev foobar +vagrant@vagrant-ubuntu-trusty-64:~$ ping -c 3 192.168.1.1 + +To look at the trace, back in the vpp CLI: +DBGvpd# show trace + +And to stop tracing: + +DBGvpd# clear trace + +Other fun things to look at: + +The vlib packet processing graph: +DBGvpd# show vlib graph + +which will produce output like: + + Name Next Previous +ip4-icmp-input error-punt [0] ip4-local + ip4-icmp-echo-request [1] + vpe-icmp4-oam [2] + +To read this, the first column (Name) is the name of the node. +The second column (Next) is the name of the children of that node. +The third column (Previous) is the name of the parents of this node. + +END diff --git a/build-root/deb/debian/vpp.postinst b/build-root/deb/debian/vpp.postinst new file mode 100644 index 00000000..78fcac22 --- /dev/null +++ b/build-root/deb/debian/vpp.postinst @@ -0,0 +1,8 @@ +#!/bin/sh -e + +# try to set the required values now. This may or may not work. +sysctl --system + +#DEBHELPER# + +exit 0 diff --git a/build-root/deb/debian/vpp.upstart b/build-root/deb/debian/vpp.upstart new file mode 100644 index 00000000..ec731d89 --- /dev/null +++ b/build-root/deb/debian/vpp.upstart @@ -0,0 +1,21 @@ +description "vector packet processing engine" +author "Cisco Systems, Inc " + +manual + +respawn + +pre-start script + rm -f /dev/shm/* || true + # should be there via dkms, but if not, start anyway + modprobe igb_uio || true +end script + + +script + exec vpe $(cat /etc/vpp/startup.conf | sed -e 's/#.*//') +end script + +post-stop script + rm -f /dev/shm/* || true +end script -- cgit 1.2.3-korg