From a18cd2628a389e0ccf065b13a7030b6ad4bdbec9 Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Mon, 8 Aug 2016 08:54:30 +0800 Subject: [PATCH] Use local debian spec & fix ovs post installation failure Change-Id: I6a8865a90e989f55ea0fd3888a0953c2c728722c Signed-off-by: Guo Ruijing --- ovs_build/build-ovs-dpdk.sh | 63 +++----- .../debian/openvswitch-switch-dpdk.postinst | 1 + ovs_build/rules | 150 ------------------ 3 files changed, 21 insertions(+), 193 deletions(-) delete mode 100755 ovs_build/rules diff --git a/ovs_build/build-ovs-dpdk.sh b/ovs_build/build-ovs-dpdk.sh index 66334f2..a940113 100755 --- a/ovs_build/build-ovs-dpdk.sh +++ b/ovs_build/build-ovs-dpdk.sh @@ -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 -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 -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} diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst b/ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst index ff5a725..cafae09 100644 --- a/ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst +++ b/ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst @@ -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 diff --git a/ovs_build/rules b/ovs_build/rules deleted file mode 100755 index f2f5a17..0000000 --- a/ovs_build/rules +++ /dev/null @@ -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