diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-11-27 04:25:34 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-11-27 04:25:34 +0000 | 
| commit | 97c8cb1b64a660538b7ef6cf5a9b98f904a8bccc (patch) | |
| tree | feba8f12ecf70a0ebc7f38cb26cdcb0c2b49b6ec | |
| parent | bfcaec7ec83ccd7ce75cb001ef899de22745aa05 (diff) | |
trap chmod errors in tar unpack on bsd - modes like 02755 fail
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5656 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -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 6ee0cf603..1e60692b9 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 e56f62415..051846bd2 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)  | 
