diff options
authorThomas De Schampheleire <>2013-08-02 09:05:15 (GMT)
committerPeter Korsgaard <>2013-09-06 21:30:36 (GMT)
commitd1f325f554cab7912e9221e91aba5b8aa97b1e3c (patch)
parentf8d89f051032a8835bdb77edec518e73170006c1 (diff)
xzcat: treat as host prerequisite and build if needed
If xzcat is not present on the host system, buildroot bails out early asking the developer to install it (xzcat is now a DL_TOOLS_DEPENDENCY) Conversely, when BR2_TARGET_ROOTFS_CPIO_XZ is enabled, then host-xz is a build dependency, and no manual action is required from the developer. Because the second approach is nicer, also build host-xz when xzcat is not available, using the host-prerequisite and suitable-host-pkg mechanisms, already used for tar. Signed-off-by: Thomas De Schampheleire <> Signed-off-by: Peter Korsgaard <>
3 files changed, 25 insertions, 0 deletions
diff --git a/package/ b/package/
index 65ab8c6..00f1cb3 100644
--- a/package/
+++ b/package/
@@ -541,7 +541,11 @@ endif # SITE_METHOD
# $(firstword) is used here because the extractor can have arguments, like
# ZCAT="gzip -d -c", and to check for the dependency we only want 'gzip'.
+# Do not add xzcat to the list of required dependencies, as it gets built
+# automatically if it isn't found.
+ifneq ($(call suitable-extractor,$($(2)_SOURCE)),$(XZCAT))
DL_TOOLS_DEPENDENCIES += $(firstword $(call suitable-extractor,$($(2)_SOURCE)))
endif # $(2)_KCONFIG_VAR
endef # inner-generic-package
diff --git a/support/dependencies/ b/support/dependencies/
new file mode 100644
index 0000000..24286ef
--- /dev/null
+++ b/support/dependencies/
@@ -0,0 +1,7 @@
+# XZCAT is taken from BR2_XZCAT (defaults to 'xzcat') (see Makefile)
+# If it is not present, build our own host-xzcat
+ifeq (,$(call suitable-host-package,xzcat,$(XZCAT)))
+ XZCAT = $(HOST_DIR)/usr/bin/xzcat
diff --git a/support/dependencies/ b/support/dependencies/
new file mode 100755
index 0000000..10f1c45
--- /dev/null
+++ b/support/dependencies/
@@ -0,0 +1,14 @@
+xzcat=`which $candidate 2>/dev/null`
+if [ ! -x "$xzcat" ]; then
+ xzcat=`which xzcat 2>/dev/null`
+ if [ ! -x "$xzcat" ]; then
+ # echo nothing: no suitable xzcat found
+ exit 1
+ fi
+echo $xzcat