Advertisement
s243a

install_missing.sh (2)

Mar 6th, 2020
537
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 22.24 KB | None | 0 0
  1. #!/bin/bash
  2. INSTALL_MODE='Step by step installation (classic mode)'
  3. EXPORT_FNs=false #Setting this to true might provide a way of overriding the functions in the ppm gui.
  4. USE_installmodes_sh=false
  5. SKIP_installmodes_sh=false
  6.  
  7. rm /tmp/petget_proc/pkgs_to_install_s243a
  8. rm /tmp/petget_proc/pkgs_to_install
  9. #touch /root/.packages/skip_space_check
  10. echo changed > /tmp/petget_proc/mode_changed
  11. touch /tmp/petget_proc/force_install
  12. touch /root/.packages/skip_space_check
  13. touch /tmp/petget_proc/manual_pkg_download
  14.  
  15. rm /tmp/petget_proc/pkgs_to_install
  16.  
  17.  
  18. if [ ! -f /tmp/petget_proc/install_pets_quietly -a ! -f /tmp/petget_proc/download_only_pet_quietly \
  19.     -a ! -f /tmp/petget_proc/download_pets_quietly ]; then
  20.     echo ok
  21. elif [ "$PREVPKG" != "" ]; then
  22.     echo changed >> /tmp/petget_proc/mode_changed
  23. fi
  24. rm -f /tmp/petget_proc/*_pet{,s}_quietly
  25. echo "" > /tmp/petget_proc/forced_install
  26. touch /tmp/petget_proc/install_classic
  27. echo 'wizard' > /var/local/petget/ppm_mode
  28.  
  29.  
  30.  
  31.  
  32. #install_package () is taken from: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/installmodes.sh#L406
  33. install_package () {
  34.  #set -x
  35.  [ "$(cat /tmp/petget_proc/pkgs_to_install)" = "" ] && exit 0
  36.  cat /tmp/petget_proc/pkgs_to_install | tr ' ' '\n' > /tmp/petget_proc/pkgs_left_to_install
  37.  rm -f /tmp/petget_proc/overall_package_status_log
  38.  echo 0 > /tmp/petget_proc/petget/install_status_percent
  39.  echo "$(gettext "Calculating total required space...")" > /tmp/petget_proc/petget/install_status
  40.  [ ! -f /root/.packages/skip_space_check ] && check_total_size
  41.  #status_bar_func & #-----------
  42.  while IFS="|" read TREE1 REPO zz #TREE1|REPO
  43.  do
  44.    [ -z "$TREE1" ] && continue
  45.    echo "$REPO" > /tmp/petget_proc/petget/current-repo-triad
  46.    if [ -f /tmp/petget_proc/install_quietly ];then
  47.     if [  "$(grep $TREE1 /root/.packages/user-installed-packages 2>/dev/null)" = "" \
  48.      -a -f /tmp/petget_proc/install_pets_quietly ]; then
  49.      if [ "$(cat /var/local/petget/nt_category 2>/dev/null)" = "true" ]; then
  50.       /usr/local/petget/installpreview.sh
  51.      else
  52.       rxvt -title "$VTTITLE... $(gettext 'Do NOT close')" \
  53.       -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-*-* -bg black \
  54.       -fg grey -geometry 80x5+50+50 -e /usr/local/petget/installpreview.sh
  55.      fi
  56.     else
  57.      if [ "$(cat /var/local/petget/nt_category 2>/dev/null)" = "true" ]; then
  58.       /usr/local/petget/installpreview.sh
  59.      else
  60.       rxvt -title "$VTTITLE... $(gettext 'Do NOT close')" \
  61.       -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-*-* -bg black \
  62.       -fg grey -geometry 80x5+50+50 -e /usr/local/petget/installpreview.sh
  63.      fi
  64.     fi
  65.    else
  66.     /usr/local/petget/installpreview.sh
  67.     if [ $? -eq 100 ] ; then
  68.        exit
  69.     fi
  70.    fi
  71.    /usr/local/petget/finduserinstalledpkgs.sh #s243a: is this necessary?
  72.    sed -i "/$TREE1/d" /tmp/petget_proc/pkgs_left_to_install
  73.  done < /tmp/petget_proc/pkgs_to_install
  74.  sync
  75.  report_results
  76.  clean_up
  77. }
  78. [ "$EXPORT_FNs" = true ] && export -f install_package
  79.  
  80. do_install() {
  81.     # Exit if called spuriously
  82.     [ "$TREE1" = "" ] && exit 0
  83.     export ENTRY=$TREE1
  84.     pkg_info
  85.     #pkg_info="$(cat /tmp/petget_proc/pkgs_to_install | cut -d '|' -f1,4)"
  86.     #pkgs_to_install set in the pkg_info function
  87.     echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
  88.     mv /tmp/petget_proc/pkgs_to_install /tmp/petget_proc/pkgs_to_install_1_5_10_11
  89.     cat /tmp/petget_proc/pkgs_to_install_1_5_10_11 | cut -d '|' -f1,4 > /tmp/petget_proc/pkgs_to_install
  90.     echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
  91.     #-- Make sure that we have atleast one mode flag
  92.     if [ ! -f /tmp/petget_proc/install_pets_quietly \
  93.       -a ! -f /tmp/petget_proc/download_only_pet_quietly \
  94.       -a ! -f /tmp/petget_proc/download_pets_quietly \
  95.       -a ! -f /tmp/petget_proc/install_classic ] ; then
  96.         touch /tmp/petget_proc/install_classic #/tmp/petget_proc/install_pets_quietly
  97.     fi
  98.     #if [ "$(grep $TREE1 /root/.packages/user-installed-packages)" != "" ] ; then
  99.     #   . /usr/lib/gtkdialog/box_yesno "$(gettext 'Package is already installed')" "$(gettext 'This package is already installed! ')" "$(gettext 'If you want to re-install it, first remove it and then install it again. To download only or use the step-by-step classic mode, select No and then change the Auto Install to another option.')" "$(gettext 'To Abort the process now select Yes.')"
  100.     #   if [ "$EXIT" = "yes" ]; then
  101.     #       exit 0
  102.     #   else
  103.     #       echo $TREE1 > /tmp/petget_proc/forced_install
  104.     #   fi
  105.     #fi
  106.     #--
  107.     if [ "$(cat /tmp/petget_proc/forced_install 2>/dev/null)" != "" ]; then
  108.         touch /tmp/petget_proc/force_install
  109.     else
  110.         rm -f /tmp/petget_proc/force_install
  111.     fi
  112.     #cut -d"|" -f1,4 /tmp/petget_proc/pkgs_to_install > /tmp/petget_proc/pkgs_to_install_tmp
  113.     #mv -f /tmp/petget_proc/pkgs_to_install_tmp /tmp/petget_proc/pkgs_to_install
  114.     #if ! [ -f /tmp/petget_proc/force_install -a -f /tmp/petget_proc/install_pets_quietly ]; then
  115.         #/usr/local/petget/installed_size_preview.sh "$NEWPACKAGE" ADD
  116.         if [ "$USE_installmodes_sh" != false ]; then
  117.           /usr/local/petget/installmodes.sh "$INSTALL_MODE"
  118.         elif [ "$SKIP_installmodes_sh" != false ]; then
  119.           install_package #This was taken from installmodes.sh
  120.         else
  121.          
  122.          
  123.           cat /tmp/petget_proc/pkgs_to_install | tr ' ' '\n' > /tmp/petget_proc/pkgs_left_to_install
  124.           mv /tmp/petget_proc/pkgs_to_install /tmp/petget_proc/pkgs_to_install_1_5
  125.           cat /tmp/petget_proc/pkgs_to_install_1_5 | cut -d '|' -f1 > /tmp/petget_proc/pkgs_to_install
  126.           echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
  127.           set +x
  128.           export TREE1=${TREE1%%|*}      
  129.           /usr/local/petget/installpreview.sh
  130.         fi
  131. }
  132.  
  133. echo_pkg_info_fields_helper(){
  134.   [ $# -gt 0 ] && TREE1=$1
  135.   [ $# -gt 1 ] && TREE1="$TREE1|$2"
  136.   local repo_triad
  137.   local result
  138.   if [ -f /tmp/petget_proc/petget/filterpkgs.results.post ]; then
  139.     result="$(grep ^$TREE1 /tmp/petget_proc/petget/filterpkgs.results.post)"
  140.   fi
  141.   if [ -z $result ]; then
  142.     pkg=$(echo $TREE1 | cut -f1 -d '|' )
  143.     #repo_triad=$(echo $TREE1 | cut -f2 -d)
  144.     n_fields=$(echo "$TREE1" | awk -F "|" '{print NF}' | head -n 1)
  145.     if [ $n_fields -gt 1 ]; then
  146.       repo_triad=$(echo "$TREE1" | awk -F "|" '{print $NF}' | head -n 1)
  147.     elif [ -f /tmp/petget_proc/petget ]; then
  148.       repo_triad=$(cat /tmp/petget_proc/petget | head -n 1)
  149.     fi
  150.     result="$(grep -m1 ^$pkg /var/packages/Packages-$repo_triad | cut -f1,5,10,11)"
  151.   fi
  152.   echo "$result"
  153. }
  154. echo_pkg_info_fields(){
  155.     echo_pkg_info_fields_helper
  156.     #TODO maybe look at all repos specified by the ppm or fallback repos.
  157. }
  158. #Taken from: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/pkg_chooser.sh#L120
  159. # but modified to not depend on filterpkgs.results.post
  160. pkg_info() {
  161.     # Exit if called spuriously
  162.     [ "$TREE1" = "" ] && exit 0
  163.     #NEWPACKAGE="$(grep ^$TREE1 /tmp/petget_proc/petget/filterpkgs.results.post)"
  164.     pkg=$(echo $TREE1 | cut -f1 -d '|' )
  165.     export ENTRY1=$pkg #used in findnames.sh
  166.     /usr/local/petget/findnames.sh  #We can remove this if we generage filterpkgs.results.post another way. See: postfilterpkgs.sh and installpreview.sh
  167.    # rm -f /tmp/petget_proc/overall_*
  168.     #/usr/local/petget/installed_size_preview.sh "$TREE1" ADD
  169.     #installpreview.sh
  170.     repo_triad=$(echo $TREE1 | cut -f2 -d '|' )
  171.     echo "$repo_triad" > /tmp/petget_proc/petget/current-repo-triad
  172.     IFS="|" read PKG_NAME PKG_CAT PKG_DESC PKG_REPO < <(echo_pkg_info_fields  )
  173.     (
  174.         echo "Name    : $PKG_NAME"
  175.         echo "Category: $PKG_CAT"
  176.         echo "Desc    : $PKG_DESC"
  177.         echo "Repo    : $repo_triad" #$PKG_REPO
  178.     ) > /tmp/petget_proc/petget/pgk_info
  179.     echo "$PKG_NAME|$PKG_CAT|$PKG_DESC|$repo_triad" >> /tmp/petget_proc/pkgs_to_install
  180. }
  181.  
  182. #Taken from: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/installmodes.sh#L12
  183. clean_up () {
  184.  if [ "$(ls /tmp/petget_proc/*_pet{,s}_quietly /tmp/petget_proc/install_classic 2>/dev/null |wc -l)" -eq 1 ]; then
  185.   for MODE in $(ls /tmp/petget_proc/*_pet{,s}_quietly /tmp/petget_proc/install_classic)
  186.   do
  187.    mv $MODE $MODE.bak
  188.   done
  189.  fi
  190.  mv /tmp/petget_proc/install_quietly /tmp/petget_proc/install_quietly.bak
  191.  echo -n > /tmp/petget_proc/pkgs_to_install
  192.  rm -f /tmp/petget_proc/{install,remove}{,_pets}_quietly 2>/dev/null
  193.  rm -f /tmp/petget_proc/install_classic 2>/dev/null
  194.  rm -f /tmp/petget_proc/download_pets_quietly 2>/dev/null
  195.  rm -f /tmp/petget_proc/download_only_pet_quietly 2>/dev/null
  196.  rm -f /tmp/petget_proc/pkgs_left_to_install 2>/dev/null
  197.  rm -f /tmp/petget_proc/pkgs_to_install_done 2>/dev/null
  198.  rm -f /tmp/petget_proc/overall_pkg_size* 2>/dev/null
  199.  rm -f /tmp/petget_proc/overall_dependencies 2>/dev/null
  200.  rm -f /tmp/petget_proc/mode_changed 2>/dev/null
  201.  rm -f /tmp/petget_proc/force*_install 2>/dev/null
  202.  rm -f /tmp/petget_proc/pkgs_to_install_done 2>/dev/null
  203.  rm -f /tmp/petget_proc/pgks_really_installed 2>/dev/null
  204.  rm -f /tmp/petget_proc/pgks_failed_to_install 2>/dev/null
  205.  rm -f /tmp/petget_proc/overall_petget_missingpkgs_patterns.txt 2>/dev/null
  206.  rm -f /tmp/petget_proc/overall_missing_libs.txt 2>/dev/null
  207.  rm -f /tmp/petget_proc/overall_install_report 2>/dev/null
  208.  rm -f /tmp/petget_proc/pkgs_to_install_bar 2>/dev/null
  209.  rm -f /tmp/petget_proc/manual_pkg_download 2>/dev/null
  210.  rm -f /tmp/petget_proc/ppm_reporting 2>/dev/null
  211.  rm -f /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null
  212.  rm -rf /tmp/petget_proc/PPM_LOGs/ 2>/dev/null
  213.  mv $MODE.bak $MODE
  214.  mv /tmp/petget_proc/install_quietly.bak /tmp/petget_proc/install_quietly
  215. }
  216. [ "$EXPORT_FNs" = true ] && export -f clean_up
  217. report_results () {
  218.  # Info source files
  219.  touch /tmp/petget_proc/ppm_reporting # progress bar flag
  220.  /usr/local/petget/finduserinstalledpkgs.sh #make sure...
  221.  sync
  222.  rm -f /tmp/petget_proc/pgks_really_installed 2>/dev/null
  223.  rm -f /tmp/petget_proc/pgks_failed_to_install 2>/dev/null
  224.  for LINE in $(cat /tmp/petget_proc/pkgs_to_install_done  | cut -f 1 -d '|' | sort | uniq)
  225.  do
  226.   [ "$(echo $LINE)" = "" ] && continue
  227.   if [ -f /tmp/petget_proc/download_pets_quietly -o -f /tmp/petget_proc/download_only_pet_quietly \
  228.    -o -f /tmp/petget_proc/manual_pkg_download ];then
  229.    if [ -f /root/.packages/download_path ];then
  230.     . /root/.packages/download_path
  231.     DOWN_PATH="$DL_PATH"
  232.    else
  233.     DOWN_PATH=$HOME
  234.    fi
  235.    PREVINST=''
  236.    REALLY=$(ls "$DOWN_PATH" | grep $LINE)
  237.    [ "$REALLY" -a "$(grep $LINE /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null | sort | uniq )" != "" ] && \
  238.     REALLY='' && PREVINST="$(gettext 'was previously downloaded')"
  239.   else
  240.    PREVINST=''
  241.    REALLY=$(grep $LINE /tmp/petget_proc/petget/installedpkgs.results)
  242.    [ "$(grep $LINE /tmp/petget_proc/pgks_failed_to_install_forced 2>/dev/null | sort | uniq )" != "" -o \
  243.     "$(grep $LINE /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null | sort | uniq )" != "" ] \
  244.     && REALLY='' && PREVINST="$(gettext 'was already installed')"
  245.   fi
  246.   if [ "$REALLY" != "" ]; then
  247.    echo $LINE >> /tmp/petget_proc/pgks_really_installed
  248.   else
  249.    echo $LINE $PREVINST >> /tmp/petget_proc/pgks_failed_to_install
  250.   fi
  251.  done
  252.  rm -f /tmp/petget_proc/pgks_failed_to_install_forced
  253.  
  254.  [ -f /tmp/petget_proc/pgks_really_installed ] && INSTALLED_PGKS="$(</tmp/petget_proc/pgks_really_installed)" \
  255.   || INSTALLED_PGKS=''
  256.  [ -f /tmp/petget_proc/pgks_failed_to_install ] && FAILED_TO_INSTALL="$(</tmp/petget_proc/pgks_failed_to_install)" \
  257.   || FAILED_TO_INSTALL=''
  258.  #MISSING_PKGS=$(cat /tmp/petget_proc/overall_petget_missingpkgs_patterns.txt |sort|uniq )
  259.  MISSING_LIBS=$(cat /tmp/petget_proc/overall_missing_libs.txt 2>/dev/null | tr ' ' '\n' | sort | uniq )
  260.  NOT_IN_PATH_LIBS=$(cat /tmp/petget_proc/overall_missing_libs_hidden.txt 2>/dev/null | tr ' ' '\n' | sort | uniq )
  261.  cat << EOF > /tmp/petget_proc/overall_install_report
  262. Packages succesfully Installed or Downloaded
  263. $INSTALLED_PGKS
  264.  
  265. Packages that failed to be Installed or Downloaded, or were aborted be the user
  266. $FAILED_TO_INSTALL
  267.  
  268. Missing Shared Libraries
  269. $MISSING_LIBS
  270.  
  271. Existing Libraries that may be in a location other than /lib and /usr/lib
  272. $NOT_IN_PATH_LIBS
  273. EOF
  274.  
  275.  # Info window/dialogue (display and option to save "missing" info)
  276.  if [ "$MISSING_LIBS" ];then
  277.   MISSINGMSG1="<i><b>$(gettext 'These libraries are missing:')
  278. ${MISSING_LIBS}</b></i>"
  279.   LM='  <hbox space-expand="true" space-fill="true">
  280.    <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  281.      <hbox space-expand="false" space-fill="false">
  282.        <eventbox name="bg_report" space-expand="true" space-fill="true">
  283.          <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  284.            '"`/usr/lib/gtkdialog/xml_pixmap building_block.svg 32`"'
  285.            <text angle="90" wrap="false" yalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"<big><b><span color='"'#bbb'"'>'$(gettext 'Libs')'</span></b></big> "</label></text>
  286.          </vbox>
  287.        </eventbox>
  288.      </hbox>
  289.      <vbox scrollable="true" shadow-type="0" hscrollbar-policy="1" vscrollbar-policy="1" space-expand="true" space-fill="true">
  290.        <text ypad="5" xpad="5" yalign="0" xalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"'${MISSINGMSG1}'"</label></text>
  291.      </vbox>
  292.    </hbox>
  293.  </hbox>'
  294.  fi
  295.  if [ "$NOT_IN_PATH_LIBS" ];then #100830
  296.   MISSINGMSG1="<i><b>${MISSINGMSG1}</b></i>
  297.  
  298. $(gettext 'These needed libraries exist but are not in the library search path (it is assumed that a startup script in the package makes these libraries loadable by the application):')
  299. <i><b>${NOT_IN_PATH_LIBS}</b></i>"
  300.  fi
  301.  
  302.  if [ -s /tmp/petget_proc/petget-installed-pkgs-log ];then
  303.   BUTTON_TRIM="<button><input file stock=\"gtk-execute\"></input><label>$(gettext 'Trim the fat')</label><action type=\"exit\">BUTTON_TRIM_FAT</action></button>"
  304.  fi
  305.  
  306.  export REPORT_DIALOG='
  307. <window title="'$(gettext 'Package Manager')'" icon-name="gtk-about" default_height="550">
  308. <vbox>
  309.  '"`/usr/lib/gtkdialog/xml_info fixed package_add.svg 60 " " "$(gettext "Package install/download report")"`"'
  310.  <hbox space-expand="true" space-fill="true">
  311.    <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  312.      <hbox space-expand="false" space-fill="false">
  313.        <eventbox name="bg_report" space-expand="true" space-fill="true">
  314.          <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  315.            '"`/usr/lib/gtkdialog/xml_pixmap dialog-complete.svg 32`"'
  316.            <text angle="90" wrap="false" yalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"<big><b><span color='"'#15BC15'"'>'$(gettext 'Success')'</span></b></big> "</label></text>
  317.          </vbox>
  318.        </eventbox>
  319.      </hbox>
  320.      <vbox scrollable="true" shadow-type="0" hscrollbar-policy="2" vscrollbar-policy="1" space-expand="true" space-fill="true">
  321.        <text ypad="5" xpad="5" yalign="0" xalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"<i><b>'${INSTALLED_PGKS}' </b></i>"</label></text>
  322.      </vbox>
  323.    </hbox>
  324.  </hbox>
  325.  
  326.  <hbox space-expand="true" space-fill="true">
  327.    <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  328.      <hbox space-expand="false" space-fill="false">
  329.        <eventbox name="bg_report" space-expand="true" space-fill="true">
  330.          <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  331.            '"`/usr/lib/gtkdialog/xml_pixmap dialog-error.svg 32`"'
  332.            <text angle="90" wrap="false" yalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"<big><b><span color='"'#DB1B1B'"'>'$(gettext 'Failed')'</span></b></big> "</label></text>
  333.          </vbox>
  334.        </eventbox>
  335.      </hbox>
  336.      <vbox scrollable="true" shadow-type="0" hscrollbar-policy="2" vscrollbar-policy="1" space-expand="true" space-fill="true">
  337.        <text ypad="5" xpad="5" yalign="0" xalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"<i><b>'${FAILED_TO_INSTALL}' </b></i>"</label></text>
  338.      </vbox>
  339.    </hbox>
  340.  </hbox>
  341.  
  342.  '${LM}'
  343.  
  344.  <hbox space-expand="false" space-fill="false">
  345.     <button ok></button>
  346.     <button>
  347.      <label>'$(gettext 'View details')'</label>
  348.      <input file stock="gtk-dialog-info"></input>
  349.      <action>defaulttextviewer /tmp/petget_proc/overall_install_report &</action>
  350.     </button>
  351.     '${BUTTON_TRIM}'
  352.     '"`/usr/lib/gtkdialog/xml_scalegrip`"'
  353.  </hbox>
  354. </vbox>
  355. </window>'
  356.  RETPARAMS="`gtkdialog --center -p REPORT_DIALOG`"
  357.  eval "$RETPARAMS"
  358.  echo 100 > /tmp/petget_proc/petget/install_status_percent
  359.  
  360.   #trim the fat...
  361.  if [ "$EXIT" = "BUTTON_TRIM_FAT" ];then
  362.   INSTALLEDPKGNAMES="`cat /tmp/petget_proc/petget-installed-pkgs-log | cut -f 2 -d ' ' | tr '\n' ' '`"
  363.   #101013 improvement suggested by L18L...
  364.   CURRLOCALES="`locale -a | grep _ | cut -d '_' -f 1`"
  365.   LISTLOCALES="`echo -e -n "en\n${CURRLOCALES}" | sort -u | tr -s '\n' | tr '\n' ',' | sed -e 's%,$%%'`"
  366.   export PPM_TRIM_DIALOG="<window title=\"$(gettext 'Puppy Package Manager')\" icon-name=\"gtk-about\" resizable=\"false\">
  367.  <vbox>
  368.   <pixmap><input file>/usr/share/pixmaps/puppy/dialog-question.svg</input></pixmap>
  369.   <text><label>$(gettext "You have chosen to 'trim the fat' of these installed packages:")</label></text>
  370.   <text use-markup=\"true\"><label>\"<b>${INSTALLEDPKGNAMES}</b>\"</label></text>
  371.   <frame Locale>
  372.   <text><label>$(gettext 'Type the 2-letter country designations for the locales that you want to retain, separated by commas. Leave blank to retain all locale files (see /usr/share/locale for examples):')</label></text>
  373.   <entry><default>${LISTLOCALES}</default><variable>ENTRY_LOCALE</variable></entry>
  374.   </frame>
  375.   <frame $(gettext 'Documentation')>
  376.   <checkbox><default>true</default><label>$(gettext 'Tick this to delete documentation files')</label><variable>CHECK_DOCDEL</variable></checkbox>
  377.   </frame>
  378.   <frame $(gettext 'Development')>
  379.   <checkbox><default>true</default><label>$(gettext 'Tick this to delete development files')</label><variable>CHECK_DEVDEL</variable></checkbox>
  380.   <text><label>$(gettext '(only needed if these packages are required as dependencies when compiling another package from source code)')</label></text>
  381.   </frame>
  382.   <text><label>$(gettext "Click 'OK', or if you decide to chicken-out click 'Cancel':")</label></text>
  383.   <hbox>
  384.    <button ok></button>
  385.    <button cancel></button>
  386.   </hbox>
  387.  </vbox>
  388.  </window>"
  389.   RETPARAMS="`gtkdialog -p PPM_TRIM_DIALOG`"
  390.   eval "$RETPARAMS"
  391.   [ "$EXIT" != "OK" ] && exit $EXITVAL
  392.   if [ ! -f /tmp/petget_proc/install_quietly ]; then
  393.    /usr/lib/gtkdialog/box_splash -text "$(gettext 'Please wait, trimming fat from packages...')" &
  394.    X4PID=$!
  395.   fi
  396.   elPATTERN="`echo -n "$ENTRY_LOCALE" | tr ',' '\n' | sed -e 's%^%/%' -e 's%$%/%' | tr '\n' '|'`"
  397.   for PKGNAME in $INSTALLEDPKGNAMES
  398.   do
  399.    (
  400.    cat /root/.packages/${PKGNAME}.files |
  401.    while read ONEFILE
  402.    do
  403.     [ ! -f "$ONEFILE" ] && echo "$ONEFILE" && continue
  404.     [ -h "$ONEFILE" ] && echo "$ONEFILE" && continue
  405.     #find out if this is an international language file...
  406.     if [ "$ENTRY_LOCALE" != "" ];then
  407.      if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/locale/|/nls/|/i18n/' | grep -v -E "$elPATTERN"`" != "" ];then
  408.       rm -f "$ONEFILE"
  409.       continue
  410.      fi
  411.     fi
  412.     #find out if this is a documentation file...
  413.     if [ "$CHECK_DOCDEL" = "true" ];then
  414.      if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/man/|/doc/|/doc-base/|/docs/|/info/|/gtk-doc/|/faq/|/manual/|/examples/|/help/|/htdocs/'`" != "" ];then
  415.       rm -f "$ONEFILE" 2>/dev/null
  416.       continue
  417.      fi
  418.     fi
  419.     #find out if this is development file...
  420.     if [ "$CHECK_DEVDEL" = "true" ];then
  421.      if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/include/|/pkgconfig/|/aclocal|/cvs/|/svn/'`" != "" ];then
  422.       rm -f "$ONEFILE" 2>/dev/null
  423.       continue
  424.      fi
  425.      #all .a and .la files... and any stray .m4 files...
  426.      if [ "`echo -n "$ONEBASE" | grep --extended-regexp '\.a$|\.la$|\.m4$'`" != "" ];then
  427.       rm -f "$ONEFILE"
  428.       continue
  429.      fi
  430.     fi
  431.     echo "$ONEFILE"
  432.    done
  433.    ) > /tmp/petget_proc/petget_pkgfiles_temp
  434.    mv -f /tmp/petget_proc/petget_pkgfiles_temp /root/.packages/${PKGNAME}.files
  435.   done
  436.   [ "$X4PID" ] && kill $X4PID
  437.  fi
  438. }
  439. [ "$EXPORT_FNs" = true ] && export -f report_results
  440.  
  441. while read a_lib; do
  442.   while read packages_db; do
  443.         REPO_TRIAD=$(basename $packages_db)
  444.         REPO_TRIAD=${REPO_TRIAD#Packages-} #todo MAYBE MAKE THIS MORE ROBUST  
  445.     for mode in 1 2; do  
  446.    
  447.       case "$mode" in
  448.       1)
  449.         provides_db="$(echo "$packages_db" | sed 's/^Packages-/^Provides-/')"
  450.         a_lib="$(echo "$a_lib" | sed -r 's/^(.*)([.]so)(.*)$/\1\2/')"
  451.         matches="$(grep -F $a_lib $provides_db)"
  452.         ;;
  453.       2)
  454.         pre_guess=$a_lib
  455.         while [ 1 -eq 1 ]; do
  456.           guess="$(echo "$pre_guess" | sed 's/[.]so[.]/-/')"
  457.           guess="$(echo "$pre_guess" | sed 's/[.]so//')"
  458.           matches="$(grep -F $guess $packages_db)"
  459.           [ ! -z $matches ] && break 3
  460.           last_pre_guess="$pre_guess"
  461.           pre_guess="$(echo "$pre_guess" | sed -r 's/(.*)(.so)(.*)[.][^.]*/\1\2\3/')"
  462.           [ "$pre_guess" = "$last_pre_guess" ] && break
  463.         done    
  464.         ;;        
  465.       esac
  466.       if [ ! -z "$matches" ]; then
  467.         #pkgs_to_install_s243a is two fields like at: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/pkg_chooser.sh#L159
  468.         echo "$matches" | cut -d '|' -f1 | \
  469.           sed -n -E '/^[[:space:]]*$/! {s%(.*)%\1|'$REPO_TRIAD'%;p}'  >> /tmp/petget_proc/pkgs_to_install_s243a
  470.         break
  471.       fi
  472.     done
  473.   done < <(find /var/packages -name 'Packages-*')
  474. done < <(cat /tmp/petget_proc/missinglibs.txt | tr [[:space:]] "\n" )
  475.  
  476. while IFS= read line|| [ -n "$line" ];
  477. do    
  478.   export TREE1=$line
  479.  
  480.   #echo $TREE1 > /tmp/petget_proc/forced_install
  481.   do_install #Expects four fields
  482. done < /tmp/petget_proc/pkgs_to_install_s243a
  483.  
  484.  
  485. #export -f do_instal #pkg_info do_install change_mode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement