diff --git a/scripts/ipkg-remove b/scripts/ipkg-remove index f4957004c0e..19d7148e83c 100755 --- a/scripts/ipkg-remove +++ b/scripts/ipkg-remove @@ -3,17 +3,24 @@ sourcename="$1"; shift for pkg in "$@"; do - tar -Ozxf "$pkg" ./control.tar.gz 2>/dev/null | tar -Ozxf - ./control 2>/dev/null | \ - while read field value; do - if [ "$field" = "SourceName:" ] && [ "$value" = "$sourcename" ]; then - rm -vf "$pkg" - break - fi - done case "$pkg" in */"${sourcename}_"*.ipk) rm -vf "$pkg" ;; + *) + tar -Ozxf "$pkg" ./control.tar.gz 2>/dev/null | tar -Ozxf - ./control 2>/dev/null | { + packagename= + abiversion= + while read field value; do + case "$field" in + Package:) packagename="$value";; + ABIVersion:) abiversion="$value";; + esac + done + [ -n "$abiversion" ] && packagename="${packagename%%$abiversion}" + [ "$packagename" = "$sourcename" ] && rm -vf "$pkg" + } + ;; esac done