[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Auto-building out-of-tree kernel modules



On Sat, 2009-10-17 at 18:32 +0200, Evgeni Golov wrote:
> Hi,
> 
> On Sat, Oct 17, 2009 at 04:55:09PM +0100, Ben Hutchings wrote:
> > Due to bug #517130, linux-modules-extra-2.6 must be removed.
> > 
> > If you want to continue having modules auto-built, we recommend that you
> > consider integrating with DKMS.  You can trigger a build on installation
> > or upgrade of the module source.  The dkms package then automatically
> > rebuilds installed module sources when a new kernel version is
> > installed.
> > 
> > Why DKMS and not module-assistant?  Your packages presumably already
> > work with m-a, but m-a doesn't automatically rebuild modules on upgrade.
> > Also, DKMS is supported by other distributions, so many out-of-tree
> > module sources already include the necessary configuration file.
> 
> That means the modules will be "auto-built" on users computers?

Yes.

> Wasting time and bandwidth (fetching linux-headers etc)? Great...

Building obscure modules for every kernel flavour on Debian's own
auto-builders is also a waste, especially when just one broken module
breaks the whole conglomeration package.

> Are there any docs for how to add DKMS support in a Debian package? For 
> people who never touched DKMS before?

I don't think so, but the following should work:

1. Write a configuration file.  This is documented in the dkms manual
   page and there are examples in /usr/share/doc/dkms/examples .  A
   minimal configuration file would be:

      PACKAGE_NAME=test
      PACKAGE_VERSION=0.1
      MAKE[0]="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build"
      CLEAN="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean"
      DEST_MODULE_LOCATION[0]=/extra

   Note: DEST_MODULE_LOCATION[0] is used only when the module replaces
   an in-tree module, so its value is not important for you, but you need
   to specify it anyway.

2. Add to your postinst:

      dkms add -m <name> -v <version>
      dkms build -m <name> -v <version> && dkms install -m <name> -v <version> || true

   The configuration file is assumed to be installed as
   /usr/src/<name>-<version>/dkms.conf and the source is assumed to be
   installed under /usr/src/<name>-<version>.  You must specify
   additional options to dkms add to override this.

3. Add to your prerm:

      dkms remove -m <name> -v <version> --all || true

(DKMS maintainers: it might be worth adding a dh_dkms to implement the
above, or whatever you think should be the canonical way of doing this.)

There is a mailing list for DKMS in Debian:
   http://lists.alioth.debian.org/mailman/listinfo/pkg-dkms-maint
   pkg-dkms-maint@lists.alioth.debian.org

Ben.

-- 
Ben Hutchings
It is impossible to make anything foolproof because fools are so ingenious.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: