build: ipkg-remove: fix source name / package confusion, optimize
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run

The script always gets passed the package name, not the source name.
Optimize for the default case where the package name matches the
filename prefix.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 471fd0a502)
This commit is contained in:
Felix Fietkau 2025-07-15 15:26:16 +02:00
parent 37233122a7
commit 787072906d

View file

@ -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