From 49c57a8fef46461da911802e8bf82329924ea329 Mon Sep 17 00:00:00 2001 From: Chuck Short Date: Tue, 23 Aug 2011 15:37:11 -0700 Subject: [PATCH] debian: Apply Ubuntu patch to add DKMS support. I tested that installing openvswitch-datapath-dkms worked OK on my own Debian machine. The bulk of this patch is taken from downstream Ubuntu DKMS support written by Chuck Short , version 1.2.0-1ubuntu1. I made the following changes: * Update debian/.gitignore. * Update debian/automake.mk. * Correct description in debian/control (it was a cut-and-paste from the openvswitch-datapath-source description without editing). * Fix up for --with-l26 to --with-linux and datapath/linux-2.6 to datapath/linux transitions. CC: Chuck Short CC: Dave Walker Acked-by: Simon Horman --- AUTHORS | 1 + debian/.gitignore | 1 + debian/automake.mk | 3 +++ debian/control | 10 +++++++++- debian/dkms.conf.in | 9 +++++++++ debian/openvswitch-datapath-dkms.postinst | 21 +++++++++++++++++++++ debian/openvswitch-datapath-dkms.prerm | 15 +++++++++++++++ debian/rules | 15 +++++++++++++++ 8 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 debian/dkms.conf.in create mode 100644 debian/openvswitch-datapath-dkms.postinst create mode 100644 debian/openvswitch-datapath-dkms.prerm diff --git a/AUTHORS b/AUTHORS index f62069790..44311ffb6 100644 --- a/AUTHORS +++ b/AUTHORS @@ -7,6 +7,7 @@ Andy Southgate andy.southgate@citrix.com Ben Pfaff blp@nicira.com Bryan Phillippe bp@toroki.com Casey Barker crbarker@google.com +Chuck Short zulcss@ubuntu.com Dan Wendlandt dan@nicira.com David Erickson derickso@stanford.edu Ethan Jackson ethan@nicira.com diff --git a/debian/.gitignore b/debian/.gitignore index 7b8dffea3..7e6d65626 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -11,6 +11,7 @@ /openvswitch-common.copyright /openvswitch-controller /openvswitch-datapath-source +/openvswitch-datapath-dkms /openvswitch-dbg /openvswitch-ipsec /openvswitch-pki diff --git a/debian/automake.mk b/debian/automake.mk index 7e166ddca..d2898301a 100644 --- a/debian/automake.mk +++ b/debian/automake.mk @@ -5,6 +5,7 @@ EXTRA_DIST += \ debian/control.modules.in \ debian/copyright \ debian/copyright.in \ + debian/dkms.conf.in \ debian/dirs \ debian/openvswitch-brcompat.install \ debian/openvswitch-brcompat.manpages \ @@ -20,6 +21,8 @@ EXTRA_DIST += \ debian/openvswitch-controller.manpages \ debian/openvswitch-controller.postinst \ debian/openvswitch-datapath-module-_KVERS_.postinst.modules.in \ + debian/openvswitch-datapath-dkms.postinst \ + debian/openvswitch-datapath-dkms.prerm \ debian/openvswitch-datapath-source.README.Debian \ debian/openvswitch-datapath-source.copyright \ debian/openvswitch-datapath-source.dirs \ diff --git a/debian/control b/debian/control index 1d09d94bd..8b3e7bf9f 100644 --- a/debian/control +++ b/debian/control @@ -15,7 +15,7 @@ Package: openvswitch-datapath-source Architecture: all Depends: module-assistant, bzip2, debhelper (>= 5.0.37), ${misc:Depends} Suggests: openvswitch-switch -Description: Source code for Open vSwitch datapath Linux module +Description: Open vSwitch datapath module source - module-assistant version This package provides the Open vSwitch datapath module source code that is needed by openvswitch-switch. The kernel module can be built from it using module-assistant or make-kpkg. README.Debian in this @@ -23,6 +23,14 @@ Description: Source code for Open vSwitch datapath Linux module . Open vSwitch is a full-featured software-based Ethernet switch. +Package: openvswitch-datapath-dkms +Architecture: all +Depends: dkms (>= 1.95), make, ${misc:Depends} +Description: Open vSwitch datapath module source - DKMS version + This package provides the Open vSwitch datapath module source code + that is needed by openvswitch-switch. DKMS can built the kernel + module from it. + Package: openvswitch-common Architecture: linux-any Depends: ${shlibs:Depends}, openssl, ${misc:Depends}, python diff --git a/debian/dkms.conf.in b/debian/dkms.conf.in new file mode 100644 index 000000000..56c6398f5 --- /dev/null +++ b/debian/dkms.conf.in @@ -0,0 +1,9 @@ +PACKAGE_NAME="openvswitch" +PACKAGE_VERSION="__VERSION__" +MAKE="./configure --with-linux=/usr/src/linux-headers-`uname -r` ; make -C datapath/linux" +BUILT_MODULE_NAME[0]=openvswitch_mod +BUILT_MODULE_NAME[1]=brcompat_mod +BUILT_MODULE_LOCATION[0]=datapath/linux/ +BUILT_MODULE_LOCATION[1]=datapath/linux/ +DEST_MODULE_LOCATION[0]=/kernel/drivers/net/openvswitch/ +DEST_MODULE_LOCATION[1]=/kernel/drivers/net/openvswitch/ diff --git a/debian/openvswitch-datapath-dkms.postinst b/debian/openvswitch-datapath-dkms.postinst new file mode 100644 index 000000000..490311956 --- /dev/null +++ b/debian/openvswitch-datapath-dkms.postinst @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +package=openvswitch-datapath-dkms +name=openvswitch + +version=`dpkg-query -W -f='${Version}' "$package" \ + |rev|cut -d- -f2-|rev|cut -d':' -f2|tr -d "\n"` + +isadded=`dkms status -m "$name" -v "$version"` + +if [ "x${isadded}" = "x" ] ; then + dkms add -m "$name" -v "$version" +fi + +if [ "$1" = 'configure' ] ; then + dkms build -m "$name" -v "$version" && dkms install -m "$name" -v "$version" || true +fi + +#DEBHELPER# diff --git a/debian/openvswitch-datapath-dkms.prerm b/debian/openvswitch-datapath-dkms.prerm new file mode 100644 index 000000000..5c8ad3120 --- /dev/null +++ b/debian/openvswitch-datapath-dkms.prerm @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +package=openvswitch-datapath-dkms +name=openvswitch + +version=`dpkg-query -W -f='${Version}' "$package" \ + |rev|cut -d- -f2-|rev|cut -d':' -f2|tr -d "\n"` + +dkms remove -m "$name" -v "$version" --all || true + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules index 37d321b7d..fb781e6c3 100755 --- a/debian/rules +++ b/debian/rules @@ -13,6 +13,11 @@ # Official build number. Leave set to 0 if not an official build. BUILD_NUMBER = 0 +PACKAGE=openvswitch +pdkms=openvswitch-datapath-dkms +DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^-]+).*,\1,p') +srcfiles := $(filter-out debian, $(wildcard * .[^.]*)) + ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) else @@ -82,6 +87,16 @@ install-indep: build-indep chmod 755 debian/openvswitch-datapath-source/usr/src/modules/openvswitch-datapath/debian/rules cd debian/openvswitch-datapath-source/usr/src && tar -c modules | bzip2 -9 > openvswitch-datapath.tar.bz2 && rm -rf modules + #dkms stuff + # setup the dirs + dh_installdirs -p$(pdkms) usr/src/$(PACKAGE)-$(DEB_UPSTREAM_VERSION) + + # copy the source + cd debian/$(pdkms)/usr/src/$(PACKAGE)-$(DEB_UPSTREAM_VERSION) && tar xvzf $(CURDIR)/_debian/openvswitch.tar.gz && mv openvswitch/* . && rmdir openvswitch + + # Prepare dkms.conf from the dkms.conf.in template + sed "s/__VERSION__/$(DEB_UPSTREAM_VERSION)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(PACKAGE)-$(DEB_UPSTREAM_VERSION)/dkms.conf + install-arch: build-arch dh_testdir dh_testroot -- 2.43.0