Skip to contentSkip to conversation

Add dtc (device tree compiler) as host tool

PATCH Superseded Thomas De Schampheleire 5 participants 11 messages Mar 23, 2012 – Mar 26, 2012

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

The dtc is taken from the Linux kernel sources and simply copied to the host directory.
Having dtc as a separate host tool can be useful for users that have a custom boot scenario where the device tree is not embedded in the kernel.

---
v2: remove old parameters to GENTARGETS call, sorry.
v3: rename Config.in.host and depend on Linux (comments Arnout)

 package/Config.in.host     |   1 +
 package/dtc/Config.in.host |   8 ++++++++
 package/dtc/dtc.mk         |  14 ++++++++++++++
 3 files changed, 23 insertions(+), 0 deletions(-)
package/Config.in.host +1 -0
@@ -1,5 +1,6 @@
 menu "Host utilities"
 
+source "package/dtc/Config.in.host"
 source "package/lpc3250loader/Config.in.host"
 source "package/openocd/Config.in.host"
 source "package/sam-ba/Config.in.host"
package/dtc/Config.in.host new file +8 -0
new file mode 100644
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_HOST_DTC
+	bool "Device Tree Compiler (dtc)"
+	depends on BR2_LINUX_KERNEL
+	help
+	  Device Tree Compiler for flattened-device trees.
+
+comment "The dtc device tree compiler depends on the Linux kernel sources."
+    depends on !BR2_LINUX_KERNEL
package/dtc/dtc.mk new file +14 -0
new file mode 100644
@@ -0,0 +1,14 @@
+#############################################################
+#
+# dtc
+#
+#############################################################
+
+HOST_DTC_SOURCE =
+HOST_DTC_DEPENDENCIES = linux
+
+define HOST_DTC_INSTALL_CMDS
+    $(INSTALL) -D -m 0755 $(LINUX_DIR)/scripts/dtc/dtc $(HOST_DIR)/usr/bin/dtc
+endef
+
+$(eval $(call GENTARGETS,host))
#1 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Le Fri, 23 Mar 2012 15:37:34 +0100,
Thomas De Schampheleire <[email protected]> a ?crit :

package/dtc/dtc.mk line 12

Quoted 6 lines
package/dtc/dtc.mk new file +6 -0
+HOST_DTC_SOURCE =
+HOST_DTC_DEPENDENCIES = linux
+
+define HOST_DTC_INSTALL_CMDS
+    $(INSTALL) -D -m 0755 $(LINUX_DIR)/scripts/dtc/dtc $(HOST_DIR)/usr/bin/dtc
+endef

The problem is that this DTC binary is only built if CONFIG_DTC is selected in the kernel configuration. So if the selected kernel does not have this option enabled, the installation step of this package is going to fail.

I am not sure what to do here. Just let the user figure this out? Check the kernel .config to see if CONFIG_DTC is enabled, and if it isn't while this package is selected, error out with a nice explanation for the user? Simply ignore the installation if the dtc binary was not built?

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#2 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Quoted 15 lines · Thomas Petazzoni

Le Fri, 23 Mar 2012 15:37:34 +0100,
Thomas De Schampheleire <[email protected]> a ?crit :

package/dtc/dtc.mk line 12

Quoted 6 lines
package/dtc/dtc.mk new file +6 -0
+HOST_DTC_SOURCE =
+HOST_DTC_DEPENDENCIES = linux
+
+define HOST_DTC_INSTALL_CMDS
+ ? ?$(INSTALL) -D -m 0755 $(LINUX_DIR)/scripts/dtc/dtc $(HOST_DIR)/usr/bin/dtc
+endef

The problem is that this DTC binary is only built if CONFIG_DTC is selected in the kernel configuration. So if the selected kernel does not have this option enabled, the installation step of this package is going to fail.

Quoted 5 lines

I am not sure what to do here. Just let the user figure this out? Check the kernel .config to see if CONFIG_DTC is enabled, and if it isn't while this package is selected, error out with a nice explanation for the user? Simply ignore the installation if the dtc binary was not built?

I hadn't though about this case.
One could question whether it is a valid case that someone selects dtc in buildroot but not in the kernel.

Probably the nicest way is to not use dtc from the linux kernel sources but download the dtc sources explicitly. I thought this was a bit overkill, and I'm not sure if there can be inconsistencies between these sources and the kernel ones.

Best regards,
Thomas

#3 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Le Fri, 23 Mar 2012 16:01:16 +0100,
Thomas De Schampheleire <[email protected]> a ?crit :

Quoted 8 lines

I hadn't though about this case.
One could question whether it is a valid case that someone selects dtc in buildroot but not in the kernel.

Probably the nicest way is to not use dtc from the linux kernel sources but download the dtc sources explicitly. I thought this was a bit overkill, and I'm not sure if there can be inconsistencies between these sources and the kernel ones.

I have no strong opinion here. You can just keep what you've done and:

* Add an explanation in the help text about this fact

* Add something like the following to your installation code:

if ! grep -q ^CONFIG_DTC=y $(LINUX_DIR)/.config ; then
echo "Cannot install the Device Tree Compiler since you have not enabled CONFIG_DTC=y in your kernel configuration. Aborting".
exit 1
fi

Regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#4 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

In reply to Thomas Petazzoni
Quoted 15 lines · Thomas Petazzoni

Le Fri, 23 Mar 2012 15:37:34 +0100,
Thomas De Schampheleire <[email protected]> a ?crit :

package/dtc/dtc.mk line 12

Quoted 6 lines
package/dtc/dtc.mk new file +6 -0
+HOST_DTC_SOURCE =
+HOST_DTC_DEPENDENCIES = linux
+
+define HOST_DTC_INSTALL_CMDS
+    $(INSTALL) -D -m 0755 $(LINUX_DIR)/scripts/dtc/dtc $(HOST_DIR)/usr/bin/dtc
+endef

The problem is that this DTC binary is only built if CONFIG_DTC is selected in the kernel configuration. So if the selected kernel does not have this option enabled, the installation step of this package is going to fail.

Quoted 5 lines

I am not sure what to do here. Just let the user figure this out? Check the kernel .config to see if CONFIG_DTC is enabled, and if it isn't while this package is selected, error out with a nice explanation for the user? Simply ignore the installation if the dtc binary was not built?

dtc is always provuded with the kernel so why do you need it?

Best Regards,
J.

#5 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Le Fri, 23 Mar 2012 16:05:18 +0100,
Jean-Christophe PLAGNIOL-VILLARD <[email protected]> a ?crit :

Quoted 1 line

dtc is always provuded with the kernel so why do you need it?

The sources are always available, but it is *built* only if CONFIG_DTC is selected. So unconditionally installing scripts/dtc/dtc will not work if the kernel was configured !CONFIG_DTC.

Regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#6 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Quoted 8 lines · Thomas Petazzoni

Le Fri, 23 Mar 2012 16:05:18 +0100,
Jean-Christophe PLAGNIOL-VILLARD <[email protected]> a ?crit :

Quoted 1 line

dtc is always provuded with the kernel so why do you need it?

The sources are always available, but it is *built* only if CONFIG_DTC is selected. So unconditionally installing scripts/dtc/dtc will not work if the kernel was configured !CONFIG_DTC.

but the source is up-to-date for the kernel you use

we get this discussion on the kernel we do only expect the dtc that is provided byt the kernel that you compile to be used. If you use other verison we do not garanty it will work.

Best Regards,
J.

#7 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Le Fri, 23 Mar 2012 16:37:27 +0100,
Jean-Christophe PLAGNIOL-VILLARD <[email protected]> a ?crit :

Quoted 5 lines

but the source is up-to-date for the kernel you use

we get this discussion on the kernel we do only expect the dtc that is provided byt the kernel that you compile to be used. If you use other verison we do not garanty it will work.

Ok, that's good to know, thanks!

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#8 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Quoted 10 lines · Thomas Petazzoni

Le Fri, 23 Mar 2012 16:37:27 +0100,
Jean-Christophe PLAGNIOL-VILLARD <[email protected]> a ?crit :

Quoted 5 lines

but the source is up-to-date for the kernel you use

we get this discussion on the kernel we do only expect the dtc that is provided byt the kernel that you compile to be used. If you use other verison we do not garanty it will work.

Ok, that's good to know, thanks!

Why not move this into the linux.mk package?
If the user has selected DTC support, just copy from the built kernel.

#9 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Quoted 7 lines · Alexandre Pereira da Silva
Quoted 5 lines · Thomas Petazzoni

Le Fri, 23 Mar 2012 16:37:27 +0100,
Jean-Christophe PLAGNIOL-VILLARD <[email protected]> a ?crit :

Quoted 2 lines

but the source is up-to-date for the kernel you use

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines

we get this discussion on the kernel we do only expect the dtc that is provided byt the kernel that you compile to be used. If you use other verison we do not garanty it will work.

Ok, that's good to know, thanks!

Why not move this into the linux.mk package?
If the user has selected DTC support, just copy from the built kernel.

This sounds like a fine proposal to me...
Does anyone have objections against it?

Thanks,
Thomas

#10 lore raw

PATCH v3 1/1 Add dtc (device tree compiler) as host tool

Quoted 5 lines · On Monday 26 March 2012 09:15:49 Thomas De Schampheleire wrote:
Quoted 2 lines

Why not move this into the linux.mk package?
If the user has selected DTC support, just copy from the built kernel.

This sounds like a fine proposal to me...
Does anyone have objections against it?

Sounds good to me!

Regards,
Arnout

Signature · 9 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20120326/bac3832a/attachment.html>