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 <[email protected]>
---

 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
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to