Mail archive
alpine-devel

Re: [alpine-devel] APKBUILD for kernel modules

From: Mike Crute <mike_at_crute.us>
Date: Tue, 23 Jan 2018 15:47:51 +0000

On Tue, Jan 23, 2018 at 11:26:14AM -0300, Martin Galvan wrote:
> I'm trying to write an APKBUILD script for a package that contains a
> kernel module. Since there seems to be no documentation about this,
> I've been looking at some examples (the *-hardened packages), and I've
> seen that, if I understood correctly, all of them set a kernel version
> (_kver) and refuse to build unless linux-$_flavor/APKBUILD's pkgver
> matches _kver. Every time a new kernel version comes out, the APKBUILD
> has to be updated to match the new kernel version.
>
> Is this done just to make sure the maintainer is aware of kernel
> changes, and has to at least indicate so in the APKBUILD? What if we
> wanted to distribute a module that worked on multiple kernel versions?

I built a kernel module package recently and there really aren't a lot
of good docs for this. As I understood the rationale for co-versioning
modules with the kernel it's about compatibility. A module is guaranteed
to be compatible with the kernel it's built against but not necessarily
against newer or older kernels, thus it doesn't make sense for the
module to maintain it's own version but rather to adopt the version of
the kernel it's built for.

Here are the ABUILDs for the module:

https://github.com/alpinelinux/aports/blob/master/testing/aws-ena-driver-hardened/APKBUILD
https://github.com/alpinelinux/aports/blob/master/testing/aws-ena-driver-vanilla/APKBUILD
 
> As a side note, I saw that the APKBUILDs look for
> linux-$_flavor/APKBUILD in a relative path. I assume this means
> they'll always run from wherever they're located in the aports tree,
> but I saw that e.g.
> https://git.alpinelinux.org/cgit/aports/tree/testing/ipt-netflow-hardened/APKBUILD
> looks in testing for linux-$_flavor, which I didn't find. Does that
> mean it'll always fail?

You should always use the kernel out of the main tree and use relative
paths to make sure you always get that kernel. The ABUILD you linked is
will only ever run those tests when it's located in the main tree which
strikes me as broken.
 
> Finally, I saw that for failure cases there seems to be a 'die'
> function that looks like perl's. Where can I find its definition? Is
> it documented anywhere?

That's defined in the abuild command itself which also defines the
default methods for your ABUILD along with other utility functions:

https://git.alpinelinux.org/cgit/abuild/tree/abuild.in#n103


---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Tue Jan 23 2018 - 15:47:51 GMT