diff mbox series

[v3] meta/meta-selftest: add selftest-hello-mod recipe

Message ID 20250621073137.47743-1-dixitparmar19@gmail.com
State New
Headers show
Series [v3] meta/meta-selftest: add selftest-hello-mod recipe | expand

Commit Message

Dixit Parmar June 21, 2025, 7:31 a.m. UTC
Kernel module specific oe test cases requires a test kernel
module package to work with. Added selftest-hello-mod
derived from meta-skeleton/recipes-kernel/hello-mod.

Signed-off-by: Dixit Parmar <dixitparmar19@gmail.com>

---
Previous patch version: https://lists.openembedded.org/g/openembedded-core/topic/113550149
---
 .../selftest-hello-mod/files/Makefile         | 14 +++++++++++
 .../selftest-hello-mod/files/hello.c          | 24 +++++++++++++++++++
 .../selftest-hello-mod/hello-mod_0.1.bb       | 17 +++++++++++++
 3 files changed, 55 insertions(+)
 create mode 100644 meta-selftest/recipes-test/selftest-hello-mod/files/Makefile
 create mode 100644 meta-selftest/recipes-test/selftest-hello-mod/files/hello.c
 create mode 100644 meta-selftest/recipes-test/selftest-hello-mod/hello-mod_0.1.bb

Comments

Ross Burton June 23, 2025, 4:50 p.m. UTC | #1
On 21 Jun 2025, at 08:31, Dixit Parmar via lists.openembedded.org <dixitparmar19=gmail.com@lists.openembedded.org> wrote:
> 
> Kernel module specific oe test cases requires a test kernel
> module package to work with. Added selftest-hello-mod
> derived from meta-skeleton/recipes-kernel/hello-mod.

Is there meant to be an actual test case to follow this up?

There’s already a kernel module in oeqa under meta/lib/oeqa/runtime/files/hellomod.c, I’ve previously tried adding more test cases around them (for SDKs not selftest though):

https://git.yoctoproject.org/poky-contrib/log/?h=ross/module

Maybe instead of duplicating the kernel module more we move the source and Makefile into meta/lib/oeqa/files/kmodule/ and then the tests can easily use them, and the recipe could set SRC_URI to ${COREBASE}/lib/oeqa/files/kmodule/hellomod.c.

Cheers,
Ross
Dixit Parmar June 24, 2025, 6:37 a.m. UTC | #2
On Mon, Jun 23, 2025 at 10:20 PM, Ross Burton wrote:

> 
> On 21 Jun 2025, at 08:31, Dixit Parmar via lists.openembedded.org
> <dixitparmar19=gmail.com@lists.openembedded.org> wrote:
> 
>> Kernel module specific oe test cases requires a test kernel
>> module package to work with. Added selftest-hello-mod
>> derived from meta-skeleton/recipes-kernel/hello-mod.
> 
> Is there meant to be an actual test case to follow this up?

Yes, it's here https://lists.openembedded.org/g/openembedded-core/message/218013 - please review this too ;)

> 
> There’s already a kernel module in oeqa under
> meta/lib/oeqa/runtime/files/hellomod.c, I’ve previously tried adding more
> test cases around them (for SDKs not selftest though):
> 
> https://git.yoctoproject.org/poky-contrib/log/?h=ross/module
> 
> Maybe instead of duplicating the kernel module more we move the source and
> Makefile into meta/lib/oeqa/files/kmodule/ and then the tests can easily
> use them, and the recipe could set SRC_URI to
> ${COREBASE}/lib/oeqa/files/kmodule/hellomod.c.

I created a new recipe with the corresponding source files with the idea of having an independent self-test package for hello-mod. This is included in the meta-selftest so it can be used for other kernel module-related test cases in the future. I can modify it to point to the source and Makefile outside of the package if you recommend, though.

> 
> Cheers,
> Ross
diff mbox series

Patch

diff --git a/meta-selftest/recipes-test/selftest-hello-mod/files/Makefile b/meta-selftest/recipes-test/selftest-hello-mod/files/Makefile
new file mode 100644
index 0000000000..4ded35fbc3
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-hello-mod/files/Makefile
@@ -0,0 +1,14 @@ 
+obj-m := hello.o
+
+SRC := $(shell pwd)
+
+all:
+	$(MAKE) -C $(KERNEL_SRC) M=$(SRC)
+
+modules_install:
+	$(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
+
+clean:
+	rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
+	rm -f Module.markers Module.symvers modules.order
+	rm -rf .tmp_versions Modules.symvers
diff --git a/meta-selftest/recipes-test/selftest-hello-mod/files/hello.c b/meta-selftest/recipes-test/selftest-hello-mod/files/hello.c
new file mode 100644
index 0000000000..4f73455d20
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-hello-mod/files/hello.c
@@ -0,0 +1,24 @@ 
+/******************************************************************************
+ *
+ *   Copyright (C) 2011  Intel Corporation. All rights reserved.
+ *
+ *   SPDX-License-Identifier: GPL-2.0-only
+ *
+ *****************************************************************************/
+
+#include <linux/module.h>
+
+static int __init hello_init(void)
+{
+	pr_info("Hello World!\n");
+	return 0;
+}
+
+static void __exit hello_exit(void)
+{
+	pr_info("Goodbye Cruel World!\n");
+}
+
+module_init(hello_init);
+module_exit(hello_exit);
+MODULE_LICENSE("GPL");
diff --git a/meta-selftest/recipes-test/selftest-hello-mod/hello-mod_0.1.bb b/meta-selftest/recipes-test/selftest-hello-mod/hello-mod_0.1.bb
new file mode 100644
index 0000000000..f7d5bc88a2
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-hello-mod/hello-mod_0.1.bb
@@ -0,0 +1,17 @@ 
+SUMMARY = "Example of how to build an external Linux kernel module -- selftest variant"
+DESCRIPTION = "${SUMMARY}"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
+
+inherit module
+
+SRC_URI = "file://Makefile \
+           file://hello.c \
+          "
+
+S = "${UNPACKDIR}"
+
+# The inherit of module.bbclass will automatically name module packages with
+# "kernel-module-" prefix as required by the oe-core build environment.
+
+RPROVIDES:${PN} += "kernel-module-hello"