Patchwork kernel.bbclass: Fix empty modules directory QA issue

login
register
mail settings
Submitter Nathan Rossi
Date Jan. 13, 2014, 8:33 a.m.
Message ID <2bba5e79-d06e-4b11-98ab-59506c84f896@AM1EHSMHS006.ehs.local>
Download mbox | patch
Permalink /patch/64615/
State New
Headers show

Comments

Nathan Rossi - Jan. 13, 2014, 8:33 a.m.
If a kernel is built without any external modules (aka no CONFIG_*=m),
then during a modules_install of the kernel an empty directory is
created at /lib/modules/${KERNEL_VERIONS}/kernel. This is behaviour of
the kernel infrastructure, the directory would normally be populated
with the modules that were built.

However because of the expectations of kernel-modules-split, no packages
are created when there are no modules and an empty directory lingers.
This raises QA issues as warning or errors (depending on the distro).

The following patch changes the kernel_do_install task to check if the
directory is empty and if so removes it.

Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
---
 meta/classes/kernel.bbclass |    4 ++++
 1 file changed, 4 insertions(+)
Robert Yang - Jan. 13, 2014, 8:45 a.m.
On 01/13/2014 04:33 PM, Nathan Rossi wrote:
> If a kernel is built without any external modules (aka no CONFIG_*=m),
> then during a modules_install of the kernel an empty directory is
> created at /lib/modules/${KERNEL_VERIONS}/kernel. This is behaviour of
> the kernel infrastructure, the directory would normally be populated
> with the modules that were built.
>
> However because of the expectations of kernel-modules-split, no packages
> are created when there are no modules and an empty directory lingers.
> This raises QA issues as warning or errors (depending on the distro).
>
> The following patch changes the kernel_do_install task to check if the
> directory is empty and if so removes it.
>
> Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
> ---
>   meta/classes/kernel.bbclass |    4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 5fef446..6b4e992 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -183,6 +183,10 @@ kernel_do_install() {
>   		oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" modules_install
>   		rm "${D}/lib/modules/${KERNEL_VERSION}/build"
>   		rm "${D}/lib/modules/${KERNEL_VERSION}/source"
> +		# If the kernel/ directory is empty remove it to prevent QA issues

How about:

rmdir --ignore-fail-on-non-empty ${D}/lib/modules/${KERNEL_VERSION}/kernel

// Robert

> +		if [ ! "$(ls -A "${D}/lib/modules/${KERNEL_VERSION}/kernel")" ]; then
> +			rm -r "${D}/lib/modules/${KERNEL_VERSION}/kernel"
> +		fi
>   	else
>   		bbnote "no modules to install"
>   	fi
>
Nathan Rossi - Jan. 28, 2014, 1:19 a.m.
> -----Original Message-----
> From: Nathan Rossi [mailto:nathan.rossi@xilinx.com]
> Sent: Tuesday, January 14, 2014 11:21 AM
> To: openembedded-core@lists.openembedded.org
> Cc: Nathan Rossi; Robert Yang
> Subject: [PATCH v2] kernel.bbclass: Fix empty modules directory QA issue
>
> If a kernel is built without any external modules (aka no CONFIG_*=m),
> then during a modules_install of the kernel an empty directory is
> created at /lib/modules/${KERNEL_VERIONS}/kernel. This is behaviour of
> the kernel infrastructure, the directory would normally be populated
> with the modules that were built.
>
> However because of the expectations of kernel-modules-split, no packages
> are created when there are no modules and an empty directory lingers.
> This raises QA issues as warning or errors (depending on the distro).
>
> The following patch changes the kernel_do_install task to check if the
> directory is empty and if so removes it.
>
> Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
> ---
>  meta/classes/kernel.bbclass |    2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 5fef446..f4dcba5 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -183,6 +183,8 @@ kernel_do_install() {
>               oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" modules_install
>               rm "${D}/lib/modules/${KERNEL_VERSION}/build"
>               rm "${D}/lib/modules/${KERNEL_VERSION}/source"
> +             # If the kernel/ directory is empty remove it to prevent QA
> issues
> +             rmdir --ignore-fail-on-non-empty
> "${D}/lib/modules/${KERNEL_VERSION}/kernel"
>       else
>               bbnote "no modules to install"
>       fi
> --
> 1.7.9.5
>

Ping, any additional concerns with this patch?

Regards,
Nathan


This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

Patch

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 5fef446..6b4e992 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -183,6 +183,10 @@  kernel_do_install() {
 		oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" modules_install
 		rm "${D}/lib/modules/${KERNEL_VERSION}/build"
 		rm "${D}/lib/modules/${KERNEL_VERSION}/source"
+		# If the kernel/ directory is empty remove it to prevent QA issues
+		if [ ! "$(ls -A "${D}/lib/modules/${KERNEL_VERSION}/kernel")" ]; then
+			rm -r "${D}/lib/modules/${KERNEL_VERSION}/kernel"
+		fi
 	else
 		bbnote "no modules to install"
 	fi