Commit d1f325f5 authored by Thomas De Schampheleire's avatar Thomas De Schampheleire Committed by Peter Korsgaard
Browse files

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: default avatarThomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent f8d89f05
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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

endif # $(2)_KCONFIG_VAR
endef # inner-generic-package
+7 −0
Original line number Diff line number Diff line
# 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)))
  DEPENDENCIES_HOST_PREREQ += host-xz
  XZCAT = $(HOST_DIR)/usr/bin/xzcat
endif
+14 −0
Original line number Diff line number Diff line
#!/bin/sh

candidate="$1"

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
fi

echo $xzcat