DKMS package guidelines

Here are some guidelines to follow when creating a DKMS package.

Arch package guidelines

32-bitCLRCMakeCrossDKMSEclipseElectronFontFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustShellVCSWebWine

Package name

DKMS packages are named by appending "-dkms" to the original package name.

The variable $_pkgname is often used below $pkgname to describe the package name minus the "-dkms" suffix (e.g. _pkgname="${pkgname%-*}")

Dependencies

Dependencies should be inherited from the original version with dkms added and linux-headers removed (as it is listed by the dkms package as optional).

Build source location

Build sources should go into (this is the default build directory for DKMS):

/usr/src/PACKAGE_NAME-PACKAGE_VERSION

In the package directory, a DKMS configuration tells DKMS how to build the module (dkms.conf), including the variables PACKAGE_NAME and PACKAGE_VERSION.

  • PACKAGE_NAME - the actual project name (usually $_pkgname or $_pkgbase).
  • PACKAGE_VERSION - by convention this should also be the $pkgver.

Patching

The sources can be patched either directly in the PKGBUILD or through dkms.conf.

Module loading automatically in .install

Loading and unloading modules should be left to the user. Consider the possibility a module may crash when loaded.

Also, please note that you do not have to call explicitly to update the dependencies of your kernel module. Pacman is now calling DKMS and automatically as hooks. is making sure is called at the end of its process. depends on (to build the source against the current kernel), which itself depends on dkms add (to add a symlink from to ).

Example

Here is an example package that edits dkms.conf according to the package name and version.

dkms.conf

dkms.conf
PACKAGE_NAME="@_PKGBASE@"
PACKAGE_VERSION="@PKGVER@"
MAKE[0]="make --uname_r=$kernelver"
CLEAN="make clean"
BUILT_MODULE_NAME[0]="@_PKGBASE@"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"

.install

Now pacman has DKMS hooks implemented, you do not have to specify DKMS-specific configuration in your .install file. Calls to and will be automatic.

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.