meta-agl-lxc: Support rcar3 kernel module headers in guests 43/26743/2
authorScott Murray <scott.murray@konsulko.com>
Mon, 25 Oct 2021 16:30:36 +0000 (12:30 -0400)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 26 Oct 2021 14:30:36 +0000 (14:30 +0000)
Add a bbclass that can be used to disable compilation in
module.bbclass based recipes, and dynamically activated bbappends for
the rcar3 kernel module recipes that use it and guest-build-specific
do_install overrides to get the userspace API headers installed
transparently to the userspace recipes.  This avoids the complications
that would arise from using a full linux-renesas kernel build for
guest container images.

Bug-AGL: SPEC-4089

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I917e66ca024a2a507e615ba3a2a58c603a691142

meta-agl-lxc/classes/guest-kernel-module.bbclass [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngr.bbappend [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngrbuf.bbappend [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-uvcs/kernel-module-uvcs-drv.bbappend [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vsp2driver/kernel-module-vsp2driver.bbappend [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspm/kernel-module-vspm.bbappend [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspmif.bbappend [new file with mode: 0644]

diff --git a/meta-agl-lxc/classes/guest-kernel-module.bbclass b/meta-agl-lxc/classes/guest-kernel-module.bbclass
new file mode 100644 (file)
index 0000000..bbe25c2
--- /dev/null
@@ -0,0 +1,21 @@
+DEPENDS:remove:aglcontainerguest = "${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-dummy", "linux-renesas", "", d)}"
+
+do_configure[depends] = "${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-dummy", "", "make-mod-scripts:do_compile", d)}"
+
+python __anonymous () {
+    # Need to use inline python here as, contrary to the BitBake docs,
+    # having noexec set at all disables the task, so using
+    # oe.utils.conditional to set it to "0" still ends up with the task
+    # disabled.
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel") == "linux-dummy":
+        d.setVarFlag("do_compile", "noexec", "1")
+}
+
+do_install:aglcontainerguest() {
+    # Create destination directory
+    install -d ${D}/${includedir}/
+}
+
+# Guest doesn't build the module, so go ahead and quiet warnings about
+# double '/' in base recipe definition
+FILES_${PN}:aglcontainerguest = ""
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngr.bbappend b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngr.bbappend
new file mode 100644 (file)
index 0000000..a9d09a7
--- /dev/null
@@ -0,0 +1,7 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+    # Install shared header file to ${includedir}
+    install -m 644 ${S}/${MMNGR_DRV_DIR}/include/mmngr_public_cmn.h ${D}/${includedir}/
+    install -m 644 ${S}/${MMNGR_DRV_DIR}/include/mmngr_private_cmn.h ${D}/${includedir}/
+}
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngrbuf.bbappend b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngrbuf.bbappend
new file mode 100644 (file)
index 0000000..2323de9
--- /dev/null
@@ -0,0 +1,6 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+    # Install shared header files to ${includedir}
+    install -m 644 ${S}/${MMNGRBUF_DRV_DIR}/include/mmngr_buf_private_cmn.h ${D}/${includedir}/
+}
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-uvcs/kernel-module-uvcs-drv.bbappend b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-uvcs/kernel-module-uvcs-drv.bbappend
new file mode 100644 (file)
index 0000000..7c22158
--- /dev/null
@@ -0,0 +1,6 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+    # Install shared header file
+    install -m 644 ${S}/include/uvcs_ioctl.h ${D}/${includedir}/
+}
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vsp2driver/kernel-module-vsp2driver.bbappend b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vsp2driver/kernel-module-vsp2driver.bbappend
new file mode 100644 (file)
index 0000000..f41a0ec
--- /dev/null
@@ -0,0 +1,9 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+    # Install shared header file to ${includedir}
+    install -m 644 ${S}/vsp2driver/linux/vsp2.h ${D}/${includedir}/
+}
+
+PACKAGES:append:aglcontainerguest = " ${PN}-dev"
+FILES_${PN}-dev:aglcontainerguest += "${includedir}"
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspm/kernel-module-vspm.bbappend b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspm/kernel-module-vspm.bbappend
new file mode 100644 (file)
index 0000000..eb478be
--- /dev/null
@@ -0,0 +1,8 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+    # Install shared header files
+    install -m 644 ${S}/${VSPM_DRV_DIR}/include/vspm_cmn.h ${D}/${includedir}/
+    install -m 644 ${S}/${VSPM_DRV_DIR}/include/vsp_drv.h ${D}/${includedir}/
+    install -m 644 ${S}/${VSPM_DRV_DIR}/include/fdp_drv.h ${D}/${includedir}/
+}
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspmif.bbappend b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspmif.bbappend
new file mode 100644 (file)
index 0000000..00078b9
--- /dev/null
@@ -0,0 +1,6 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+    # Install shared header file
+    install -m 644 ${S}/${VSPMIF_DRV_DIR}/include/vspm_if.h ${D}/${includedir}/
+}