Skip to contentSkip to conversation

Two fixes and some changes for linux-dtb.inc

PATCH In review Stefan Christ 3 participants 15 messages Oct 19, 2015 – Oct 26, 2015

lore
Share & tools
lore
#0 lore raw

cover Two fixes and some changes for linux-dtb.inc

Hi,

here are two small fixes for linux-dtb.inc and five refactoring patches. The fixes come first so they can be applied seperatly.

Mit freundlichen Grüßen / Kind regards,
Stefan Christ

Stefan Christ (7):
linux-dtb.inc: fix detection of ending '.dts' linux-dtb.inc: fix file ending detection linux-dtb.inc: remove unneeded 'cd'
linux-dtb.inc: use same variable name DTB for all elements of
KERNEL_DEVICETREE
linux-dtb.inc: explicit test for empty string not needed linux-dtb.inc: refactor common code to function normalize_dtb linux-dtb.inc: refactor common code to function
get_real_dtb_path_in_kernel

 meta/recipes-kernel/linux/linux-dtb.inc | 91 ++++++++++++++++-----------------
 1 file changed, 43 insertions(+), 48 deletions(-)
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/7 linux-dtb.inc: fix detection of ending '.dts'

Device tree files ending with ".dts" are not recognized correctly because of unnecessary front slashes.

---
 meta/recipes-kernel/linux/linux-dtb.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +3 -3
index ee3a5e1..db2afb8 100644
@@ -8,7 +8,7 @@ python __anonymous () {
 do_compile_append() {
 	if test -n "${KERNEL_DEVICETREE}"; then
 		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo ${DTB} | grep -q '/dts/'; then
+			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
@@ -20,7 +20,7 @@ do_compile_append() {
 do_install_append() {
 	if test -n "${KERNEL_DEVICETREE}"; then
 		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo ${DTB} | grep -q '/dts/'; then
+			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
@@ -38,7 +38,7 @@ do_install_append() {
 do_deploy_append() {
 	if test -n "${KERNEL_DEVICETREE}"; then
 		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo ${DTB} | grep -q '/dts/'; then
+			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
Signature · 1 line
1.9.1
#2 lore raw

Re: [PATCH 1/7] linux-dtb.inc: fix detection of ending '.dts'

Quoted 14 lines · Stefan Christ

Device tree files ending with ".dts" are not recognized correctly because of unnecessary front slashes.

---
 meta/recipes-kernel/linux/linux-dtb.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +0 -0
index ee3a5e1..db2afb8 100644

meta/recipes-kernel/linux/linux-dtb.inc python __anonymous () { · line 11

Quoted 5 lines
meta/recipes-kernel/linux/linux-dtb.inc +1 -1
@@ -8,7 +8,7 @@ python __anonymous () {
 do_compile_append() {
        if test -n "${KERNEL_DEVICETREE}"; then
                for DTB in ${KERNEL_DEVICETREE}; do
-                       if echo ${DTB} | grep -q '/dts/'; then
+                       if echo ${DTB} | grep -q 'dts'; then

My understanding is that the '/dts/' was here to catch 'boot/dts/' in order to detect the absolute path name, not the trailing '.dts'. In which case this patch might not be appropriate.

#3 lore raw

Re: [PATCH 1/7] linux-dtb.inc: fix detection of ending '.dts'

Hi,

Quoted 10 lines · Nicolas Dechesne
Quoted 9 lines · Stefan Christ

Device tree files ending with ".dts" are not recognized correctly because of unnecessary front slashes.

---
 meta/recipes-kernel/linux/linux-dtb.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
Quoted 16 lines

meta/recipes-kernel/linux/linux-dtb.inc python __anonymous () { · line 11

Quoted 10 lines
meta/recipes-kernel/linux/linux-dtb.inc +1 -1
index ee3a5e1..db2afb8 100644
@@ -8,7 +8,7 @@ python __anonymous () {
 do_compile_append() {
        if test -n "${KERNEL_DEVICETREE}"; then
                for DTB in ${KERNEL_DEVICETREE}; do
-                       if echo ${DTB} | grep -q '/dts/'; then
+                       if echo ${DTB} | grep -q 'dts'; then

My understanding is that the '/dts/' was here to catch 'boot/dts/' in order to detect the absolute path name, not the trailing '.dts'. In which case this patch might not be appropriate.

Hmm, the meaning of the code seems to be non obvious. I just looked at sed replacement and concluded that it's about the file name ending.

Using the full path to the dtb file is not supported by the code anyway, e.g.

   DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"

would be wrong.

So the correct solution would check both cases

- full path or only filename and
- ending is dts or dtb

Correct?

Mit freundlichen Grüßen / Kind regards,
Stefan Christ

#4 lore raw

Re: [PATCH 1/7] linux-dtb.inc: fix detection of ending '.dts'

Quoted 7 lines · Stefan Christ

Hmm, the meaning of the code seems to be non obvious. I just looked at sed replacement and concluded that it's about the file name ending.

Using the full path to the dtb file is not supported by the code anyway, e.g.

   DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
Quoted 8 lines

would be wrong.

So the correct solution would check both cases

- full path or only filename and
- ending is dts or dtb

Correct?

If you look at the commit that introduced this code, e.g. 72980d5b, you can see that this code was added to support the 'legacy' case which was the absolute path of the .dts file, or the new case which is the .dtb file name. e.g.:

==

    ,----[ Original definition ]
    | KERNEL_DEVICETREE = "${S}/arch/arm/boot/dts/imx6q-sabresd.dts"
    `----

    Becomes:

    ,----[ New definition ]
    | KERNEL_DEVICETREE = "imx6q-sabresd.dtb"
    `----

==

so the '/dts/' was used to detect the legacy case, and print a warning in that condition.

cheers
nicolas

#5 lore raw

Re: [PATCH 1/7] linux-dtb.inc: fix detection of ending '.dts'

Hi,

Quoted 33 lines · Nicolas Dechesne
Quoted 7 lines · Stefan Christ

Hmm, the meaning of the code seems to be non obvious. I just looked at sed replacement and concluded that it's about the file name ending.

Using the full path to the dtb file is not supported by the code anyway, e.g.

   DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
Quoted 8 lines

would be wrong.

So the correct solution would check both cases

- full path or only filename and
- ending is dts or dtb

Correct?

If you look at the commit that introduced this code, e.g. 72980d5b, you can see that this code was added to support the 'legacy' case which was the absolute path of the .dts file, or the new case which is the .dtb file name. e.g.:

==

    ,----[ Original definition ]
    | KERNEL_DEVICETREE = "${S}/arch/arm/boot/dts/imx6q-sabresd.dts"
    `----

    Becomes:

    ,----[ New definition ]
    | KERNEL_DEVICETREE = "imx6q-sabresd.dtb"
    `----
Quoted 5 lines

==

so the '/dts/' was used to detect the legacy case, and print a warning in that condition.

Yeah. Your right. The code is correct. The line

    DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`

will strip off the directories and replaces the ending. I overlooked that somehow. So drop my 'fixes', please.

What about my rework patches? I will resend them if they are ok.

Mit freundlichen Grüßen / Kind regards,
Stefan Christ

#6 lore raw

Re: [PATCH 1/7] linux-dtb.inc: fix detection of ending '.dts'

Quoted 2 lines · Stefan Christ

What about my rework patches? I will resend them if they are ok.

i (very) quickly looked at them..
#3, #4, #5 look sane.
#6, #7, i am not sure if this is worth doing this change.. we'll see what others think about them..

#7 lore raw

Re: [PATCH 1/7] linux-dtb.inc: fix detection of ending '.dts'

Hi Stefan,

Quoted 5 lines · Nicolas Dechesne

i (very) quickly looked at them..
#3, #4, #5 look sane.
#6, #7, i am not sure if this is worth doing this change.. we'll see what others think about them..

Can you drop 1 and 2 and rebase the remaining patches? The rest of the series doesn't apply if 1 and 2 are dropped.

Ross

#8 lore raw

Re: [PATCH 1/7] linux-dtb.inc: fix detection of ending '.dts'

Hi,

Quoted 5 lines · Ross

Hi Stefan,

On 19 October 2015 at 10:46, Nicolas Dechesne <[email protected]> wrote:

Quoted 8 lines
Quoted 5 lines

i (very) quickly looked at them..
#3, #4, #5 look sane.
#6, #7, i am not sure if this is worth doing this change.. we'll see what others think about them..

Can you drop 1 and 2 and rebase the remaining patches? The rest of the series doesn't apply if 1 and 2 are dropped.

Sure. I will send a v2.

Mit freundlichen Grüßen / Kind regards,
Stefan Christ

#9 lore raw

PATCH 2/7 linux-dtb.inc: fix file ending detection

In reply to Stefan Christ

Only search for 'dts' at the end of the filename. Don't trigger the warning when the device tree name only contains 'dts'. The sed command already replaces the string 'dts' only at the end.

---
 meta/recipes-kernel/linux/linux-dtb.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +3 -3
index db2afb8..d73792a 100644
@@ -8,7 +8,7 @@ python __anonymous () {
 do_compile_append() {
 	if test -n "${KERNEL_DEVICETREE}"; then
 		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo ${DTB} | grep -q 'dts'; then
+			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
@@ -20,7 +20,7 @@ do_compile_append() {
 do_install_append() {
 	if test -n "${KERNEL_DEVICETREE}"; then
 		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo ${DTB} | grep -q 'dts'; then
+			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
@@ -38,7 +38,7 @@ do_install_append() {
 do_deploy_append() {
 	if test -n "${KERNEL_DEVICETREE}"; then
 		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo ${DTB} | grep -q 'dts'; then
+			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
Signature · 1 line
1.9.1
#10 lore raw

PATCH 3/7 linux-dtb.inc: remove unneeded 'cd'

In reply to Stefan Christ
---
 meta/recipes-kernel/linux/linux-dtb.inc | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +1 -3
index d73792a..0095155 100644
@@ -51,9 +51,7 @@ do_deploy_append() {
 			fi
 			install -d ${DEPLOYDIR}
 			install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb
-			cd ${DEPLOYDIR}
-			ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb
-			cd -
+			ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb
 		done
 	fi
 }
Signature · 1 line
1.9.1
#11 lore raw

PATCH 4/7 linux-dtb.inc: use same variable name DTB for all elements of KERNEL_DEVICETREE

In reply to Stefan Christ
---
 meta/recipes-kernel/linux/linux-dtb.inc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +4 -4
index 0095155..f44851a 100644
@@ -58,9 +58,9 @@ do_deploy_append() {
 
 pkg_postinst_kernel-devicetree () {
 	cd /${KERNEL_IMAGEDEST}
-	for DTB_FILE in ${KERNEL_DEVICETREE}
+	for DTB in ${KERNEL_DEVICETREE}
 	do
-		DTB_BASE_NAME=`basename ${DTB_FILE} | awk -F "." '{print $1}'`
+		DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`
 		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
 		update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
 	done
@@ -68,9 +68,9 @@ pkg_postinst_kernel-devicetree () {
 
 pkg_postrm_kernel-devicetree () {
 	cd /${KERNEL_IMAGEDEST}
-	for DTB_FILE in ${KERNEL_DEVICETREE}
+	for DTB in ${KERNEL_DEVICETREE}
 	do
-		DTB_BASE_NAME=`basename ${DTB_FILE} | awk -F "." '{print $1}'`
+		DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`
 		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
 		update-alternatives --remove ${DTB_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
 	done
Signature · 1 line
1.9.1
#12 lore raw

PATCH 5/7 linux-dtb.inc: explicit test for empty string not needed

In reply to Stefan Christ

The for loop already handles the case when KERNEL_DEVICETREE is empty.

---
 meta/recipes-kernel/linux/linux-dtb.inc | 78 +++++++++++++++------------------
 1 file changed, 36 insertions(+), 42 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +36 -42
index f44851a..5bfd33b 100644
@@ -6,54 +6,48 @@ python __anonymous () {
 }
 
 do_compile_append() {
-	if test -n "${KERNEL_DEVICETREE}"; then
-		for DTB in ${KERNEL_DEVICETREE}; do
-			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
-			oe_runmake ${DTB}
-		done
-	fi
+	for DTB in ${KERNEL_DEVICETREE}; do
+		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
+		oe_runmake ${DTB}
+	done
 }
 
 do_install_append() {
-	if test -n "${KERNEL_DEVICETREE}"; then
-		for DTB in ${KERNEL_DEVICETREE}; do
-			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
-			DTB_BASE_NAME=`basename ${DTB} .dtb`
-			DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
-			DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
-			if [ ! -e "${DTB_PATH}" ]; then
-				DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
-			fi
-			install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb
-		done
-	fi
+	for DTB in ${KERNEL_DEVICETREE}; do
+		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
+		DTB_BASE_NAME=`basename ${DTB} .dtb`
+		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+		DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
+		if [ ! -e "${DTB_PATH}" ]; then
+			DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
+		fi
+		install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb
+	done
 }
 
 do_deploy_append() {
-	if test -n "${KERNEL_DEVICETREE}"; then
-		for DTB in ${KERNEL_DEVICETREE}; do
-			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
-			DTB_BASE_NAME=`basename ${DTB} .dtb`
-			DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
-			DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
-			DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
-			if [ ! -e "${DTB_PATH}" ]; then
-				DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
-			fi
-			install -d ${DEPLOYDIR}
-			install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb
-			ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb
-		done
-	fi
+	for DTB in ${KERNEL_DEVICETREE}; do
+		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
+		DTB_BASE_NAME=`basename ${DTB} .dtb`
+		DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+		DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
+		if [ ! -e "${DTB_PATH}" ]; then
+			DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
+		fi
+		install -d ${DEPLOYDIR}
+		install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb
+		ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb
+	done
 }
 
 pkg_postinst_kernel-devicetree () {
Signature · 1 line
1.9.1
#13 lore raw

PATCH 6/7 linux-dtb.inc: refactor common code to function normalize_dtb

In reply to Stefan Christ
---
 meta/recipes-kernel/linux/linux-dtb.inc | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +12 -12
index 5bfd33b..658a32f 100644
@@ -5,22 +5,25 @@ 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}"
+}
+
 do_compile_append() {
 	for DTB in ${KERNEL_DEVICETREE}; do
-		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
+		DTB=`normalize_dtb "${DTB}"`
 		oe_runmake ${DTB}
 	done
 }
 
 do_install_append() {
 	for DTB in ${KERNEL_DEVICETREE}; do
-		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
+		DTB=`normalize_dtb "${DTB}"`
 		DTB_BASE_NAME=`basename ${DTB} .dtb`
 		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
 		DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
@@ -33,10 +36,7 @@ do_install_append() {
 
 do_deploy_append() {
 	for DTB in ${KERNEL_DEVICETREE}; do
-		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
+		DTB=`normalize_dtb "${DTB}"`
 		DTB_BASE_NAME=`basename ${DTB} .dtb`
 		DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
 		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
Signature · 1 line
1.9.1
#14 lore raw

PATCH 7/7 linux-dtb.inc: refactor common code to function get_real_dtb_path_in_kernel

In reply to Stefan Christ
---
 meta/recipes-kernel/linux/linux-dtb.inc | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
meta/recipes-kernel/linux/linux-dtb.inc +11 -8
index 658a32f..beacdff 100644
@@ -14,6 +14,15 @@ normalize_dtb () {
 	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}"`
@@ -26,10 +35,7 @@ do_install_append() {
 		DTB=`normalize_dtb "${DTB}"`
 		DTB_BASE_NAME=`basename ${DTB} .dtb`
 		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
-		DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
-		if [ ! -e "${DTB_PATH}" ]; then
-			DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
-		fi
+		DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
 		install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb
 	done
 }
@@ -40,10 +46,7 @@ do_deploy_append() {
 		DTB_BASE_NAME=`basename ${DTB} .dtb`
 		DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
 		DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
-		DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
-		if [ ! -e "${DTB_PATH}" ]; then
-			DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
-		fi
+		DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
 		install -d ${DEPLOYDIR}
 		install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb
 		ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb
Signature · 1 line
1.9.1