[ovs-dev] [PATCH] debian: Apply Ubuntu patch to add DKMS support.
Justin Pettit
jpettit at nicira.com
Tue Aug 23 23:13:07 PDT 2011
This looks reasonable to me, but I'm pretty uninformed when it comes to Debian packaging. Simon's input would be much more valuable than mine.
--Justin
On Aug 23, 2011, at 3:37 PM, Ben Pfaff wrote:
> 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 <zulcss at ubuntu.com>, 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 <zulcss at ubuntu.com>
> CC: Dave Walker <DaveWalker at ubuntu.com>
> ---
> 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 deletions(-)
> 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 f620697..44311ff 100644
> --- a/AUTHORS
> +++ b/AUTHORS
> @@ -7,6 +7,7 @@ Andy Southgate andy.southgate at citrix.com
> Ben Pfaff blp at nicira.com
> Bryan Phillippe bp at toroki.com
> Casey Barker crbarker at google.com
> +Chuck Short zulcss at ubuntu.com
> Dan Wendlandt dan at nicira.com
> David Erickson derickso at stanford.edu
> Ethan Jackson ethan at nicira.com
> diff --git a/debian/.gitignore b/debian/.gitignore
> index 7b8dffe..7e6d656 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 7e166dd..d289830 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 1978b73..e5ac633 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 0000000..56c6398
> --- /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 0000000..4903119
> --- /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 0000000..5c8ad31
> --- /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 37d321b..fb781e6 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
> --
> 1.7.4.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list