summaryrefslogtreecommitdiff
path: root/package/tar
diff options
context:
space:
mode:
authorThomas De Schampheleire <patrickdepinguin+buildroot@gmail.com>2012-02-08 17:22:20 +0100
committerPeter Korsgaard <jacmet@sunsite.dk>2012-02-09 22:59:21 +0100
commitfd10b42ab8db0cd5d2f3c9076d54244c6e0e60a8 (patch)
treeb3a8b79de79bc23d14a69c401d77eb5bacee1f95 /package/tar
parent1bbf39bd733007f2bda799622147924008a5d44c (diff)
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 <thomas.de.schampheleire@gmail.com> v4 Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'package/tar')
-rw-r--r--package/tar/tar.mk13
1 files changed, 13 insertions, 0 deletions
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))