diff --git a/include/shell.sh b/include/shell.sh
index 6389304c24bdd7f798b3a71f957dbfaad9cfa3e5..8f6f6f04bb414e5dc24851d6dceefe8d282782f4 100644
--- a/include/shell.sh
+++ b/include/shell.sh
@@ -14,21 +14,6 @@ isset() {
 	[ -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
-		}
-	}
-)}
-
 md5s() {
 	cat "$@" | (
 		md5sum 2>/dev/null ||
diff --git a/include/unpack.mk b/include/unpack.mk
index 3fabf460336b711a8e413927c901c8a581a7eb46..41ff439242f548671624ec5389f71fb5d61929cf 100644
--- a/include/unpack.mk
+++ b/include/unpack.mk
@@ -5,12 +5,7 @@
 # See /LICENSE for more information.
 #
 
-# unpacking files with +s may break on some platforms. this typically emits error code 2
-ifneq ($(HOST_OS),Linux)
-  HOST_TAR:=trapret 2 $(TAR)
-else
-  HOST_TAR:=$(TAR)
-endif
+HOST_TAR:=$(TAR)
 TAR_CMD=$(HOST_TAR) -C $(1)/.. $(TAR_OPTIONS)
 UNZIP_CMD=unzip -d $(1)/.. $(DL_DIR)/$(PKG_SOURCE)