summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/sdk/cases/kmod.py
blob: 0aa6f702e44e80809c9701ef1d845d7723f15195 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#

import os
import subprocess
import tempfile

from oeqa.sdk.case import OESDKTestCase
from oeqa.sdkext.context import OESDKExtTestContext
from oeqa.utils.subprocesstweak import errors_have_output
errors_have_output()

class KernelModuleTest(OESDKTestCase):
    """
    Test that out-of-tree kernel modules build.
    """
    def test_cryptodev(self):
        if isinstance(self.tc, OESDKExtTestContext):
            self.skipTest(f"{self.id()} does not support eSDK (https://bugzilla.yoctoproject.org/show_bug.cgi?id=15850)")

        self.ensure_target_package("kernel-devsrc")
        # These targets need to be built before kernel modules can be built.
        self._run("make -j -C $OECORE_TARGET_SYSROOT/usr/src/kernel prepare scripts")

        with tempfile.TemporaryDirectory(prefix="cryptodev", dir=self.tc.sdk_dir) as testdir:
            git_url = "https://github.com/cryptodev-linux/cryptodev-linux"
            # This is a knnown-good commit post-1.13 that builds with kernel 6.7+
            git_sha = "bb8bc7cf60d2c0b097c8b3b0e807f805b577a53f"

            sourcedir = os.path.join(testdir, "cryptodev-linux")
            subprocess.check_output(["git", "clone", git_url, sourcedir], stderr=subprocess.STDOUT)
            self.assertTrue(os.path.isdir(sourcedir))
            subprocess.check_output(["git", "-C", sourcedir, "checkout", git_sha], stderr=subprocess.STDOUT)

            self._run("make -C %s V=1 KERNEL_DIR=$OECORE_TARGET_SYSROOT/usr/src/kernel" % sourcedir)
            self.check_elf(os.path.join(sourcedir, "cryptodev.ko"))