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
