diff options
Diffstat (limited to 'upx.sh.in')
-rw-r--r-- | upx.sh.in | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/upx.sh.in b/upx.sh.in new file mode 100644 index 000000000000..cbe3c8e6dd65 --- /dev/null +++ b/upx.sh.in @@ -0,0 +1,38 @@ +#!/usr/bin/bash +# +# upx.sh - Compress package binaries with UPX +# + +[[ -n "$LIBMAKEPKG_TIDY_UPX_SH" ]] && return +LIBMAKEPKG_TIDY_UPX_SH=1 + +LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + +source "$LIBRARY/util/message.sh" +source "$LIBRARY/util/option.sh" + +packaging_options+=('upx') +tidy_modify+=('tidy_upx') + +tidy_upx() { + if check_option "upx" "y"; then + msg2 "$(gettext "Compressing binaries with %s...")" "UPX" + local binary + find . -type f -perm -u+w 2>/dev/null | while read -r binary ; do + [ $(jobs -p|wc -l) -gt $(getconf _NPROCESSORS_ONLN) ] && wait -n + case "$(file -S --brief --mime-type "$binary")" in + application/x-executable | application/x-dosexec | \ + application/x-pie-executable | application/x-sharedlib ) + { upx "${UPXFLAGS[@]}" "$binary" &>/dev/null && + info "$(gettext "Compressed binary : %s")" "${binary/$pkgdir\//}" || + warning "$(gettext "Could not compress binary : %s")" "${binary/$pkgdir\//}"; } & + ;; + #application* ) + # warning "$(gettext "Not compressing %s, $(file --brief --mime-type "$binary")")" \ + # "${binary/$pkgdir\//}" + # ;; + esac + done + wait + fi +} |