Update to DPDK 16.04 + OVS 2.5.90

Change-Id: I6efd1fd3efb6f0c80313a7a1d9d8ac87486802f9
Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
This commit is contained in:
Guo Ruijing 2016-06-07 00:20:52 +00:00
parent 133eadeac3
commit 537bee446f
5 changed files with 193 additions and 33 deletions

View File

@ -13,28 +13,28 @@ dpdk=$3
if [ $nsh = 'true' ]
then
wget -r -np -nH --cut-dirs=3 http://$host:8080/plugins/fuel-plugin-ovs-0.9/ovs-nsh/
dpkg -i openvswitch-datapath-dkms_2.5.90-1.nsh_all.deb
dpkg -i openvswitch-common_2.5.90-1.nsh_amd64.deb
dpkg -i openvswitch-switch_2.5.90-1.nsh_amd64.deb
dpkg -i python-openvswitch_2.5.90-1.nsh_all.deb
if [ $dpdk = 'true' ]
then
dpkg -i libxenstore3.0*.deb
dpkg -i libdpdk0_16.04-1_amd64.deb
dpkg -i dpdk_16.04-1_amd64.deb
dpkg -i openvswitch-switch-dpdk_2.5.90-1.nsh_amd64.deb
fi
else
wget -r -np -nH --cut-dirs=3 http://$host:8080/plugins/fuel-plugin-ovs-0.9/ovs-dpdk/
dpkg -i openvswitch-datapath-dkms_2.5.90-1_all.deb
dpkg -i openvswitch-common_2.5.90-1_amd64.deb
dpkg -i openvswitch-switch_2.5.90-1_amd64.deb
dpkg -i python-openvswitch_2.5.90-1_all.deb
if [ $dpdk = 'true' ]
then
dpkg -i libxenstore3.0_4.4.2-0ubuntu0.14.04.5_amd64.deb
dpkg -i libdpdk0_2.2.0-1_amd64.deb
dpkg -i dpdk_2.2.0-1_amd64.deb
dpkg -i libxenstore3.0*.deb
dpkg -i libdpdk0_16.04-1_amd64.deb
dpkg -i dpdk_16.04-1_amd64.deb
dpkg -i openvswitch-switch-dpdk_2.5.90-1_amd64.deb
fi
else
wget -r -np -nH --cut-dirs=3 http://$host:8080/plugins/fuel-plugin-ovs-0.9/ovs-dpdk/
dpkg -i openvswitch-datapath-dkms_2.5.1-1_all.deb
dpkg -i openvswitch-common_2.5.1-1_amd64.deb
dpkg -i openvswitch-switch_2.5.1-1_amd64.deb
dpkg -i python-openvswitch_2.5.1-1_all.deb
if [ $dpdk = 'true' ]
then
dpkg -i libxenstore3.0_4.4.2-0ubuntu0.14.04.5_amd64.deb
dpkg -i libdpdk0_2.2.0-1_amd64.deb
dpkg -i dpdk_2.2.0-1_amd64.deb
dpkg -i openvswitch-switch-dpdk_2.5.1-1_amd64.deb
fi
fi

View File

@ -1,8 +1,10 @@
#!/bin/bash
OVS_COMMIT=cd4764fdd8ce0aa0063525dad0e67f20b3bcf6e9
set -eux
OVS_COMMIT=7d8eadce4df70f563a0c0123c612f6117c8ff864
URL_OVS=https://github.com/openvswitch/ovs.git
OVS_VER=${OVS_VER:-2.5.1}
OVS_VER=${OVS_VER:-2.5.90}
BUILD_HOME=$HOME/dpdk
BUILD_DEST=${BUILD_DEST:-/deb}
@ -12,12 +14,14 @@ sudo apt-get build-dep openvswitch -y
sudo apt-get -y install devscripts dpkg-dev git wget
rm -rf ${BUILD_HOME}; mkdir -p ${BUILD_HOME}
cp `dirname $0`/rules ${BUILD_HOME}
cd ${BUILD_HOME}
wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0.orig.tar.gz
wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.debian.tar.xz
dpkg-source -x dpdk_2.2.0-0ubuntu8.dsc
wget -c http://fast.dpdk.org/rel/dpdk-16.04.tar.xz
# copy from debian/control
sudo apt-get install -y debhelper \
@ -35,12 +39,15 @@ sudo apt-get install -y debhelper \
texlive-fonts-recommended \
texlive-latex-extra
cd dpdk-2.2.0; rm -rf debian/patches/;
cd dpdk-2.2.0; rm -rf debian/patches/; uupdate -v 16.04 ../dpdk-16.04.tar.xz
cd ${BUILD_HOME}/dpdk-16.04
cat << EOF > debian/changelog
dpdk (2.2.0-1) unstable; urgency=low
[ DPDK team]
* New upstream version
dpdk (16.04-1) unstable; urgency=low
* DPDK 16.04
-- DPDK team <dev@dpdk.org>
EOF
mv debian/rules debian/rules.orig
cp ${BUILD_HOME}/rules debian/rules
debian/rules build; fakeroot debian/rules binary
cd ${BUILD_HOME}; sudo dpkg -i *.deb
apt-get download libxenstore3.0
@ -77,14 +84,13 @@ cd ${BUILD_HOME}; tar czvf ovs.tar.gz ovs
rm -rf openvswitch-dpdk-${OVS_VER}*
cd openvswitch-dpdk-2.4.0; uupdate -v ${OVS_VER} ../ovs.tar.gz
cd ../openvswitch-dpdk-${OVS_VER}
sed -i "s/include\/rte_config.h/include\/dpdk\/rte_config.h/" acinclude.m4
sed -i 's/DPDK_INCLUDE=.*/DPDK_INCLUDE=$RTE_SDK\/include\/dpdk/' acinclude.m4
#sed -i 's~DPDK_LIB_DIR=.*~DPDK_LIB_DIR="$with_dpdk/x86_64-linux-gnu/lib"~' acinclude.m4
autoreconf --install
rm -rf debian/patches/ .git;
cat << EOF > debian/changelog
openvswitch-dpdk (${OVS_VER}-1) unstable; urgency=low
[ Open vSwitch team ]
* Open vSwitch Upstream
* New upstream version
-- Open vSwitch team <dev@openvswitch.org>
EOF
debian/rules build; fakeroot debian/rules binary

View File

@ -38,8 +38,8 @@ sudo apt-get install -y debhelper \
cd dpdk-2.2.0; rm -rf debian/patches/;
cat << EOF > debian/changelog
dpdk (2.2.0-1) unstable; urgency=low
[ DPDK team]
* New upstream version
* DPDK 2.2.0
-- DPDK team <dev@dpdk.org>
EOF
debian/rules build; fakeroot debian/rules binary
cd ${BUILD_HOME}; sudo dpkg -i *.deb
@ -88,13 +88,17 @@ sed -i 's/DPDK_INCLUDE=.*/DPDK_INCLUDE=$RTE_SDK\/include\/dpdk/' acinclude.m4
autoreconf --install
rm -rf debian/patches/ .git;
cat << EOF > debian/changelog
openvswitch-dpdk (${OVS_VER}-1) unstable; urgency=low
[ Open vSwitch team ]
* Support NSH
openvswitch-dpdk (${OVS_VER}-1.nsh) unstable; urgency=low
* Support NSH
-- Open vSwitch team <dev@openvswitch.org>
EOF
debian/rules build; fakeroot debian/rules binary
cd ${BUILD_HOME}/ovs
cat << EOF > debian/changelog
openvswitch (${OVS_VER}-1.nsh) unstable; urgency=low
* Support NSH
-- Open vSwitch team <dev@openvswitch.org>
EOF
debian/rules build; fakeroot debian/rules binary
cp ${BUILD_HOME}/*.deb ${BUILD_DEST}

150
ovs_build/rules Executable file
View File

@ -0,0 +1,150 @@
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1
# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
# see FEATURE AREAS in dpkg-buildflags(1)
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# build with debug symbols, dh_strip will create -dgbsyms packages by that
export EXTRA_CFLAGS = -g
# 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
DPDK_CONFIG = "$(DEB_HOST_GNU_CPU)-native-linuxapp-gcc"
DPDK_STATIC_DIR = "debian/build/static-root"
DPDK_SHARED_DIR = "debian/build/shared-root"
clean:
dh_testdir
rm -rf debian/build debian/tmp
dh_clean
build-config:
dh_testdir
$(MAKE) O=$(DPDK_STATIC_DIR) T=$(DPDK_CONFIG) config
build-indep: build-config
dh_testdir
$(MAKE) O=$(DPDK_STATIC_DIR) doc-api-html doc-guides-html
build-arch: build-config
dh_testdir
$(MAKE) O=$(DPDK_STATIC_DIR) build
# Unfortunately the decision about having static or shared libraries is
# made for the whole build, which then produces only .a or .so files
# (but not both).
# And the target layout for target selection has no field for the
# type of library.
# Right now I hack this by doing a second build which only differs in
# the selection of shared libs.
# Shared libs should be default, so the previous static build is only
# used to get static libraries.
cp -a $(DPDK_STATIC_DIR) $(DPDK_SHARED_DIR)
sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1y,' \
$(DPDK_SHARED_DIR)/.config
$(MAKE) O=$(DPDK_SHARED_DIR) build
build: build-arch build-indep
binary-indep: PACKAGE_NAME=dpdk-doc
binary-indep: DOCDIR=usr/share/doc/dpdk
binary-indep: export DH_OPTIONS=--indep
binary-indep:
dh_testroot
dh_prep
dh_testdir
dh_installdirs
dh_install
dh_installdocs
dh_installchangelogs
dh_lintian
# Package: dpdk-doc
# All files based on the install-doc rule (includes examples)
$(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \
DESTDIR=debian/dpdk-doc install-doc
dh_link
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
binary-arch: LIBDIR=usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
binary-arch: export DH_OPTIONS=--arch
binary-arch:
dh_testroot
dh_prep
dh_testdir
dh_installdirs
dh_install
dh_installdocs
dh_installchangelogs
dh_lintian
dh_systemd_enable
dh_installinit --no-start --no-restart-on-upgrade
dh_systemd_start --no-start --no-restart-on-upgrade
# Package: dpdk (runtime)
$(MAKE) O=$(DPDK_STATIC_DIR) prefix=/usr \
DESTDIR=debian/dpdk install-runtime
$(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \
DESTDIR=debian/dpdk install-runtime
cp debian/dpdk.interfaces debian/dpdk/etc/dpdk/interfaces
rm debian/dpdk/usr/sbin/dpdk_nic_bind
ln -s /usr/share/dpdk/tools/dpdk_nic_bind.py \
debian/dpdk/sbin/dpdk_nic_bind
# Package: libdpdk0 (bare runtime libs)
mkdir -p debian/libdpdk0/$(LIBDIR)
# NOTE so far upstream dpdk has not settled on really versioning the
# combined lib. There are discussions ongoing and various alternative
# approaches.
# We have to wait until that is clarified upstream (in a follow on dpdk
# version).
# One likely solution will make us ship the non combined .so and a
# linker script which replaces the combined lib.
# To easen package management a few notes how this will change if that
# happens:
# NOTE: linker script - this becomes a nop (linker skript has no sover
# on its own)
rm debian/dpdk/usr/lib/libdpdk.so
cp -a $(DPDK_SHARED_DIR)/lib/* debian/libdpdk0/$(LIBDIR)/
# NOTE: linker script - insert basenames loop for all .so's
# NOTE: linker script - we also will need multiple symbol files then
# Package: dpdk-dev (build environment)
$(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \
DESTDIR=debian/dpdk-dev install-sdk
cp $(DPDK_SHARED_DIR)/.config debian/dpdk-dev/usr/share/dpdk/config
# Package: libdpdk-dev (bare headers and static devel libs)
mkdir -p debian/libdpdk-dev/usr/lib/
# NOTE: linker script - insert basenames loop for all .a's
#ln -s /$(LIBDIR)/libdpdk.so \
# debian/libdpdk-dev/$(LIBDIR)/libdpdk.so.0
cp -a $(DPDK_STATIC_DIR)/lib/* debian/libdpdk-dev/usr/lib/
mv debian/dpdk-dev/usr/include/dpdk debian/libdpdk-dev/usr/include/
# NOTE: linker script - package instead of removing all sublibs
rm -rf debian/dpdk/usr/lib*
dh_python2
dh_perl
dh_link
dh_compress
dh_fixperms
dh_strip
dh_makeshlibs
dh_shlibdeps
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-arch binary-indep

2
vagrant/Vagrantfile vendored
View File

@ -11,7 +11,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "fuel" do | h |
h.vm.host_name = "fuel"
h.vm.provision :shell, :inline => "/vagrant/build_fuel_plugin.sh"
h.vm.provision :shell, :inline => "/vagrant/build_fuel_plugin.sh", privileged: false
h.vm.synced_folder "..", "/fuel-plugin"
h.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--memory", 4096]