summaryrefslogtreecommitdiff
path: root/profiles/wheezy/classes/Admin/apt/auto/functions.yml
blob: 2f1a935594d8b14e1300d3d92d982767a88d2362 (plain)
  1. parameters:
  2.   doc:
  3. admin:
  4. tweak:
  5. - define routines to resolve package dependencies
  6. tweak:
  7. - >
  8. _pkgdeps(){ set -e;\
  9. chroot /target dpkg-query \
  10. -Wf=',$''{Pre-Depends},$''{Depends},$''{Recommends}\n' $* 2>/dev/null \
  11. | sed -r \
  12. -e 's/[,|] *([a-z0-9.+-]+)?(:\s+)?( *[^|,]*)?/\1\n/g' \
  13. | sed '/^$/d'|sort -u; }
  14. - >
  15. _pkg2re(){ set -e;\
  16. echo $* \
  17. | sed -r \
  18. -e 's/\s+/\|/g;' \
  19. -e 's/^\|//;' \
  20. -e 's/([.+-])/\\\1/g;' \
  21. -e 's/\|$//'; }
  22. - >
  23. _pkgreal(){ set -e;\
  24. chroot /target dpkg-query \
  25. -Wf='$''{Package},$''{Provides},\n' \
  26. | sed -r \
  27. -e '/,,/d;' \
  28. -e 's/^([a-z0-9.+-]+).*[,|] *('"$(_pkg2re $*)"')[ :,]/\1/;' \
  29. -e '/,/d'; }
  30. - >
  31. _pkganddeepdeps(){ set -e;\
  32. rest=$*;\
  33. all=$rest;\
  34. for i in 1 2 3 4 5; do \
  35. deps=$(_pkgdeps $rest);\
  36. rest="$deps $(_pkgreal $deps)";\
  37. all="$all $rest";\
  38. done;\
  39. echo $all \
  40. | sed -r \
  41. -e 's/\s+/\n/g' \
  42. | sort -u; }
  43. - >
  44. _pkgessentials(){ set -e;\
  45. chroot /target dpkg-query \
  46. -Wf='$''{Package}%$''{Essential}\n' \
  47. | sed -r \
  48. -e 's/(.*)%yes/\1/;' \
  49. -e '/%/d'; }