diff --git a/pkgadd b/pkgadd index 21109bc..8577277 100755 --- a/pkgadd +++ b/pkgadd @@ -340,19 +340,14 @@ done # remove old files from old package that not exist in new package if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then [ "$SILENT_INSTALL" ] || msg2 "Removing old files..." - sort -k 2 $INDEX_DIR/$name/.files > $TMP_PKGADD/$name.old - sort -k 2 $TMP_PKGINSTALL > $TMP_PKGADD/$name.new - diff -w -t -U 0 $TMP_PKGADD/$name.new $TMP_PKGADD/$name.old | \ - sed '/^@@/d' | \ - sed '/^+++/d' | \ - sed '/^---/d' | \ - grep ^+ | \ - sed 's/+//g' > $TMP_PKGADD/$name.diff - grep -v '/$' $TMP_PKGADD/$name.diff | while IFS=' ' read line; do + grep -Fxv -f $TMP_PKGINSTALL $INDEX_DIR/$name/.files > $TMP_PKGADD/$name.rmlist + grep -v '/$' $TMP_PKGADD/$name.rmlist | while IFS=' ' read line; do rm "$ROOT/$line" &>/dev/null done - grep '/$' $TMP_PKGADD/$name.diff | tac | while IFS=' ' read line; do - rmdir "$ROOT/$line" &>/dev/null + grep '/$' $TMP_PKGADD/$name.rmlist | tac | while IFS=' ' read line; do + if [ ! "$(grep -R --exclude-dir="$name" -w "$line" "$INDEX_DIR")" ]; then + rmdir "$ROOT/$line" &>/dev/null + fi done fi diff --git a/pkgbuild b/pkgbuild index c5f1603..4c0e35f 100755 --- a/pkgbuild +++ b/pkgbuild @@ -191,7 +191,11 @@ prepare_src() { if [ "$FILENAME" != "$FILE" ] && [ "$nxt" != 1 ]; then case $FILENAME in *.tar|*.tar.gz|*.tar.Z|*.tgz|*.tar.bz2|*.tbz2|*.tar.xz|*.txz|*.tar.lzma|*.zip|*.rpm) - COMMAND="tar -p -o -C $SRC -xf $SOURCE_DIR/$FILENAME" + if [ $(type -p bsdtar) ]; then + COMMAND="bsdtar -p -o -C $SRC -xf $SOURCE_DIR/$FILENAME" + else + COMMAND="tar -p -o -C $SRC -xf $SOURCE_DIR/$FILENAME" + fi MODE="Unpacking" ;; *) COMMAND="cp $SOURCE_DIR/$FILENAME $SRC"