summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/host-build.mk8
-rw-r--r--include/host.mk3
-rw-r--r--include/package.mk8
-rw-r--r--include/unpack.mk15
4 files changed, 22 insertions, 12 deletions
diff --git a/include/host-build.mk b/include/host-build.mk
index a1287da47..858eee531 100644
--- a/include/host-build.mk
+++ b/include/host-build.mk
@@ -6,13 +6,9 @@
#
include $(INCLUDE_DIR)/host.mk
+include $(INCLUDE_DIR)/unpack.mk
-ifneq ($(strip $(PKG_CAT)),)
- ifeq ($(PKG_CAT),unzip)
- UNPACK=unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE)
- else
- UNPACK=$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) -
- endif
+ifneq ($(strip $(UNPACK)),)
define Build/Prepare/Default
$(UNPACK)
@if [ -d ./patches ]; then \
diff --git a/include/host.mk b/include/host.mk
index 11522184b..6c0dcd669 100644
--- a/include/host.mk
+++ b/include/host.mk
@@ -28,5 +28,8 @@ $(TOPDIR)/.host.mk: $(INCLUDE_DIR)/host.mk
if $$TAR --version 2>&1 | grep 'GNU' >/dev/null; then \
echo "TAR_WILDCARDS:=--wildcards" >> $@; \
fi; \
+ ZCAT=`which gzcat`; \
+ [ -n "$$ZCAT" -a -x "$$ZCAT" ] || ZCAT=`which zcat`; \
+ echo "ZCAT:=$$ZCAT" >> $@; \
)
diff --git a/include/package.mk b/include/package.mk
index 5a9ba861a..fc1b7802f 100644
--- a/include/package.mk
+++ b/include/package.mk
@@ -12,6 +12,7 @@ endif
include $(INCLUDE_DIR)/prereq.mk
include $(INCLUDE_DIR)/host.mk
+include $(INCLUDE_DIR)/unpack.mk
define shvar
V_$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
@@ -269,12 +270,7 @@ define BuildPackage
endif
endef
-ifneq ($(strip $(PKG_CAT)),)
- ifeq ($(PKG_CAT),unzip)
- UNPACK=unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE)
- else
- UNPACK=$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) -
- endif
+ifneq ($(strip $(PKG_UNPACK)),)
define Build/Prepare/Default
$(UNPACK)
@if [ -d ./patches ]; then \
diff --git a/include/unpack.mk b/include/unpack.mk
new file mode 100644
index 000000000..6449981c1
--- /dev/null
+++ b/include/unpack.mk
@@ -0,0 +1,15 @@
+ifeq ($(strip $(PKG_UNPACK)),)
+ ifneq ($(strip $(PKG_CAT)),)
+ # use existing PKG_CAT
+ UNPACK:=$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) -
+ ifeq ($(PKG_CAT),unzip)
+ UNPACK=unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE)
+ endif
+ # replace zcat with $(ZCAT), because some system have it as gzcat
+ ifeq ($(PKG_CAT),zcat)
+ UNPACK:=$(ZCAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) -
+ endif
+ else
+ # try to autodetect file type
+ endif
+endif