s243a

pkg-md5-sums (draft)

Dec 23rd, 2020 (edited)
850
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.44 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. directories=( "/var/packages/" "/var/packages/builtin_files" "/var/lib/dpkg" )
  4. outfile=../data-generators/pkg_md5_sums
  5. CWD="$PWD"
  6.  
  7. RP_FN="`which realpath`"
  8. function realpath(){
  9.     case "$RP_TARGET" in
  10.     *busybox*)
  11.       if [ "$1" = -m ]; then
  12.         shift
  13.         A_PATH=$1
  14.         A_PATH=$(echo "$A_path" | sed 's#^./#'"$CWD"'#g' )
  15.         A_PATH=$(echo "$A_path" | sed 's#^../#'"$CWD"'#g' ) && A_PATH=$(dirname $A_PATH)
  16.         echo "Warning simulating '-m' option since xzit isn't supported by busybox" >2
  17.         echo "A_PATH=$A_PATH" >2
  18.         if [ -f  "$A_PATH" ] || [ -d  "$A_PATH" ]; then
  19.           $RP_FN "$@"
  20.         else
  21.           echo "$A_PATH"
  22.         fi
  23.       else
  24.         $RP_FN "$@"
  25.       fi
  26.       ;;
  27.     *)
  28.       $RP_FN "$@"
  29.       ;;
  30.     esac
  31. }
  32. export -f realpath
  33. outfile=$(realpath -m "$outfile")
  34.  
  35. AWK_fn='
  36. /^Package:/     { sub(/^Package: /,"");  PKG=$0; }
  37. /^Version:/     { sub(/^Version: /,"");  PKGVER=$0; }
  38. /^Filename:/    { sub(/^Filename: /,""); PKGPATH=$0; sub(/.*\//,""); PKGFILE=$0; }
  39.  
  40.  
  41. /^$/            { print PKG "|" PKGVER "|" PKGFILE "|" "dpkg";
  42.                  PKG=""; PKGVER=""; PKGFILE=""; PKGPATH=""; PKGPRIO=""; PKGSECTION=""; PKGMD5="";  PKGDEP=""; }
  43. '
  44.    
  45.  
  46. [ -f "outfile" ] && rm "$outfile"
  47. touch "$outfile"
  48. [ -f "outfile"_md5 ] && rm "$outfile"_md5
  49. touch "$outfile"_md5
  50. [ -f "outfile"_db ] && rm "$outfile"_db
  51. touch "$outfile"_db
  52.  
  53. for a_dir in "${directories[@]}"; do
  54.   bname="$(basename "$a_dir")"
  55.   case "$bname" in
  56.   packages)
  57.     md5sum "$a_dir" | sed -r '/glibc .*/ {s#(glibc6) (.*)#libc6 \2#;n}; /.*/ {s#([^[:blank:]]*)(\.files) (.*)#\1 \1\2 \3#g'| tr ' ' '|' \
  58.          | sed -r 's#$#|'"$bname"'#g' | sort >> "$outfile"_md5
  59.     #f2=pkg(?version), f3=version, f8=filename
  60.     cut -f2,3,8 -d' ' --output-delimiter="|" "a_dir"/user-installed-packages | sed -r 's#^(.*\|)([^|]+\|)(.[a-z]+\|)(.*$)#\2\1\2\3\4#g' | sort >> "$outfile"_db
  61.     join -j 1 "$out_file"_md5 >> "$out_file"
  62.     ;;
  63.   builtin_files)
  64.     md5sum "$a_dir" | sed -r '/glibc .*/ {s#(glibc6) (.*)#libc6 \2#;n}; /.*/ {s#([^[:blank:]]*) (.*)#\1 \1\2#g'| tr ' ' '|' \
  65.         sed -r 's#$#|'"$bname"'#g' -e | sort >> "$out_file"_md5
  66.     cut -f2,3,8 -d' ' --output-delimiter="|" "a_dir"/user-installed-packages | sort >> "$out_file"_packages_db
  67.     join -j 1 "$out_file"_packages >> "$out_file"
  68.     ;;    
  69.   #dpkg)
  70.   #  md5sum "$a_dir" | sed -r 's#$#|'"$bname"'#g' | sort > "$out_file"_dpkg
  71.   #  ;;      
  72.   esac
  73. done
  74.  
Add Comment
Please, Sign In to add comment