Patchwork [v6] linux-dtb: add multi-dtb build support and keep dtb in deploy cache package

login
register
mail settings
Submitter Zhenhua Luo
Date Jan. 9, 2012, 3:37 a.m.
Message ID <1326080274-1998-1-git-send-email-b19537@freescale.com>
Download mbox | patch
Permalink /patch/18785/
State Superseded
Headers show

Comments

Zhenhua Luo - Jan. 9, 2012, 3:37 a.m.
From: Zhenhua Luo <b19537@freescale.com>

Signed-off-by: Zhenhua Luo <b19537@freescale.com>
---
 meta/recipes-kernel/linux/linux-dtb.inc |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)
Saul Wold - Jan. 10, 2012, 5:43 a.m.
On 01/08/2012 07:37 PM, b19537@freescale.com wrote:
> From: Zhenhua Luo<b19537@freescale.com>
>
> Signed-off-by: Zhenhua Luo<b19537@freescale.com>
> ---
>   meta/recipes-kernel/linux/linux-dtb.inc |   24 +++++++++++++++---------
>   1 files changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc
> index 7ec7584..fc29d14 100644
> --- a/meta/recipes-kernel/linux/linux-dtb.inc
> +++ b/meta/recipes-kernel/linux/linux-dtb.inc
> @@ -13,15 +13,21 @@ python __anonymous () {
>   	d.setVar("PACKAGES", "%s kernel-devicetree" % packages)
>   }
>
I am not sure how this worked, I am seeing a problem with building rootfs.
| 	

kernel-devicetree is needed by 
kernel-modules-3.0.14+git1+6ae3d992cf546184010e87a0349810198f1d167c_1+58ffdb8000e34d2ba7c3ef278b26680b0886e8b5-r2.mpc8315e_rdb

This might be a PR Bump issue?

Sau!

> -do_install_append() {
> +kernel_do_deploy_append() {
>       if test -n "${KERNEL_DEVICETREE}"; then
> -	dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${KERNEL_DEVICETREE}
> -	install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION}
> -	install -d ${DEPLOY_DIR_IMAGE}
> -	install -m 0644 devicetree ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb
> -	cd ${DEPLOY_DIR_IMAGE}
> -	rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
> -	ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
> +        for DTS_FILE in ${KERNEL_DEVICETREE}; do
> +            DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
> +            DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
> +            DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
> +            dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${DTS_FILE}
> +            install -m 0644 devicetree ${D}/boot/devicetree-${DTS_BASE_NAME}-${KERNEL_VERSION}
> +
> +            install -d ${DEPLOYDIR}
> +            install -m 0644 devicetree ${DEPLOYDIR}/${DTB_NAME}.dtb
> +            rm -f devicetree
> +            cd ${DEPLOYDIR}
> +            ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb
> +            cd -
> +        done
>       fi
>   }
> -
Zhenhua Luo - Jan. 10, 2012, 6:25 a.m.
> -----Original Message-----
> From: Saul Wold [mailto:sgw@linux.intel.com]
> Sent: Tuesday, January 10, 2012 1:43 PM
> > @@ -13,15 +13,21 @@ python __anonymous () {
> >   	d.setVar("PACKAGES", "%s kernel-devicetree" % packages)
> >   }
> >
> I am not sure how this worked, I am seeing a problem with building rootfs.
> |
> 
> kernel-devicetree is needed by
> kernel-modules-
> 3.0.14+git1+6ae3d992cf546184010e87a0349810198f1d167c_1+58ffdb8000e34d2ba7c3ef278
> b26680b0886e8b5-r2.mpc8315e_rdb
> 
> This might be a PR Bump issue?
[Luo Zhenhua-B19537] I didn't meet such issue during my build, do we need to add a PR in linux-dtb.inc to solve this issue?


Best Regards,

Zhenhua
McClintock Matthew-B29882 - Jan. 12, 2012, 10:09 p.m.
On Tue, Jan 10, 2012 at 12:25 AM, Luo Zhenhua-B19537
<B19537@freescale.com> wrote:
>> -----Original Message-----
>> From: Saul Wold [mailto:sgw@linux.intel.com]
>> Sent: Tuesday, January 10, 2012 1:43 PM
>> > @@ -13,15 +13,21 @@ python __anonymous () {
>> >     d.setVar("PACKAGES", "%s kernel-devicetree" % packages)
>> >   }
>> >
>> I am not sure how this worked, I am seeing a problem with building rootfs.
>> |
>>
>> kernel-devicetree is needed by
>> kernel-modules-
>> 3.0.14+git1+6ae3d992cf546184010e87a0349810198f1d167c_1+58ffdb8000e34d2ba7c3ef278
>> b26680b0886e8b5-r2.mpc8315e_rdb
>>
>> This might be a PR Bump issue?
> [Luo Zhenhua-B19537] I didn't meet such issue during my build, do we need to add a PR in linux-dtb.inc to solve this issue?

Zhenhua,

I would suggest testing without our 'meta-fsl-ppc' layer and see what happens.

-M
Zhenhua Luo - June 26, 2012, 3:36 a.m.
Saul, 

In this patch, dtb files are installed into ${D} and ${DEPLOYDIR} by kernel_do_deploy, there is a race issue of do_deploy and do_package.

"do_package" runs before dtb are installed into ${D}, so there is no dtb in /boot/devicetree/ and kernel-devicetree binary package is not generated due to empty content.

I will send out a patch to do ${D} install and ${DEPLOYDIR} install in separated steps: do_install and do_deploy. 


Best Regards,

Zhenhua


> -----Original Message-----
> From: Saul Wold [mailto:sgw@linux.intel.com]
> Sent: Tuesday, January 10, 2012 1:43 PM
> To: Patches and discussions about the oe-core layer
> Cc: Luo Zhenhua-B19537
> Subject: Re: [OE-core] [PATCH oe-core v6] linux-dtb: add multi-dtb build support
> and keep dtb in deploy cache package
> 
> On 01/08/2012 07:37 PM, b19537@freescale.com wrote:
> > From: Zhenhua Luo<b19537@freescale.com>
> >
> > Signed-off-by: Zhenhua Luo<b19537@freescale.com>
> > ---
> >   meta/recipes-kernel/linux/linux-dtb.inc |   24 +++++++++++++++---------
> >   1 files changed, 15 insertions(+), 9 deletions(-)
> >
> > diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-
> kernel/linux/linux-dtb.inc
> > index 7ec7584..fc29d14 100644
> > --- a/meta/recipes-kernel/linux/linux-dtb.inc
> > +++ b/meta/recipes-kernel/linux/linux-dtb.inc
> > @@ -13,15 +13,21 @@ python __anonymous () {
> >   	d.setVar("PACKAGES", "%s kernel-devicetree" % packages)
> >   }
> >
> I am not sure how this worked, I am seeing a problem with building rootfs.
> |
> 
> kernel-devicetree is needed by
> kernel-modules-
> 3.0.14+git1+6ae3d992cf546184010e87a0349810198f1d167c_1+58ffdb8000e34d2ba7c3ef278
> b26680b0886e8b5-r2.mpc8315e_rdb
> 
> This might be a PR Bump issue?
> 
> Sau!
> 
> > -do_install_append() {
> > +kernel_do_deploy_append() {
> >       if test -n "${KERNEL_DEVICETREE}"; then
> > -	dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree
> ${KERNEL_DEVICETREE}
> > -	install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION}
> > -	install -d ${DEPLOY_DIR_IMAGE}
> > -	install -m 0644 devicetree
> ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb
> > -	cd ${DEPLOY_DIR_IMAGE}
> > -	rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
> > -	ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
> > +        for DTS_FILE in ${KERNEL_DEVICETREE}; do
> > +            DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
> > +            DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed
> "s/${MACHINE}/${DTS_BASE_NAME}/g"`
> > +            DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed
> "s/${MACHINE}/${DTS_BASE_NAME}/g"`
> > +            dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree
> ${DTS_FILE}
> > +            install -m 0644 devicetree ${D}/boot/devicetree-${DTS_BASE_NAME}-
> ${KERNEL_VERSION}
> > +
> > +            install -d ${DEPLOYDIR}
> > +            install -m 0644 devicetree ${DEPLOYDIR}/${DTB_NAME}.dtb
> > +            rm -f devicetree
> > +            cd ${DEPLOYDIR}
> > +            ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb
> > +            cd -
> > +        done
> >       fi
> >   }
> > -

Patch

diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc
index 7ec7584..fc29d14 100644
--- a/meta/recipes-kernel/linux/linux-dtb.inc
+++ b/meta/recipes-kernel/linux/linux-dtb.inc
@@ -13,15 +13,21 @@  python __anonymous () {
 	d.setVar("PACKAGES", "%s kernel-devicetree" % packages)
 }
 
-do_install_append() {
+kernel_do_deploy_append() {
     if test -n "${KERNEL_DEVICETREE}"; then
-	dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${KERNEL_DEVICETREE}
-	install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION}
-	install -d ${DEPLOY_DIR_IMAGE}
-	install -m 0644 devicetree ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb
-	cd ${DEPLOY_DIR_IMAGE}
-	rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
-	ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+        for DTS_FILE in ${KERNEL_DEVICETREE}; do
+            DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
+            DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
+            DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
+            dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${DTS_FILE}
+            install -m 0644 devicetree ${D}/boot/devicetree-${DTS_BASE_NAME}-${KERNEL_VERSION}
+
+            install -d ${DEPLOYDIR}
+            install -m 0644 devicetree ${DEPLOYDIR}/${DTB_NAME}.dtb
+            rm -f devicetree
+            cd ${DEPLOYDIR}
+            ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb
+            cd -
+        done
     fi
 }
-