ipkg-remove 1004 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env bash
  2. sourcename="$1"; shift
  3. for pkg in "$@"; do
  4. case "$pkg" in
  5. */"${sourcename}_"*.ipk|\
  6. */"${sourcename}-"[0-9]*.apk)
  7. rm -vf "$pkg"
  8. ;;
  9. *.ipk)
  10. tar -Ozxf "$pkg" ./control.tar.gz 2>/dev/null | tar -Ozxf - ./control 2>/dev/null | {
  11. packagename=
  12. abiversion=
  13. while read field value; do
  14. case "$field" in
  15. Package:) packagename="$value";;
  16. ABIVersion:) abiversion="$value";;
  17. esac
  18. done
  19. [ -n "$abiversion" ] && packagename="${packagename%%$abiversion}"
  20. [ "$packagename" = "$sourcename" ] && rm -vf "$pkg"
  21. }
  22. ;;
  23. *.apk)
  24. apk adbdump "$pkg" | grep -E '^ (name:|.*openwrt:abiversion)' | {
  25. packagename=
  26. abiversion=
  27. while read field value; do
  28. case "$field" in
  29. name:) packagename="$value";;
  30. -) abiversion="${value##*abiversion=}";;
  31. esac
  32. done
  33. [ -n "$abiversion" ] && packagename="${packagename%%$abiversion}"
  34. [ "$packagename" = "$sourcename" ] && rm -vf "$pkg"
  35. }
  36. ;;
  37. esac
  38. done
  39. exit 0