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 ${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 ${B}/arch/${ARCH}/boot/${DTB} 
> ${DEPLOYDIR}/${DTB_NAME}.dtb
>                       cd ${DEPLOYDIR}
>                       ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb
>                       cd -
> @@ -48,20 +42,20 @@ do_deploy_append() {
>  
>  pkg_postinst_kernel-devicetree () {
>       cd /${KERNEL_IMAGEDEST}
> -     for DTS_FILE in ${KERNEL_DEVICETREE}
> +     for DTB_FILE in ${KERNEL_DEVICETREE}
>       do
> -             DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
> -             DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed 
> "s/${MACHINE}/${DTS_BASE_NAME}/g"`
> -             update-alternatives --install 
> /${KERNEL_IMAGEDEST}/${DTS_BASE_NAME}.dtb ${DTS_BASE_NAME}.dtb 
> devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
> +             DTB_BASE_NAME=`basename ${DTB_FILE} | awk -F "." '{print $1}'`
> +             DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed 
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +             update-alternatives --install 
> /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb 
> devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
>       done
>  }
>  
>  pkg_postrm_kernel-devicetree () {
>       cd /${KERNEL_IMAGEDEST}
> -     for DTS_FILE in ${KERNEL_DEVICETREE}
> +     for DTB_FILE in ${KERNEL_DEVICETREE}
>       do
> -             DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
> -             DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed 
> "s/${MACHINE}/${DTS_BASE_NAME}/g"`
> -             update-alternatives --remove ${DTS_BASE_NAME}.dtb 
> devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
> +             DTB_BASE_NAME=`basename ${DTB_FILE} | awk -F "." '{print $1}'`
> +             DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed 
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +             update-alternatives --remove ${DTB_BASE_NAME}.dtb 
> devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
>       done
>  }


_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to