Explorar o código

trap chmod errors in tar unpack on bsd - modes like 02755 fail

SVN-Revision: 5656
Felix Fietkau %!s(int64=19) %!d(string=hai) anos
pai
achega
387570cc06
Modificáronse 2 ficheiros con 19 adicións e 1 borrados
  1. 15 0
      include/shell.sh
  2. 4 1
      include/unpack.mk

+ 15 - 0
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
+		}
+	}
+)}

+ 4 - 1
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)