[oe-commits] [openembedded-core] 01/25: kernel: Move Device Tree support to kernel.bbclass
git at git.openembedded.org
git at git.openembedded.org
Mon Sep 11 22:52:26 UTC 2017
This is an automated email from the git hooks/post-receive script.
rpurdie pushed a commit to branch master-next
in repository openembedded-core.
commit da7cc9254fc08f795af8a12de310585b345e34a3
Author: Otavio Salvador <otavio at ossystems.com.br>
AuthorDate: Mon Sep 11 18:18:06 2017 -0300
kernel: Move Device Tree support to kernel.bbclass
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.
While converting to the class, we reworked the compile and install in
tasks as well as run the build of the Device Tree files in parallel,
if possible.
To avoid breakage in existing layers, 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>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
.../kernel-devicetree.bbclass} | 21 ++++---
meta/classes/kernel.bbclass | 3 +
meta/recipes-kernel/linux/linux-dtb.inc | 66 +---------------------
meta/recipes-kernel/linux/linux-yocto.inc | 1 -
4 files changed, 17 insertions(+), 74 deletions(-)
diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/classes/kernel-devicetree.bbclass
similarity index 81%
copy from meta/recipes-kernel/linux/linux-dtb.inc
copy to meta/classes/kernel-devicetree.bbclass
index ca92822..04e2f26 100644
--- a/meta/recipes-kernel/linux/linux-dtb.inc
+++ b/meta/classes/kernel-devicetree.bbclass
@@ -1,10 +1,7 @@
# Support for device tree generation
+PACKAGES_append = " kernel-devicetree"
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
@@ -23,14 +20,19 @@ get_real_dtb_path_in_kernel () {
echo "${DTB_PATH}"
}
-do_compile_append() {
- for DTB in ${KERNEL_DEVICETREE}; do
- DTB=`normalize_dtb "${DTB}"`
- oe_runmake ${DTB}
+do_compile_devicetree() {
+ DTBS=""
+ for dtb in ${KERNEL_DEVICETREE}; do
+ dtb=`normalize_dtb "${dtb}"`
+ DTBS="$DTBS $dtb"
done
+ oe_runmake -C ${B} ${PARALLEL_MAKE} ${DTBS}
}
+addtask compile_devicetree after do_compile before do_install
-do_install_append() {
+do_install_devicetree[dirs] = "${B}"
+do_install_devicetree[umask] = "022"
+fakeroot do_install_devicetree() {
for DTB in ${KERNEL_DEVICETREE}; do
DTB=`normalize_dtb "${DTB}"`
DTB_EXT=${DTB##*.}
@@ -44,6 +46,7 @@ do_install_append() {
done
done
}
+addtask install_devicetree after do_install before do_deploy
do_deploy_append() {
for DTB in ${KERNEL_DEVICETREE}; do
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 02a5e96..0ad522d 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -662,3 +662,6 @@ do_deploy[prefuncs] += "package_get_auto_pr"
addtask deploy after do_populate_sysroot do_packagedata
EXPORT_FUNCTIONS do_deploy
+
+# Add using Device Tree support
+inherit kernel-devicetree
diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc
index ca92822..f191277 100644
--- a/meta/recipes-kernel/linux/linux-dtb.inc
+++ b/meta/recipes-kernel/linux/linux-dtb.inc
@@ -1,65 +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}
- ln -sf ${DTB_NAME}.${DTB_EXT} ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.${DTB_EXT}
- ln -sf ${DTB_NAME}.${DTB_EXT} ${DEPLOYDIR}/${DTB_BASE_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.")
}
diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index 1b8ffd0..9c1f61b 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -54,7 +54,6 @@ LINUX_VERSION_EXTENSION ??= "-yocto-${LINUX_KERNEL_TYPE}"
# Pick up shared functions
inherit kernel
inherit kernel-yocto
-require linux-dtb.inc
B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build"
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list