Skip to contentSkip to conversation

updated fix external kernel module building on target

PATCH In review [email protected] 3 participants 6 messages Sep 30, 2014 – Nov 25, 2014

lore
Share & tools
lore
#0 lore raw

v2 cover updated fix external kernel module building on target

From: Nitin A Kamble <[email protected]>

The commit message is changed as per the feedback received from Bruce.

The following changes since commit c34775f8864f9bf9a2b32af1e3a803f7d84e11ba:

deb_packaging: Added support for multilib (2014-09-30 14:33:31 +0100)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib nitin/misc
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=nitin/misc

Nitin A Kamble (1):
kernel.bbclass: enable a link for external module building

 meta/classes/kernel.bbclass | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Signature · 1 line
1.8.1.4
#1 lore raw

PATCH v2 1/1 kernel.bbclass: enable a link for external module building

From: Nitin A Kamble <[email protected]>

Even though the kernel-dev package provides the required support for building external kernel modules on the target, some commonly used scripts and utilities fail as they are not finding the kernel module build support files at the desired location.

Create the /lib/modules/<kernel-version>/build link on target pointing to the sources provided by the kernel-dev package, to fix the issue.

Fixes Bug:
[YOCTO #2968]

---
 meta/classes/kernel.bbclass | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
meta/classes/kernel.bbclass +2 -1
index 78b33ce..5ac4ff4 100644
@@ -213,6 +213,7 @@ kernel_do_install() {
 	#
 	kerneldir=${D}${KERNEL_SRC_PATH}
 	install -d $kerneldir
+	ln -sf ${KERNEL_SRC_PATH} "${D}/lib/modules/${KERNEL_VERSION}/build"
 
 	#
 	# Store the kernel version in sysroots for module-base.bbclass
@@ -346,7 +347,7 @@ PACKAGES = "kernel kernel-base kernel-vmlinux kernel-image kernel-dev kernel-mod
 FILES_${PN} = ""
 FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order /lib/modules/${KERNEL_VERSION}/modules.builtin"
 FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
-FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH}"
+FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} /lib/modules/${KERNEL_VERSION}/build"
 FILES_kernel-vmlinux = "/boot/vmlinux*"
 FILES_kernel-modules = ""
 RDEPENDS_kernel = "kernel-base"
Signature · 1 line
1.8.1.4
#2 lore raw

Re: [Patch v2 1/1] kernel.bbclass: enable a link for external module building

Quoted 7 lines · On Tue, 2014-09-30 at 14:40 -0700, [email protected] wrote:

From: Nitin A Kamble <[email protected]>

Even though the kernel-dev package provides the required support for building external kernel modules on the target, some commonly used scripts and utilities fail as they are not finding the kernel module build support files at the desired location.

Quoted 6 lines

Create the /lib/modules/<kernel-version>/build link on target pointing to the sources provided by the kernel-dev package, to fix the issue.

Fixes Bug:
[YOCTO #2968]

I just updated my dizzy branch and am getting this when building a kernel with no modules:

Build Configuration:

BB_VERSION        = "1.24.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Fedora-19"
TARGET_SYS        = "i586-poky-linux-uclibc"
MACHINE           = "galileo"
DISTRO            = "poky-micro"
DISTRO_VERSION    = "1.7"
TUNE_FEATURES     = "m32 i586"
TARGET_FPU        = ""

meta
meta-yocto
meta-yocto-bsp = "dizzy0:64643804aea02e3062a7cde7af236771c56311fd"
meta-intel = "dizzy0:002bef4c2a59e95503a2bb7729e7749cd5a9f65b"
meta-micro-galileo = "dizzy0:f30310dc84dcd96b9e93bb6e5b531631d57d26d6"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_install (log file is located at /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-r4.1.1/temp/log.do_install.25369)
ERROR: Logfile of failure stored in: /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-r4.1.1/temp/log.do_install.25369 Log data follows:

| DEBUG: Executing python function package_get_auto_pr
| DEBUG: Python function package_get_auto_pr finished
| DEBUG: Executing shell function do_install
| NOTE: no modules to install
| ln: failed to create symbolic link '/home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-r4.1.1/image/lib/modules/3.17.0-rc7-yocto-micro/build': No such file or directory
| WARNING: /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-r4.1.1/temp/run.do_install.25369:1 exit 1 from
|   ln -sf /usr/src/kernel "/home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-r4.1.1/image/lib/modules/3.17.0-rc7-yocto-micro/build"
| ERROR: Function failed: do_install (log file is located at /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-r4.1.1/temp/log.do_install.25369)

ERROR: Task 4 (/home/trz/yocto/galileo-work/meta-intel/meta-micro-galileo/recipes-kernel/linux/linux-yocto-micro_3.17.bb, do_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 387 tasks of which 386 didn't need to be rerun and 1 failed.
No currently running tasks (357 of 395)

Summary: 1 task failed:
/home/trz/yocto/galileo-work/meta-intel/meta-micro-galileo/recipes-kernel/linux/linux-yocto-micro_3.17.bb, do_install
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Reverting this patch gets past it.

Tom

Quoted 29 lines
---
 meta/classes/kernel.bbclass | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
meta/classes/kernel.bbclass +2 -1
index 78b33ce..5ac4ff4 100644
@@ -213,6 +213,7 @@ kernel_do_install() {
 	#
 	kerneldir=${D}${KERNEL_SRC_PATH}
 	install -d $kerneldir
+	ln -sf ${KERNEL_SRC_PATH} "${D}/lib/modules/${KERNEL_VERSION}/build"
 
 	#
 	# Store the kernel version in sysroots for module-base.bbclass
@@ -346,7 +347,7 @@ PACKAGES = "kernel kernel-base kernel-vmlinux kernel-image kernel-dev kernel-mod
 FILES_${PN} = ""
 FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order /lib/modules/${KERNEL_VERSION}/modules.builtin"
 FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
-FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH}"
+FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} /lib/modules/${KERNEL_VERSION}/build"
 FILES_kernel-vmlinux = "/boot/vmlinux*"
 FILES_kernel-modules = ""
 RDEPENDS_kernel = "kernel-base"
Signature · 1 line
1.8.1.4
#3 lore raw

Re: [Patch v2 1/1] kernel.bbclass: enable a link for external module building

Quoted 86 lines

-----Original Message-----
From: Zanussi, Tom
Sent: Tuesday, November 04, 2014 3:26 PM
To: Kamble, Nitin A
Cc: [email protected]; Wold, Saul; Burton, Ross; Ashfield, Bruce (Wind River); [email protected]; Openembedded- [email protected]
Subject: Re: [OE-core] [Patch v2 1/1] kernel.bbclass: enable a link for external module building

Quoted 7 lines · On Tue, 2014-09-30 at 14:40 -0700, [email protected] wrote:

From: Nitin A Kamble <[email protected]>

Even though the kernel-dev package provides the required support for building external kernel modules on the target, some commonly used scripts and utilities fail as they are not finding the kernel module build support files at the desired location.

Quoted 6 lines

Create the /lib/modules/<kernel-version>/build link on target pointing to the sources provided by the kernel-dev package, to fix the issue.

Fixes Bug:
[YOCTO #2968]

I just updated my dizzy branch and am getting this when building a kernel with no modules:

Build Configuration:

BB_VERSION        = "1.24.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Fedora-19"
TARGET_SYS        = "i586-poky-linux-uclibc"
MACHINE           = "galileo"
DISTRO            = "poky-micro"
DISTRO_VERSION    = "1.7"
TUNE_FEATURES     = "m32 i586"
TARGET_FPU        = ""

meta
meta-yocto
meta-yocto-bsp = "dizzy0:64643804aea02e3062a7cde7af236771c56311fd"
meta-intel = "dizzy0:002bef4c2a59e95503a2bb7729e7749cd5a9f65b"
meta-micro-galileo = "dizzy0:f30310dc84dcd96b9e93bb6e5b531631d57d26d6"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_install (log file is located at /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux- uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/log.do_install.25369)
ERROR: Logfile of failure stored in: /home/trz/yocto/galileo- work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto- micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/log.do_install.25369
Log data follows:

| DEBUG: Executing python function package_get_auto_pr
| DEBUG: Python function package_get_auto_pr finished
| DEBUG: Executing shell function do_install
| NOTE: no modules to install
| ln: failed to create symbolic link
| '/home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc
| /linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-

r4.1.1/image/
| lib/modules/3.17.0-rc7-yocto-micro/build': No such file or directory | WARNING: /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky- linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/run.do_install.25369:1 exit 1 from
| ln -sf /usr/src/kernel "/home/trz/yocto/galileo-
work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto- micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/image/lib/modules/3.17.0-rc7-yocto-micro/build"

| ERROR: Function failed: do_install (log file is located at
| /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/
| linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-

r4.1.1/temp/lo
| g.do_install.25369)
ERROR: Task 4 (/home/trz/yocto/galileo-work/meta-intel/meta-micro- galileo/recipes-kernel/linux/linux-yocto-micro_3.17.bb, do_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 387 tasks of which 386 didn't need to be rerun and 1 failed.
No currently running tasks (357 of 395)

Quoted 8 lines

Summary: 1 task failed:
/home/trz/yocto/galileo-work/meta-intel/meta-micro-galileo/recipes-
kernel/linux/linux-yocto-micro_3.17.bb, do_install
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Reverting this patch gets past it.

Hi Tom,
Because of the no modules kernel configuration, the required directory structure is missing. This patch would fix the issue by ensuring the required directory is present. Can you verify the fix?

meta/classes/kernel.bbclass +1 -0
@@ -213,6 +213,7 @@ kernel_do_install() {
        #
        kerneldir=${D}${KERNEL_SRC_PATH}
        install -d $kerneldir
+       mkdir -p "${D}/lib/modules/${KERNEL_VERSION}"
        ln -sf ${KERNEL_SRC_PATH} "${D}/lib/modules/${KERNEL_VERSION}/build"
 

Thanks,
Nitin

Quoted 38 lines

Tom

Quoted 10 lines
---
 meta/classes/kernel.bbclass | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
meta/classes/kernel.bbclass +0 -0
index 78b33ce..5ac4ff4 100644

meta/classes/kernel.bbclass kernel_do_install() { · line 216

Quoted 4 lines
meta/classes/kernel.bbclass +1 -0
@@ -213,6 +213,7 @@ kernel_do_install() {
 	#
 	kerneldir=${D}${KERNEL_SRC_PATH}
 	install -d $kerneldir
+	ln -sf ${KERNEL_SRC_PATH}

"${D}/lib/modules/${KERNEL_VERSION}/build"

Quoted 6 lines
meta/classes/kernel.bbclass +0 -1
 	#
 	# Store the kernel version in sysroots for module-base.bbclass @@
-346,7 +347,7 @@ PACKAGES = "kernel kernel-base kernel-vmlinux

kernel-image kernel-dev kernel-mod FILES_${PN} = ""
FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order

/lib/modules/${KERNEL_VERSION}/modules.builtin"

Quoted 2 lines

FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
-FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers*

/boot/config* ${KERNEL_SRC_PATH}"

Quoted 1 line

+FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers*

/boot/config* ${KERNEL_SRC_PATH}
/lib/modules/${KERNEL_VERSION}/build"

Quoted 6 lines

FILES_kernel-vmlinux = "/boot/vmlinux*"
FILES_kernel-modules = ""
RDEPENDS_kernel = "kernel-base"
--
1.8.1.4

#4 lore raw

Re: [Patch v2 1/1] kernel.bbclass: enable a link for external module building

Quoted 86 lines · Nitin A
Quoted 86 lines

-----Original Message-----
From: Zanussi, Tom
Sent: Tuesday, November 04, 2014 3:26 PM
To: Kamble, Nitin A
Cc: [email protected]; Wold, Saul; Burton, Ross; Ashfield, Bruce (Wind River); [email protected]; Openembedded- [email protected]
Subject: Re: [OE-core] [Patch v2 1/1] kernel.bbclass: enable a link for external module building

Quoted 7 lines · On Tue, 2014-09-30 at 14:40 -0700, [email protected] wrote:

From: Nitin A Kamble <[email protected]>

Even though the kernel-dev package provides the required support for building external kernel modules on the target, some commonly used scripts and utilities fail as they are not finding the kernel module build support files at the desired location.

Quoted 6 lines

Create the /lib/modules/<kernel-version>/build link on target pointing to the sources provided by the kernel-dev package, to fix the issue.

Fixes Bug:
[YOCTO #2968]

I just updated my dizzy branch and am getting this when building a kernel with no modules:

Build Configuration:

BB_VERSION        = "1.24.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Fedora-19"
TARGET_SYS        = "i586-poky-linux-uclibc"
MACHINE           = "galileo"
DISTRO            = "poky-micro"
DISTRO_VERSION    = "1.7"
TUNE_FEATURES     = "m32 i586"
TARGET_FPU        = ""

meta
meta-yocto
meta-yocto-bsp = "dizzy0:64643804aea02e3062a7cde7af236771c56311fd"
meta-intel = "dizzy0:002bef4c2a59e95503a2bb7729e7749cd5a9f65b"
meta-micro-galileo = "dizzy0:f30310dc84dcd96b9e93bb6e5b531631d57d26d6"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_install (log file is located at /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux- uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/log.do_install.25369)
ERROR: Logfile of failure stored in: /home/trz/yocto/galileo- work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto- micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/log.do_install.25369
Log data follows:

| DEBUG: Executing python function package_get_auto_pr
| DEBUG: Python function package_get_auto_pr finished
| DEBUG: Executing shell function do_install
| NOTE: no modules to install
| ln: failed to create symbolic link
| '/home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc
| /linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-

r4.1.1/image/
| lib/modules/3.17.0-rc7-yocto-micro/build': No such file or directory | WARNING: /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky- linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/run.do_install.25369:1 exit 1 from
| ln -sf /usr/src/kernel "/home/trz/yocto/galileo-
work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto- micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/image/lib/modules/3.17.0-rc7-yocto-micro/build"

| ERROR: Function failed: do_install (log file is located at
| /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/
| linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-

r4.1.1/temp/lo
| g.do_install.25369)
ERROR: Task 4 (/home/trz/yocto/galileo-work/meta-intel/meta-micro- galileo/recipes-kernel/linux/linux-yocto-micro_3.17.bb, do_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 387 tasks of which 386 didn't need to be rerun and 1 failed.
No currently running tasks (357 of 395)

Quoted 8 lines
Quoted 8 lines

Summary: 1 task failed:
/home/trz/yocto/galileo-work/meta-intel/meta-micro-galileo/recipes-
kernel/linux/linux-yocto-micro_3.17.bb, do_install
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Reverting this patch gets past it.

Zhe He sent the same patch on the 21st, I guess it slipped through the cracks:

-----------------------------------------

[OE-core] [PATCH] kernel.bbclass: Create modules directory even if there is no modules installed

-----------------------------

[email protected]
Oct 21

to openembedded-c.
From: He Zhe <[email protected]>

During kernel_do_install it needs to make symbol link at ${D}/lib/modules/${KERNEL_VERSION}/build, but there will not be ${D}/lib/modules/${KERNEL_VERSION} if there is no modules installed for current image, which will result in a build failure.
Add "mkdir -p ${D}/lib/modules/${KERNEL_VERSION}" here to avoid this failure and the need of similar changes in other scripts that also expect it to exist.

---
 meta/classes/kernel.bbclass | 1 +
 1 file changed, 1 insertion(+)
meta/classes/kernel.bbclass +1 -0
index e958f90..e342ed1 100644
@@ -233,6 +233,7 @@ kernel_do_install() {
        #
        kerneldir=${D}${KERNEL_SRC_PATH}
        install -d $kerneldir
+       mkdir -p ${D}/lib/modules/${KERNEL_VERSION}
        ln -sf ${KERNEL_SRC_PATH} 

"${D}/lib/modules/${KERNEL_VERSION}/build"

--------------------------

Bruce

Quoted 54 lines

Hi Tom,
Because of the no modules kernel configuration, the required directory structure is missing. This patch would fix the issue by ensuring the required directory is present. Can you verify the fix?

meta/classes/kernel.bbclass +1 -0
@@ -213,6 +213,7 @@ kernel_do_install() {
         #
         kerneldir=${D}${KERNEL_SRC_PATH}
         install -d $kerneldir
+       mkdir -p "${D}/lib/modules/${KERNEL_VERSION}"
         ln -sf ${KERNEL_SRC_PATH} "${D}/lib/modules/${KERNEL_VERSION}/build"
 
 Thanks,

Nitin

Quoted 38 lines

Tom

Quoted 10 lines
---
  meta/classes/kernel.bbclass | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
meta/classes/kernel.bbclass +0 -0
index 78b33ce..5ac4ff4 100644

meta/classes/kernel.bbclass kernel_do_install() { · line 216

Quoted 4 lines
meta/classes/kernel.bbclass +1 -0
@@ -213,6 +213,7 @@ kernel_do_install() {
     #
     kerneldir=${D}${KERNEL_SRC_PATH}
     install -d $kerneldir
+   ln -sf ${KERNEL_SRC_PATH}

"${D}/lib/modules/${KERNEL_VERSION}/build"

Quoted 6 lines
meta/classes/kernel.bbclass +0 -1
     #
     # Store the kernel version in sysroots for module-base.bbclass @@
-346,7 +347,7 @@ PACKAGES = "kernel kernel-base kernel-vmlinux

kernel-image kernel-dev kernel-mod FILES_${PN} = ""
FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order

/lib/modules/${KERNEL_VERSION}/modules.builtin"

Quoted 2 lines

FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
-FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers*

/boot/config* ${KERNEL_SRC_PATH}"

Quoted 1 line

+FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers*

/boot/config* ${KERNEL_SRC_PATH}
/lib/modules/${KERNEL_VERSION}/build"

Quoted 6 lines

FILES_kernel-vmlinux = "/boot/vmlinux*"
FILES_kernel-modules = ""
RDEPENDS_kernel = "kernel-base"
--
1.8.1.4

#5 lore raw

Re: [Patch v2 1/1] kernel.bbclass: enable a link for external module building

Adding Armin (for dizzy).

Quoted 97 lines · Bruce Ashfield
Quoted 86 lines · Nitin A
Quoted 86 lines

-----Original Message-----
From: Zanussi, Tom
Sent: Tuesday, November 04, 2014 3:26 PM
To: Kamble, Nitin A
Cc: [email protected]; Wold, Saul; Burton, Ross; Ashfield, Bruce (Wind River); [email protected]; Openembedded- [email protected]
Subject: Re: [OE-core] [Patch v2 1/1] kernel.bbclass: enable a link for external module building

Quoted 7 lines · On Tue, 2014-09-30 at 14:40 -0700, [email protected] wrote:

From: Nitin A Kamble <[email protected]>

Even though the kernel-dev package provides the required support for building external kernel modules on the target, some commonly used scripts and utilities fail as they are not finding the kernel module build support files at the desired location.

Quoted 6 lines

Create the /lib/modules/<kernel-version>/build link on target pointing to the sources provided by the kernel-dev package, to fix the issue.

Fixes Bug:
[YOCTO #2968]

I just updated my dizzy branch and am getting this when building a kernel with no modules:

Build Configuration:

BB_VERSION        = "1.24.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Fedora-19"
TARGET_SYS        = "i586-poky-linux-uclibc"
MACHINE           = "galileo"
DISTRO            = "poky-micro"
DISTRO_VERSION    = "1.7"
TUNE_FEATURES     = "m32 i586"
TARGET_FPU        = ""

meta
meta-yocto
meta-yocto-bsp = "dizzy0:64643804aea02e3062a7cde7af236771c56311fd"
meta-intel = "dizzy0:002bef4c2a59e95503a2bb7729e7749cd5a9f65b"
meta-micro-galileo = "dizzy0:f30310dc84dcd96b9e93bb6e5b531631d57d26d6"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_install (log file is located at /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux- uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/log.do_install.25369)
ERROR: Logfile of failure stored in: /home/trz/yocto/galileo- work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto- micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/log.do_install.25369
Log data follows:

| DEBUG: Executing python function package_get_auto_pr
| DEBUG: Python function package_get_auto_pr finished
| DEBUG: Executing shell function do_install
| NOTE: no modules to install
| ln: failed to create symbolic link
| '/home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc
| /linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-

r4.1.1/image/
| lib/modules/3.17.0-rc7-yocto-micro/build': No such file or directory | WARNING: /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky- linux-uclibc/linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/temp/run.do_install.25369:1 exit 1 from
| ln -sf /usr/src/kernel "/home/trz/yocto/galileo-
work/build/tmp/work/galileo-poky-linux-uclibc/linux-yocto- micro/3.17+gitAUTOINC+fb21bdc896_522a64f489- r4.1.1/image/lib/modules/3.17.0-rc7-yocto-micro/build"

| ERROR: Function failed: do_install (log file is located at
| /home/trz/yocto/galileo-work/build/tmp/work/galileo-poky-linux-uclibc/
| linux-yocto-micro/3.17+gitAUTOINC+fb21bdc896_522a64f489-

r4.1.1/temp/lo
| g.do_install.25369)
ERROR: Task 4 (/home/trz/yocto/galileo-work/meta-intel/meta-micro- galileo/recipes-kernel/linux/linux-yocto-micro_3.17.bb, do_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 387 tasks of which 386 didn't need to be rerun and 1 failed.
No currently running tasks (357 of 395)

Quoted 8 lines
Quoted 8 lines

Summary: 1 task failed:
/home/trz/yocto/galileo-work/meta-intel/meta-micro-galileo/recipes-
kernel/linux/linux-yocto-micro_3.17.bb, do_install
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Reverting this patch gets past it.

Quoted 8 lines

Zhe He sent the same patch on the 21st, I guess it slipped through the cracks:

-----------------------------------------

[OE-core] [PATCH] kernel.bbclass: Create modules directory even if there is no modules installed

Hi Armin,

It doesn't look like this fix ever made it to dizzy. Could you please pull this commit into your dizzy-next branch?:

commit 4c222d3a67bae265ff42b448ef4a643b0131e578

Author: He Zhe <[email protected]>
Date:   Tue Oct 21 17:47:44 2014 +0800

kernel.bbclass: Create modules directory even if there is no modules
install

Thanks,

Tom

Quoted 94 lines

-----------------------------

[email protected]
Oct 21

to openembedded-c.
From: He Zhe <[email protected]>

During kernel_do_install it needs to make symbol link at ${D}/lib/modules/${KERNEL_VERSION}/build, but there will not be ${D}/lib/modules/${KERNEL_VERSION} if there is no modules installed for current
image, which will result in a build failure.
Add "mkdir -p ${D}/lib/modules/${KERNEL_VERSION}" here to avoid this failure and the need of similar changes in other scripts that also expect it to exist.

---
  meta/classes/kernel.bbclass | 1 +
  1 file changed, 1 insertion(+)
meta/classes/kernel.bbclass +1 -0
index e958f90..e342ed1 100644
@@ -233,6 +233,7 @@ kernel_do_install() {
         #
         kerneldir=${D}${KERNEL_SRC_PATH}
         install -d $kerneldir
+       mkdir -p ${D}/lib/modules/${KERNEL_VERSION}
         ln -sf ${KERNEL_SRC_PATH} 

"${D}/lib/modules/${KERNEL_VERSION}/build"

--------------------------

Bruce

Quoted 54 lines

Hi Tom,
Because of the no modules kernel configuration, the required directory structure is missing. This patch would fix the issue by ensuring the required directory is present. Can you verify the fix?

meta/classes/kernel.bbclass +1 -0
@@ -213,6 +213,7 @@ kernel_do_install() {
         #
         kerneldir=${D}${KERNEL_SRC_PATH}
         install -d $kerneldir
+       mkdir -p "${D}/lib/modules/${KERNEL_VERSION}"
         ln -sf ${KERNEL_SRC_PATH} "${D}/lib/modules/${KERNEL_VERSION}/build"
 
 Thanks,

Nitin

Quoted 38 lines

Tom

Quoted 10 lines
---
  meta/classes/kernel.bbclass | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
meta/classes/kernel.bbclass +0 -0
index 78b33ce..5ac4ff4 100644

meta/classes/kernel.bbclass kernel_do_install() { · line 216

Quoted 4 lines
meta/classes/kernel.bbclass +1 -0
@@ -213,6 +213,7 @@ kernel_do_install() {
     #
     kerneldir=${D}${KERNEL_SRC_PATH}
     install -d $kerneldir
+   ln -sf ${KERNEL_SRC_PATH}

"${D}/lib/modules/${KERNEL_VERSION}/build"

Quoted 6 lines
meta/classes/kernel.bbclass +0 -1
     #
     # Store the kernel version in sysroots for module-base.bbclass @@
-346,7 +347,7 @@ PACKAGES = "kernel kernel-base kernel-vmlinux

kernel-image kernel-dev kernel-mod FILES_${PN} = ""
FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order

/lib/modules/${KERNEL_VERSION}/modules.builtin"

Quoted 2 lines

FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
-FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers*

/boot/config* ${KERNEL_SRC_PATH}"

Quoted 1 line

+FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers*

/boot/config* ${KERNEL_SRC_PATH}
/lib/modules/${KERNEL_VERSION}/build"

Quoted 6 lines

FILES_kernel-vmlinux = "/boot/vmlinux*"
FILES_kernel-modules = ""
RDEPENDS_kernel = "kernel-base"
--
1.8.1.4