[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