Use local debian spec & fix ovs post installation failure

Change-Id: I6a8865a90e989f55ea0fd3888a0953c2c728722c
Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
This commit is contained in:
Guo Ruijing 2016-08-08 08:54:30 +08:00
parent af3fbac756
commit a18cd2628a
3 changed files with 21 additions and 193 deletions

View File

@ -4,24 +4,21 @@ set -eux
OVS_COMMIT=7d8eadce4df70f563a0c0123c612f6117c8ff864
URL_OVS=https://github.com/openvswitch/ovs.git
OVS_VER=${OVS_VER:-2.5.90}
BUILD_HOME=$HOME/dpdk
BUILD_DEST=${BUILD_DEST:-/deb}
BUILD_DEB=${BUILD_DEB:-/deb}
BUILD_SRC="$(dirname `readlink -f $0`)"
BUILD_DEST=${BUILD_DEST:-/tmp/ovs-dpdk}
export DEB_BUILD_OPTIONS='parallel=8 nocheck'
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}
rm -rf ${BUILD_DEST}; mkdir -p ${BUILD_DEST}
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
cd ${BUILD_DEST}
wget -c http://fast.dpdk.org/rel/dpdk-16.04.tar.xz
xz -d dpdk-16.04.tar.xz; tar xvf dpdk-16.04.tar
cd dpdk-16.04
cp -r ${BUILD_SRC}/dpdk_16.04/debian .
# copy from debian/control
sudo apt-get install -y debhelper \
@ -38,26 +35,13 @@ sudo apt-get install -y debhelper \
python-sphinx \
texlive-fonts-recommended \
texlive-latex-extra
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 (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
cd ${BUILD_DEST}
sudo dpkg -i *.deb
apt-get download libxenstore3.0
cd ${BUILD_HOME}
wget -c https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0.orig.tar.gz
wget -c https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
wget -c https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.debian.tar.xz
dpkg-source -x openvswitch-dpdk_2.4.0-0ubuntu1.dsc
sudo apt-get build-dep openvswitch -y
# copy from debian/control
sudo apt-get install -y autoconf \
automake \
@ -79,22 +63,15 @@ sudo apt-get install -y autoconf \
python-six
git clone https://github.com/openvswitch/ovs.git
cd ovs; git checkout ${OVS_COMMIT}
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~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
* New upstream version
-- Open vSwitch team <dev@openvswitch.org>
EOF
cd ovs; git checkout ${OVS_COMMIT}; rm -rf .git
cd ${BUILD_DEST}; cp -r ovs ovs-dpdk
cd ovs-dpdk
cp -r ${BUILD_SRC}/openvswitch-dpdk_2.5.90/debian .
debian/rules build; fakeroot debian/rules binary
cd ${BUILD_HOME}/ovs
cd ${BUILD_DEST}/ovs
debian/rules build; fakeroot debian/rules binary
cp ${BUILD_HOME}/*.deb ${BUILD_DEST}
cp -r ${BUILD_DEST}/*.deb ${BUILD_DEB}
rm -rf ${BUILD_DEST}

View File

@ -2,6 +2,7 @@
set -e
rm -rf /usr/sbin/ovs-vswitchd
update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd \
/usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 50

View File

@ -1,150 +0,0 @@
#!/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