Re: [OE-core] [PATCH v2] linux-dtb: Use kernel build system to generate the dtb files
I cannot get this to work, do_install fails because it cannot find the generated .dtb file. See further in the message: On 08/13/2013 03:52 PM, Otavio Salvador wrote: As the Linux kernel, unconditionally, builds the dtc application and it is the compatible version with the DeviceTree files shipped within the kernel it is better to use it and the kernel build system to generate the dtb files. Some DeviceTree files rely on CPP and kernel headers to be able to generate the dtb binary contents and it is harder to replicate it outside of Linux kernel build system so we /use/ it. To comply with these assumptions we need to use the dtb file when calling 'make' instead of pointing to the DeviceTree source file; the code has been made backward compatible but it is advised to move to the new definition to avoid warnings as: ,[ Original definition ] | KERNEL_DEVICETREE = ${S}/arch/arm/boot/dts/imx6q-sabresd.dts ` Becomes: ,[ New definition ] | KERNEL_DEVICETREE = imx6q-sabresd.dtb ` Signed-off-by: Otavio Salvador ota...@ossystems.com.br --- Changes in v2: - Drop debug warning left by mistake - Improve bbwarn message (Bruce Ashfield) - Improve commit log (Bruce Ascfield) meta/recipes-kernel/linux/linux-dtb.inc | 58 +++-- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc index 41dd599..cebc76a 100644 --- a/meta/recipes-kernel/linux/linux-dtb.inc +++ b/meta/recipes-kernel/linux/linux-dtb.inc @@ -1,44 +1,38 @@ # Support for device tree generation FILES_kernel-devicetree = /${KERNEL_IMAGEDEST}/devicetree* -KERNEL_DEVICETREE_FLAGS ?= -R 8 -p 0x3000 python __anonymous () { -devicetree = d.getVar(KERNEL_DEVICETREE, True) or '' -if devicetree: -depends = d.getVar(DEPENDS, True) -d.setVar(DEPENDS, %s dtc-native % depends) -packages = d.getVar(PACKAGES, True) -d.setVar(PACKAGES, %s kernel-devicetree % packages) +d.appendVar(PACKAGES, kernel-devicetree) } do_install_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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 ${DTS_BASE_NAME} ${DTS_FILE} - install -m 0644 ${DTS_BASE_NAME} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb + DTB_BASE_NAME=`basename ${DTB} .dtb` + DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + oe_runmake ${DTB} + install -m 0644 ${B}/arch/${ARCH}/boot/${DTB} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb This fails now, because ${B}/arch/${ARCH}/boot/${DTB} cannot be found. The dtb file is in the dts subdirectory, so should this line read: + install -m 0644 ${B}/arch/${ARCH}/boot/dts/${DTB} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb I wonder why this works on your system? done fi } do_deploy_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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
Re: [OE-core] [PATCH v2] linux-dtb: Use kernel build system to generate the dtb files
On Tue, Aug 20, 2013 at 6:55 AM, Mike Looijmans mike.looijm...@topic.nl wrote: I cannot get this to work, do_install fails because it cannot find the generated .dtb file. Yes and I sent another patch, few days ago, to address this regression. I think it is queued for merging. http://patchwork.openembedded.org/patch/55951/ -- Otavio Salvador O.S. Systems http://www.ossystems.com.brhttp://code.ossystems.com.br Mobile: +55 (53) 9981-7854Mobile: +1 (347) 903-9750 ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH v2] linux-dtb: Use kernel build system to generate the dtb files
Hi, Can this please be pushed to dylan as well, please. It's a useful change, and I then could remove my version of that patch from our layer :-) Cheers, Andre' On Tue, 2013-08-13 at 10:52 -0300, Otavio Salvador wrote: As the Linux kernel, unconditionally, builds the dtc application and it is the compatible version with the DeviceTree files shipped within the kernel it is better to use it and the kernel build system to generate the dtb files. Some DeviceTree files rely on CPP and kernel headers to be able to generate the dtb binary contents and it is harder to replicate it outside of Linux kernel build system so we /use/ it. To comply with these assumptions we need to use the dtb file when calling 'make' instead of pointing to the DeviceTree source file; the code has been made backward compatible but it is advised to move to the new definition to avoid warnings as: ,[ Original definition ] | KERNEL_DEVICETREE = ${S}/arch/arm/boot/dts/imx6q-sabresd.dts ` Becomes: ,[ New definition ] | KERNEL_DEVICETREE = imx6q-sabresd.dtb ` Signed-off-by: Otavio Salvador ota...@ossystems.com.br --- Changes in v2: - Drop debug warning left by mistake - Improve bbwarn message (Bruce Ashfield) - Improve commit log (Bruce Ascfield) meta/recipes-kernel/linux/linux-dtb.inc | 58 +++-- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc index 41dd599..cebc76a 100644 --- a/meta/recipes-kernel/linux/linux-dtb.inc +++ b/meta/recipes-kernel/linux/linux-dtb.inc @@ -1,44 +1,38 @@ # Support for device tree generation FILES_kernel-devicetree = /${KERNEL_IMAGEDEST}/devicetree* -KERNEL_DEVICETREE_FLAGS ?= -R 8 -p 0x3000 python __anonymous () { -devicetree = d.getVar(KERNEL_DEVICETREE, True) or '' -if devicetree: -depends = d.getVar(DEPENDS, True) -d.setVar(DEPENDS, %s dtc-native % depends) -packages = d.getVar(PACKAGES, True) -d.setVar(PACKAGES, %s kernel-devicetree % packages) +d.appendVar(PACKAGES, kernel-devicetree) } do_install_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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 ${DTS_BASE_NAME} ${DTS_FILE} - install -m 0644 ${DTS_BASE_NAME} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb + DTB_BASE_NAME=`basename ${DTB} .dtb` + DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + oe_runmake ${DTB} + install -m 0644 ${B}/arch/${ARCH}/boot/${DTB} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb done fi } do_deploy_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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` + DTB_BASE_NAME=`basename ${DTB} .dtb` + DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + DTB_SYMLINK_NAME=`echo
Re: [OE-core] [PATCH v2] linux-dtb: Use kernel build system to generate the dtb files
On 08/13/2013 03:52 PM, Otavio Salvador wrote: As the Linux kernel, unconditionally, builds the dtc application and it is the compatible version with the DeviceTree files shipped within the kernel it is better to use it and the kernel build system to generate the dtb files. Some DeviceTree files rely on CPP and kernel headers to be able to generate the dtb binary contents and it is harder to replicate it outside of Linux kernel build system so we /use/ it. To comply with these assumptions we need to use the dtb file when calling 'make' instead of pointing to the DeviceTree source file; the code has been made backward compatible but it is advised to move to the new definition to avoid warnings as: ,[ Original definition ] | KERNEL_DEVICETREE = ${S}/arch/arm/boot/dts/imx6q-sabresd.dts ` Becomes: ,[ New definition ] | KERNEL_DEVICETREE = imx6q-sabresd.dtb ` I currently have a bbappend that adds a DTB file from outside the kernel (listing driver configuration that is implemented in the FPGA part of the SOC). The DTB file /include/s files from the kernel (that is, it gets everything from the standard files and adds a single device). How would I go about adding this after this change? (as for the change itself, I'm all in favor) Mike. Met vriendelijke groet / kind regards, Mike Looijmans TOPIC Embedded Systems Eindhovenseweg 32-C, NL-5683 KH Best Postbus 440, NL-5680 AK Best Telefoon: (+31) – (0)499 - 33.69.79 Telefax: (+31) - (0)499 - 33.69.70 E-mail: mike.looijm...@topic.nl Website: www.topic.nl Dit e-mail bericht en de eventueel daarbij behorende bijlagen zijn uitsluitend bestemd voor de geadresseerde, zoals die blijkt uit het e-mail bericht en/of de bijlagen. Er kunnen gegevens met betrekking tot een derde instaan. Indien u als niet-geadresseerde dit bericht en de bijlagen ontvangt, terwijl u niet bevoegd of gemachtigd bent om dit bericht namens de geadresseerde te ontvangen, wordt u verzocht de afzender hierover direct te informeren en het e-mail bericht met de bijlagen te vernietigen. Ieder gebruik van de inhoud van het e-mail bericht, waaronder de daarbij behorende bijlagen, door een ander dan de geadresseerde is onrechtmatig jegens ons dan wel de eventueel in het e-mail bericht of de bijlagen voorkomende andere personen. TOPIC Embedded Systems is niet aansprakelijk voor enigerlei schade voortvloeiend uit het gebruik en/of acceptatie van dit e-mail bericht of de daarbij behorende bijlagen. The contents of this message, as well as any enclosures, are addressed personally to, and thus solely intended for the addressee. They may contain information regarding a third party. A recipient who is neither the addressee, nor empowered to receive this message on behalf of the addressee, is kindly requested to immediately inform the sender of receipt, and to destroy the message and the enclosures. Any use of the contents of this message and/or the enclosures by any other person than the addressee or person who is empowered to receive this message, is illegal towards the sender and/or the aforementioned third party. TOPIC Embedded Systems is not liable for any damage as a result of the use and/or acceptance of this message and as well as any enclosures. ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH v2] linux-dtb: Use kernel build system to generate the dtb files
On Wed, Aug 14, 2013 at 11:17 AM, Mike Looijmans mike.looijm...@topic.nl wrote: On 08/13/2013 03:52 PM, Otavio Salvador wrote: As the Linux kernel, unconditionally, builds the dtc application and it is the compatible version with the DeviceTree files shipped within the kernel it is better to use it and the kernel build system to generate the dtb files. Some DeviceTree files rely on CPP and kernel headers to be able to generate the dtb binary contents and it is harder to replicate it outside of Linux kernel build system so we /use/ it. To comply with these assumptions we need to use the dtb file when calling 'make' instead of pointing to the DeviceTree source file; the code has been made backward compatible but it is advised to move to the new definition to avoid warnings as: ,[ Original definition ] | KERNEL_DEVICETREE = ${S}/arch/arm/boot/dts/imx6q-sabresd.dts ` Becomes: ,[ New definition ] | KERNEL_DEVICETREE = imx6q-sabresd.dtb ` I currently have a bbappend that adds a DTB file from outside the kernel (listing driver configuration that is implemented in the FPGA part of the SOC). The DTB file /include/s files from the kernel (that is, it gets everything from the standard files and adds a single device). How would I go about adding this after this change? Apply a patch? -- Otavio Salvador O.S. Systems http://www.ossystems.com.brhttp://projetos.ossystems.com.br Mobile: +55 (53) 9981-7854Mobile: +1 (347) 903-9750 ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
[OE-core] [PATCH v2] linux-dtb: Use kernel build system to generate the dtb files
As the Linux kernel, unconditionally, builds the dtc application and it is the compatible version with the DeviceTree files shipped within the kernel it is better to use it and the kernel build system to generate the dtb files. Some DeviceTree files rely on CPP and kernel headers to be able to generate the dtb binary contents and it is harder to replicate it outside of Linux kernel build system so we /use/ it. To comply with these assumptions we need to use the dtb file when calling 'make' instead of pointing to the DeviceTree source file; the code has been made backward compatible but it is advised to move to the new definition to avoid warnings as: ,[ Original definition ] | KERNEL_DEVICETREE = ${S}/arch/arm/boot/dts/imx6q-sabresd.dts ` Becomes: ,[ New definition ] | KERNEL_DEVICETREE = imx6q-sabresd.dtb ` Signed-off-by: Otavio Salvador ota...@ossystems.com.br --- Changes in v2: - Drop debug warning left by mistake - Improve bbwarn message (Bruce Ashfield) - Improve commit log (Bruce Ascfield) meta/recipes-kernel/linux/linux-dtb.inc | 58 +++-- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc index 41dd599..cebc76a 100644 --- a/meta/recipes-kernel/linux/linux-dtb.inc +++ b/meta/recipes-kernel/linux/linux-dtb.inc @@ -1,44 +1,38 @@ # Support for device tree generation FILES_kernel-devicetree = /${KERNEL_IMAGEDEST}/devicetree* -KERNEL_DEVICETREE_FLAGS ?= -R 8 -p 0x3000 python __anonymous () { -devicetree = d.getVar(KERNEL_DEVICETREE, True) or '' -if devicetree: -depends = d.getVar(DEPENDS, True) -d.setVar(DEPENDS, %s dtc-native % depends) -packages = d.getVar(PACKAGES, True) -d.setVar(PACKAGES, %s kernel-devicetree % packages) +d.appendVar(PACKAGES, kernel-devicetree) } do_install_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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 ${DTS_BASE_NAME} ${DTS_FILE} - install -m 0644 ${DTS_BASE_NAME} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb + DTB_BASE_NAME=`basename ${DTB} .dtb` + DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + oe_runmake ${DTB} + install -m 0644 ${B}/arch/${ARCH}/boot/${DTB} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb done fi } do_deploy_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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` + DTB_BASE_NAME=`basename ${DTB} .dtb` + DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` install -d ${DEPLOYDIR} - install -m 0644 ${B}/${DTS_BASE_NAME} ${DEPLOYDIR}/${DTB_NAME}.dtb + install -m 0644
Re: [OE-core] [PATCH v2] linux-dtb: Use kernel build system to generate the dtb files
On 13-08-13 09:52 AM, Otavio Salvador wrote: As the Linux kernel, unconditionally, builds the dtc application and it is the compatible version with the DeviceTree files shipped within the kernel it is better to use it and the kernel build system to generate the dtb files. Some DeviceTree files rely on CPP and kernel headers to be able to generate the dtb binary contents and it is harder to replicate it outside of Linux kernel build system so we /use/ it. To comply with these assumptions we need to use the dtb file when calling 'make' instead of pointing to the DeviceTree source file; the code has been made backward compatible but it is advised to move to the new definition to avoid warnings as: ,[ Original definition ] | KERNEL_DEVICETREE = ${S}/arch/arm/boot/dts/imx6q-sabresd.dts ` Becomes: ,[ New definition ] | KERNEL_DEVICETREE = imx6q-sabresd.dtb ` Signed-off-by: Otavio Salvador ota...@ossystems.com.br This passed a build test on the yocto reference mpc8315e-rdb, so at least in a simple case, it worked for me. Acked-by: Bruce Ashfield bruce.ashfi...@windriver.com --- Changes in v2: - Drop debug warning left by mistake - Improve bbwarn message (Bruce Ashfield) - Improve commit log (Bruce Ascfield) meta/recipes-kernel/linux/linux-dtb.inc | 58 +++-- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc index 41dd599..cebc76a 100644 --- a/meta/recipes-kernel/linux/linux-dtb.inc +++ b/meta/recipes-kernel/linux/linux-dtb.inc @@ -1,44 +1,38 @@ # Support for device tree generation FILES_kernel-devicetree = /${KERNEL_IMAGEDEST}/devicetree* -KERNEL_DEVICETREE_FLAGS ?= -R 8 -p 0x3000 python __anonymous () { -devicetree = d.getVar(KERNEL_DEVICETREE, True) or '' -if devicetree: -depends = d.getVar(DEPENDS, True) -d.setVar(DEPENDS, %s dtc-native % depends) -packages = d.getVar(PACKAGES, True) -d.setVar(PACKAGES, %s kernel-devicetree % packages) +d.appendVar(PACKAGES, kernel-devicetree) } do_install_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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 ${DTS_BASE_NAME} ${DTS_FILE} - install -m 0644 ${DTS_BASE_NAME} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb + DTB_BASE_NAME=`basename ${DTB} .dtb` + DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + oe_runmake ${DTB} + install -m 0644 ${B}/arch/${ARCH}/boot/${DTB} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb done fi } do_deploy_append() { if test -n ${KERNEL_DEVICETREE}; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - if [ ! -f ${DTS_FILE} ]; then - echo Warning: ${DTS_FILE} is not available! - continue + for DTB in ${KERNEL_DEVICETREE}; do + if echo ${DTB} | grep -q '/dts/'; then + bbwarn ${DTB} contains the full path to the the dts file, but only the dtb name should be used. + DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'` fi - 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` + DTB_BASE_NAME=`basename ${DTB} .dtb` + DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed s/${MACHINE}/${DTB_BASE_NAME}/g` + DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed