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 <[email protected]>, 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 <[email protected]>
> CC: Dave Walker <[email protected]>
> ---
> 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          [email protected]
> Ben Pfaff               [email protected]
> Bryan Phillippe         [email protected]
> Casey Barker            [email protected]
> +Chuck Short             [email protected]
> Dan Wendlandt           [email protected]
> David Erickson          [email protected]
> Ethan Jackson           [email protected]
> 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
> [email protected]
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to