Guest User

busybox awk crashing

a guest
Jun 28th, 2012
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.17 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. packages() {
  4.     awk -f - -- "$@" << EOF
  5. BEGIN       { FS = ": " }
  6. /^Package:/ { pkg = \$2 }
  7. /^Version:/ { version = \$2 }
  8. /^\$/       { print(pkg, version) }
  9. EOF
  10. }
  11.  
  12. CSSU_LISTS="/var/lib/apt/lists/repository.maemo.org_community_*_Packages /var/lib/apt/lists/repository.maemo.org_community-testing_*_Packages /var/lib/apt/lists/maemo.merlin1991.at_cssu_community-devel_*_Packages /var/lib/apt/lists/maemo.merlin1991.at_cssu_community-thumb_*_Packages"
  13.  
  14. rm -f /var/tmp/cssu-packages
  15. touch /var/tmp/cssu-packages
  16. rm -f /var/tmp/cssu-lists
  17. touch /var/tmp/cssu-lists
  18. for file in $CSSU_LISTS; do
  19.     if ! test -f $file; then continue; fi
  20.     echo $file >> /var/tmp/cssu-lists
  21.     sed -n 's/Package: //p' $file >> /var/tmp/cssu-packages
  22. done
  23. sort -u /var/tmp/cssu-packages > /var/tmp/cssu-packages.new
  24. mv /var/tmp/cssu-packages.new /var/tmp/cssu-packages
  25.  
  26. rm -f /var/tmp/version-packages
  27. touch /var/tmp/version-packages
  28. for file in /var/lib/apt/lists/*_Packages; do
  29.     if ! test -f $file; then continue; fi
  30.     if grep -q "^$file\$" /var/tmp/cssu-lists; then continue; fi
  31.     packages $file >> /var/tmp/version-packages
  32. done
  33. sort -u /var/tmp/version-packages > /var/tmp/version-packages.new
  34. mv /var/tmp/version-packages.new /var/tmp/version-packages
  35.  
  36. rm -f /var/tmp/install-packages
  37. touch /var/tmp/install-packages
  38. rm -f /var/tmp/remove-packages
  39. touch /var/tmp/remove-packages
  40. while read package; do
  41.     max=0
  42.     for version in $(grep "^$package " /var/tmp/version-packages | sed 's/.* //'); do
  43.         if dpkg --compare-versions $max lt $version 1>/dev/null 2>&1; then
  44.             max=$version
  45.         fi
  46.     done
  47.     if test "$max" = "0"; then
  48.         echo "$package" >> /var/tmp/remove-packages
  49.     else
  50.         echo "$package=$max" >> /var/tmp/install-packages
  51.     fi
  52. done < /var/tmp/cssu-packages
  53.  
  54. echo "Remove packages:"
  55. cat /var/tmp/remove-packages
  56. echo
  57.  
  58. echo "Install packages:"
  59. cat /var/tmp/install-packages
  60. echo
  61.  
  62. echo "Remove metapackage:"
  63. echo "mp-fremantle-community-pr"
  64. echo
  65.  
  66. meta=mp-fremantle-generic-pr
  67. for num in 002 003 004 203 204 205 206 207 208 210; do
  68.     if dpkg -l "*-$num" 2>/dev/null | grep -q "^ii"; then
  69.         meta=mp-fremantle-$num-pr
  70.         break
  71.     fi
  72. done
  73.  
  74. echo "Install metapackage:"
  75. echo $meta
  76. echo
Advertisement
Add Comment
Please, Sign In to add comment