[OE-core] [PATCH] kernel: Move Device Tree support to kernel.bbclass

Burton, Ross ross.burton at intel.com
Thu Sep 7 16:21:49 UTC 2017


Would this be the cause of this failure on the autobuilder when doing
testimage?

runqemu - ERROR - DTB not found:
tmp/deploy/images/qemuarm/zImage-versatile-pb.dtb,
tmp/deploy/images/qemuarm/zImage-versatile-pb.dtb* or
tmp/deploy/images/qemuarm/*.dtb

From
https://autobuilder.yocto.io/builders/nightly-arm-lsb/builds/463/steps/Running%20Sanity%20Tests/logs/stdio

Ross

On 5 September 2017 at 02:57, Otavio Salvador <otavio at ossystems.com.br>
wrote:

> The Device Tree is commonly used but it is still kept as a .inc file
> instead of a proper class. Instead now we move the Device Tree code to
> a kernel-devicetree class and automatically enable it when the
> KERNEL_DEVICETREE variable is set.
>
> To avoid breakage, we kept a linux-dtb.inc file which raises a warning
> telling the user about the change so in next release this can be
> removed.
>
> Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
> ---
>
>  meta/classes/kernel-devicetree.bbclass  | 63
> ++++++++++++++++++++++++++++++++
>  meta/classes/kernel.bbclass             |  4 +++
>  meta/recipes-kernel/linux/linux-dtb.inc | 64
> ++-------------------------------
>  3 files changed, 69 insertions(+), 62 deletions(-)
>  create mode 100644 meta/classes/kernel-devicetree.bbclass
>
> diff --git a/meta/classes/kernel-devicetree.bbclass b/meta/classes/kernel-
> devicetree.bbclass
> new file mode 100644
> index 0000000000..6e6f39e640
> --- /dev/null
> +++ b/meta/classes/kernel-devicetree.bbclass
> @@ -0,0 +1,63 @@
> +# Support for device tree generation
> +FILES_kernel-devicetree = "/${KERNEL_IMAGEDEST}/*.dtb
> /${KERNEL_IMAGEDEST}/*.dtbo"
> +
> +python __anonymous () {
> +    d.appendVar("PACKAGES", " kernel-devicetree")
> +}
> +
> +normalize_dtb () {
> +       DTB="$1"
> +       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
> +       echo "${DTB}"
> +}
> +
> +get_real_dtb_path_in_kernel () {
> +       DTB="$1"
> +       DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
> +       if [ ! -e "${DTB_PATH}" ]; then
> +               DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
> +       fi
> +       echo "${DTB_PATH}"
> +}
> +
> +do_compile_append() {
> +       for DTB in ${KERNEL_DEVICETREE}; do
> +               DTB=`normalize_dtb "${DTB}"`
> +               oe_runmake ${DTB}
> +       done
> +}
> +
> +do_install_append() {
> +       for DTB in ${KERNEL_DEVICETREE}; do
> +               DTB=`normalize_dtb "${DTB}"`
> +               DTB_EXT=${DTB##*.}
> +               DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> +               DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
> +               install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/${
> DTB_BASE_NAME}.${DTB_EXT}
> +               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> +                       symlink_name=${type}"-"${
> KERNEL_IMAGE_SYMLINK_NAME}
> +                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       ln -sf ${DTB_BASE_NAME}.${DTB_EXT}
> ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT}
> +               done
> +       done
> +}
> +
> +do_deploy_append() {
> +       for DTB in ${KERNEL_DEVICETREE}; do
> +               DTB=`normalize_dtb "${DTB}"`
> +               DTB_EXT=${DTB##*.}
> +               DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
> +               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> +                       base_name=${type}"-"${KERNEL_IMAGE_BASE_NAME}
> +                       symlink_name=${type}"-"${
> KERNEL_IMAGE_SYMLINK_NAME}
> +                       DTB_NAME=`echo ${base_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> +                       install -d ${DEPLOYDIR}
> +                       install -m 0644 ${DTB_PATH}
> ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}
> +               done
> +       done
> +}
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 02a5e961cb..8c01e90709 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -662,3 +662,7 @@ do_deploy[prefuncs] += "package_get_auto_pr"
>  addtask deploy after do_populate_sysroot do_packagedata
>
>  EXPORT_FUNCTIONS do_deploy
> +
> +# If we are using Device Tree support, inherit the class to enable it
> +KERNEL_DEVICETREE_CLASS = "${@['kernel-devicetree', ''][d.getVar('KERNEL_DEVICETREE',
> False) == None]}"
> +inherit ${KERNEL_DEVICETREE_CLASS}
> diff --git a/meta/recipes-kernel/linux/linux-dtb.inc
> b/meta/recipes-kernel/linux/linux-dtb.inc
> index 6e6f39e640..f1912775ca 100644
> --- a/meta/recipes-kernel/linux/linux-dtb.inc
> +++ b/meta/recipes-kernel/linux/linux-dtb.inc
> @@ -1,63 +1,3 @@
> -# Support for device tree generation
> -FILES_kernel-devicetree = "/${KERNEL_IMAGEDEST}/*.dtb
> /${KERNEL_IMAGEDEST}/*.dtbo"
> -
> -python __anonymous () {
> -    d.appendVar("PACKAGES", " kernel-devicetree")
> -}
> -
> -normalize_dtb () {
> -       DTB="$1"
> -       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
> -       echo "${DTB}"
> -}
> -
> -get_real_dtb_path_in_kernel () {
> -       DTB="$1"
> -       DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
> -       if [ ! -e "${DTB_PATH}" ]; then
> -               DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
> -       fi
> -       echo "${DTB_PATH}"
> -}
> -
> -do_compile_append() {
> -       for DTB in ${KERNEL_DEVICETREE}; do
> -               DTB=`normalize_dtb "${DTB}"`
> -               oe_runmake ${DTB}
> -       done
> -}
> -
> -do_install_append() {
> -       for DTB in ${KERNEL_DEVICETREE}; do
> -               DTB=`normalize_dtb "${DTB}"`
> -               DTB_EXT=${DTB##*.}
> -               DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> -               DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
> -               install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/${
> DTB_BASE_NAME}.${DTB_EXT}
> -               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> -                       symlink_name=${type}"-"${
> KERNEL_IMAGE_SYMLINK_NAME}
> -                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -                       ln -sf ${DTB_BASE_NAME}.${DTB_EXT}
> ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT}
> -               done
> -       done
> -}
> -
> -do_deploy_append() {
> -       for DTB in ${KERNEL_DEVICETREE}; do
> -               DTB=`normalize_dtb "${DTB}"`
> -               DTB_EXT=${DTB##*.}
> -               DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
> -               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> -                       base_name=${type}"-"${KERNEL_IMAGE_BASE_NAME}
> -                       symlink_name=${type}"-"${
> KERNEL_IMAGE_SYMLINK_NAME}
> -                       DTB_NAME=`echo ${base_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -                       DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> -                       install -d ${DEPLOYDIR}
> -                       install -m 0644 ${DTB_PATH}
> ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}
> -               done
> -       done
> +python() {
> +    bb.warn("You are using the linux-dtb.inc which is deprecated. You can
> safely remove it as the Device Tree support is automatically enabled when
> KERNEL_DEVICETREE is set.")
>  }
> --
> 2.14.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20170907/eb5ff4ab/attachment-0002.html>


More information about the Openembedded-core mailing list