diff options
author | Felix Fietkau <nbd@openwrt.org> | 2006-11-27 04:25:34 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2006-11-27 04:25:34 +0000 |
commit | 387570cc06ab3aca5824f1856b50a5e3ae5c2dc7 (patch) | |
tree | e6fb09b1dc1a0712bb7de1a20fab3a19853fd099 /include | |
parent | a1ac6d1d9f89278cbd65cbb4b46481e63a29159a (diff) | |
download | upstream-387570cc06ab3aca5824f1856b50a5e3ae5c2dc7.tar.gz upstream-387570cc06ab3aca5824f1856b50a5e3ae5c2dc7.tar.bz2 upstream-387570cc06ab3aca5824f1856b50a5e3ae5c2dc7.zip |
trap chmod errors in tar unpack on bsd - modes like 02755 fail
SVN-Revision: 5656
Diffstat (limited to 'include')
-rw-r--r-- | include/shell.sh | 15 | ||||
-rw-r--r-- | include/unpack.mk | 5 |
2 files changed, 19 insertions, 1 deletions
diff --git a/include/shell.sh b/include/shell.sh index 6ee0cf6030..1e60692b97 100644 --- a/include/shell.sh +++ b/include/shell.sh @@ -13,3 +13,18 @@ isset() { eval "var=\"\${$1}\"" [ -n "$var" ] } + +trapret() {( + local retvals="$1"; shift + local cmd="$1"; shift + for retval in $(echo $retvals); do + local trap_$retval=1 + done + "$cmd" "$@" || { + local retval="$?" + eval "trapped=\${trap_$retval}" + [ -n "$trapped" ] || { + return $retval + } + } +)} diff --git a/include/unpack.mk b/include/unpack.mk index e56f624152..051846bd2f 100644 --- a/include/unpack.mk +++ b/include/unpack.mk @@ -1,9 +1,12 @@ ifeq ($(strip $(PKG_UNPACK)),) + ifneq ($(HOST_OS),Linux) + TAR := trapret 2 $(PKG_UNPACK) $(TAR) + endif ifneq ($(strip $(PKG_CAT)),) # use existing PKG_CAT PKG_UNPACK:=$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | $(TAR) -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) ifeq ($(PKG_CAT),unzip) - PKG_UNPACK=unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) + PKG_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) |