trap chmod errors in tar unpack on bsd - modes like 02755 fail
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 27 Nov 2006 04:25:34 +0000 (04:25 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 27 Nov 2006 04:25:34 +0000 (04:25 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5656 3c298f89-4303-0410-b956-a3cf2f4a3e73

include/shell.sh
include/unpack.mk

index 6ee0cf6030ac5e0a71d7be1c2438c58ee9724caf..1e60692b97fffcc1864146345da6b761cbe6c3f7 100644 (file)
@@ -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
+               }
+       }
+)}
index e56f62415206d313b075b170b2fc5f8b92082052..051846bd2fdee54760edee00335f9205cd953e56 100644 (file)
@@ -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)