* [PATCH] kernel: Move Device Tree support to kernel.bbclass
@ 2017-09-05 1:57 Otavio Salvador
2017-09-05 2:04 ` ✗ patchtest: failure for " Patchwork
2017-09-07 16:21 ` [PATCH] " Burton, Ross
0 siblings, 2 replies; 5+ messages in thread
From: Otavio Salvador @ 2017-09-05 1:57 UTC (permalink / raw)
To: OpenEmbedded Core Mailing List; +Cc: Otavio Salvador
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@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
^ permalink raw reply related [flat|nested] 5+ messages in thread* ✗ patchtest: failure for kernel: Move Device Tree support to kernel.bbclass
2017-09-05 1:57 [PATCH] kernel: Move Device Tree support to kernel.bbclass Otavio Salvador
@ 2017-09-05 2:04 ` Patchwork
2017-09-05 2:08 ` Otavio Salvador
2017-09-07 16:21 ` [PATCH] " Burton, Ross
1 sibling, 1 reply; 5+ messages in thread
From: Patchwork @ 2017-09-05 2:04 UTC (permalink / raw)
To: Otavio Salvador; +Cc: openembedded-core
== Series Details ==
Series: kernel: Move Device Tree support to kernel.bbclass
Revision: 1
URL : https://patchwork.openembedded.org/series/8699/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is
an automated response. Several tests have been executed on the proposed
series by patchtest resulting in the following failures:
* Issue Series does not apply on top of target branch [test_series_merge_on_head]
Suggested fix Rebase your series on top of targeted branch
Targeted branch master (currently at dd75644db2)
If you believe any of these test results are incorrect, please reply to the
mailing list (openembedded-core@lists.openembedded.org) raising your concerns.
Otherwise we would appreciate you correcting the issues and submitting a new
version of the patchset if applicable. Please ensure you add/increment the
version number when sending the new version (i.e. [PATCH] -> [PATCH v2] ->
[PATCH v3] -> ...).
---
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest
Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kernel: Move Device Tree support to kernel.bbclass
2017-09-05 1:57 [PATCH] kernel: Move Device Tree support to kernel.bbclass Otavio Salvador
2017-09-05 2:04 ` ✗ patchtest: failure for " Patchwork
@ 2017-09-07 16:21 ` Burton, Ross
2017-09-08 13:12 ` Otavio Salvador
1 sibling, 1 reply; 5+ messages in thread
From: Burton, Ross @ 2017-09-07 16:21 UTC (permalink / raw)
To: Otavio Salvador; +Cc: OpenEmbedded Core Mailing List
[-- Attachment #1: Type: text/plain, Size: 8327 bytes --]
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@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@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@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
[-- Attachment #2: Type: text/html, Size: 10966 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-09-08 13:12 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-05 1:57 [PATCH] kernel: Move Device Tree support to kernel.bbclass Otavio Salvador
2017-09-05 2:04 ` ✗ patchtest: failure for " Patchwork
2017-09-05 2:08 ` Otavio Salvador
2017-09-07 16:21 ` [PATCH] " Burton, Ross
2017-09-08 13:12 ` Otavio Salvador
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox