From fd10b42ab8db0cd5d2f3c9076d54244c6e0e60a8 Mon Sep 17 00:00:00 2001 From: Thomas De Schampheleire Date: Wed, 8 Feb 2012 17:22:20 +0100 Subject: dependencies: build a host-tar if no suitable tar can be found Some toolchains, like the one built with buildroot itself, use hardlinks (for example to link between the c++ and g++ binary). Unpacking such a toolchain with the --strip-components options does not work correctly if the system tar is too old (<1.17). Even recent releases of RedHat/CentOS still ship with tar 1.15. This patch checks for a suitable tar version (tar 1.17+) on the host system, and adds host-tar to the host dependencies if none can be found. host-tar is download and extracted as cpio.gz instead of tar.gz, to prevent chicken-egg problem. Signed-off-by: Thomas De Schampheleire v4 Acked-by: Arnout Vandecappelle (Essensium/Mind) Signed-off-by: Peter Korsgaard --- package/tar/tar.mk | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'package/tar') diff --git a/package/tar/tar.mk b/package/tar/tar.mk index edbd9bdc7..9e856b53f 100644 --- a/package/tar/tar.mk +++ b/package/tar/tar.mk @@ -10,6 +10,19 @@ TAR_SITE = $(BR2_GNU_MIRROR)/tar # Prefer full-blown tar over buybox's version ifeq ($(BR2_PACKAGE_BUSYBOX),y) TAR_DEPENDENCIES += busybox +HOST_TAR_DEPENDENCIES = endif $(eval $(call AUTOTARGETS)) + +# host-tar: use cpio.gz instead of tar.gz to prevent chicken-egg problem +# of needing tar to build tar. +HOST_TAR_SOURCE = tar-$(TAR_VERSION).cpio.gz +define HOST_TAR_EXTRACT_CMDS + mkdir -p $(@D) + cd $(@D) && \ + $(INFLATE.gz) $(DL_DIR)/$(HOST_TAR_SOURCE) | cpio -i + mv $(@D)/tar-$(TAR_VERSION)/* $(@D) + rmdir $(@D)/tar-$(TAR_VERSION) +endef +$(eval $(call AUTOTARGETS,host)) -- cgit v1.2.3