s243a icon

Draft: install_missing.sh (2)

s243a | PRO | 03/04/20 07:26:38 AM UTC | 0 ⭐ | 982 👁️ | Never ⏰ | []
text |

21.25 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
INSTALL_MODE='Step by step installation (classic mode)'
EXPORT_FNs=false #Setting this to true might provide a way of overriding the functions in the ppm gui.
USE_installmodes_sh=false
SKIP_installmodes_sh=false
 rm /tmp/petget_proc/pkgs_to_install_s243a
rm /tmp/petget_proc/pkgs_to_install
#touch /root/.packages/skip_space_check
echo changed > /tmp/petget_proc/mode_changed 
touch /tmp/petget_proc/force_install
touch /root/.packages/skip_space_check
touch /tmp/petget_proc/manual_pkg_download
 rm /tmp/petget_proc/pkgs_to_install
  if [ ! -f /tmp/petget_proc/install_pets_quietly -a ! -f /tmp/petget_proc/download_only_pet_quietly \
	-a ! -f /tmp/petget_proc/download_pets_quietly ]; then
	echo ok
elif [ "$PREVPKG" != "" ]; then
	echo changed >> /tmp/petget_proc/mode_changed
fi
rm -f /tmp/petget_proc/*_pet{,s}_quietly
echo "" > /tmp/petget_proc/forced_install
touch /tmp/petget_proc/install_classic
echo 'wizard' > /var/local/petget/ppm_mode
    #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
install_package () {
 #set -x
 [ "$(cat /tmp/petget_proc/pkgs_to_install)" = "" ] && exit 0
 cat /tmp/petget_proc/pkgs_to_install | tr ' ' '\n' > /tmp/petget_proc/pkgs_left_to_install
 rm -f /tmp/petget_proc/overall_package_status_log
 echo 0 > /tmp/petget_proc/petget/install_status_percent
 echo "$(gettext "Calculating total required space...")" > /tmp/petget_proc/petget/install_status
 [ ! -f /root/.packages/skip_space_check ] && check_total_size
 #status_bar_func & #-----------
 while IFS="|" read TREE1 REPO zz #TREE1|REPO
 do
   [ -z "$TREE1" ] && continue
   echo "$REPO" > /tmp/petget_proc/petget/current-repo-triad
   if [ -f /tmp/petget_proc/install_quietly ];then
    if [  "$(grep $TREE1 /root/.packages/user-installed-packages 2>/dev/null)" = "" \
     -a -f /tmp/petget_proc/install_pets_quietly ]; then
     if [ "$(cat /var/local/petget/nt_category 2>/dev/null)" = "true" ]; then
      /usr/local/petget/installpreview.sh
     else
	  rxvt -title "$VTTITLE... $(gettext 'Do NOT close')" \
	  -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-*-* -bg black \
      -fg grey -geometry 80x5+50+50 -e /usr/local/petget/installpreview.sh
     fi
    else
     if [ "$(cat /var/local/petget/nt_category 2>/dev/null)" = "true" ]; then
      /usr/local/petget/installpreview.sh
     else
	  rxvt -title "$VTTITLE... $(gettext 'Do NOT close')" \
	  -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-*-* -bg black \
      -fg grey -geometry 80x5+50+50 -e /usr/local/petget/installpreview.sh
     fi
    fi
   else
    /usr/local/petget/installpreview.sh
    if [ $? -eq 100 ] ; then
       exit
    fi
   fi
   /usr/local/petget/finduserinstalledpkgs.sh #s243a: is this necessary? 
   sed -i "/$TREE1/d" /tmp/petget_proc/pkgs_left_to_install
 done < /tmp/petget_proc/pkgs_to_install
 sync
 report_results
 clean_up
}
[ "$EXPORT_FNs" = true ] && export -f install_package
 do_install() {
	# Exit if called spuriously
	[ "$TREE1" = "" ] && exit 0
	export ENTRY=$TREE1
	pkg_info
	#pkg_info="$(cat /tmp/petget_proc/pkgs_to_install | cut -d '|' -f1,4)"
	#pkgs_to_install set in the pkg_info function
	echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
	cat /tmp/petget_proc/pkgs_to_install | cut -d '|' -f1,4 > /tmp/petget_proc/pkgs_to_install
	echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
	#-- Make sure that we have atleast one mode flag
	if [ ! -f /tmp/petget_proc/install_pets_quietly \
	  -a ! -f /tmp/petget_proc/download_only_pet_quietly \
	  -a ! -f /tmp/petget_proc/download_pets_quietly \
	  -a ! -f /tmp/petget_proc/install_classic ] ; then
		touch /tmp/petget_proc/install_classic #/tmp/petget_proc/install_pets_quietly
	fi
	#if [ "$(grep $TREE1 /root/.packages/user-installed-packages)" != "" ] ; then
	#	. /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.')"
	#	if [ "$EXIT" = "yes" ]; then
	#		exit 0
	#	else
	#		echo $TREE1 > /tmp/petget_proc/forced_install
	#	fi
	#fi
	#--
	if [ "$(cat /tmp/petget_proc/forced_install 2>/dev/null)" != "" ]; then
		touch /tmp/petget_proc/force_install
	else
		rm -f /tmp/petget_proc/force_install
	fi
	#cut -d"|" -f1,4 /tmp/petget_proc/pkgs_to_install > /tmp/petget_proc/pkgs_to_install_tmp
	#mv -f /tmp/petget_proc/pkgs_to_install_tmp /tmp/petget_proc/pkgs_to_install
	#if ! [ -f /tmp/petget_proc/force_install -a -f /tmp/petget_proc/install_pets_quietly ]; then
		#/usr/local/petget/installed_size_preview.sh "$NEWPACKAGE" ADD
		if [ "$USE_installmodes_sh" != false ]; then
		  /usr/local/petget/installmodes.sh "$INSTALL_MODE"
		elif [ "$SKIP_installmodes_sh" != false ]; then
	      install_package #This was taken from installmodes.sh
	    else
	      cat /tmp/petget_proc/pkgs_to_install | cut -d '|' -f1 > /tmp/petget_proc/pkgs_to_install
	      cat /tmp/petget_proc/pkgs_to_install | tr ' ' '\n' > /tmp/petget_proc/pkgs_left_to_install
	      echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
	      /usr/local/petget/installpreview.sh
	    fi
}
 echo_pkg_info_fields_helper(){
  [ $# -gt 0 ] && TREE1=$1
  [ $# -gt 1 ] && TREE1="$TREE1|$2"
  local repo_triad
  local result
  if [ -f /tmp/petget_proc/petget/filterpkgs.results.post ]; then
    result="$(grep ^$TREE1 /tmp/petget_proc/petget/filterpkgs.results.post)"
  fi
  if [ -z $result ]; then
   	pkg=$(echo $TREE1 | cut -f1 -d '|' )
	#repo_triad=$(echo $TREE1 | cut -f2 -d)
	n_fields=$(echo "$TREE1" | awk -F "|" '{print NF}' | head -n 1)
	if [ $n_fields -gt 1 ]; then
	  repo_triad=$(echo "$TREE1" | awk -F "|" '{print $NF}' | head -n 1)
	elif [ -f /tmp/petget_proc/petget ]; then
	  repo_triad=$(cat /tmp/petget_proc/petget | head -n 1) 
	fi 
	result="$(grep -m1 ^$pkg /var/packages/Packages-$repo_triad | cut -f1,5,10,11)" 
  fi
  echo "$result"
}
echo_pkg_info_fields(){
  	echo_pkg_info_fields_helper
  	#TODO maybe look at all repos specified by the ppm or fallback repos. 
}
#Taken from: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/pkg_chooser.sh#L120
# but modified to not depend on filterpkgs.results.post
pkg_info() {
	# Exit if called spuriously
	[ "$TREE1" = "" ] && exit 0
	#NEWPACKAGE="$(grep ^$TREE1 /tmp/petget_proc/petget/filterpkgs.results.post)"
	pkg=$(echo $TREE1 | cut -f1 -d '|' )
	export ENTRY1=$pkg #used in findnames.sh
	/usr/local/petget/findnames.sh  #We can remove this if we generage filterpkgs.results.post another way. See: postfilterpkgs.sh and installpreview.sh
   # rm -f /tmp/petget_proc/overall_*
    #/usr/local/petget/installed_size_preview.sh "$TREE1" ADD
    #installpreview.sh
	repo_triad=$(echo $TREE1 | cut -f2 -d '|' )
	echo "$repo_triad" > /tmp/petget_proc/petget/current-repo-triad
	IFS="|" read PKG_NAME PKG_CAT PKG_DESC PKG_REPO < <(echo_pkg_info_fields  )
	(
		echo "Name    : $PKG_NAME"
		echo "Category: $PKG_CAT"
		echo "Desc    : $PKG_DESC"
		echo "Repo    : $repo_triad" #$PKG_REPO
	) > /tmp/petget_proc/petget/pgk_info
	echo "$PKG_NAME|$PKG_CAT|$PKG_DESC|$repo_triad" >> /tmp/petget_proc/pkgs_to_install
}
 #Taken from: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/installmodes.sh#L12
clean_up () {
 if [ "$(ls /tmp/petget_proc/*_pet{,s}_quietly /tmp/petget_proc/install_classic 2>/dev/null |wc -l)" -eq 1 ]; then
  for MODE in $(ls /tmp/petget_proc/*_pet{,s}_quietly /tmp/petget_proc/install_classic)
  do
   mv $MODE $MODE.bak
  done
 fi
 mv /tmp/petget_proc/install_quietly /tmp/petget_proc/install_quietly.bak
 echo -n > /tmp/petget_proc/pkgs_to_install
 rm -f /tmp/petget_proc/{install,remove}{,_pets}_quietly 2>/dev/null
 rm -f /tmp/petget_proc/install_classic 2>/dev/null
 rm -f /tmp/petget_proc/download_pets_quietly 2>/dev/null
 rm -f /tmp/petget_proc/download_only_pet_quietly 2>/dev/null
 rm -f /tmp/petget_proc/pkgs_left_to_install 2>/dev/null
 rm -f /tmp/petget_proc/pkgs_to_install_done 2>/dev/null
 rm -f /tmp/petget_proc/overall_pkg_size* 2>/dev/null
 rm -f /tmp/petget_proc/overall_dependencies 2>/dev/null
 rm -f /tmp/petget_proc/mode_changed 2>/dev/null
 rm -f /tmp/petget_proc/force*_install 2>/dev/null
 rm -f /tmp/petget_proc/pkgs_to_install_done 2>/dev/null
 rm -f /tmp/petget_proc/pgks_really_installed 2>/dev/null
 rm -f /tmp/petget_proc/pgks_failed_to_install 2>/dev/null
 rm -f /tmp/petget_proc/overall_petget_missingpkgs_patterns.txt 2>/dev/null
 rm -f /tmp/petget_proc/overall_missing_libs.txt 2>/dev/null
 rm -f /tmp/petget_proc/overall_install_report 2>/dev/null
 rm -f /tmp/petget_proc/pkgs_to_install_bar 2>/dev/null
 rm -f /tmp/petget_proc/manual_pkg_download 2>/dev/null
 rm -f /tmp/petget_proc/ppm_reporting 2>/dev/null
 rm -f /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null
 rm -rf /tmp/petget_proc/PPM_LOGs/ 2>/dev/null
 mv $MODE.bak $MODE
 mv /tmp/petget_proc/install_quietly.bak /tmp/petget_proc/install_quietly
}
[ "$EXPORT_FNs" = true ] && export -f clean_up
report_results () {
 # Info source files
 touch /tmp/petget_proc/ppm_reporting # progress bar flag
 /usr/local/petget/finduserinstalledpkgs.sh #make sure...
 sync
 rm -f /tmp/petget_proc/pgks_really_installed 2>/dev/null
 rm -f /tmp/petget_proc/pgks_failed_to_install 2>/dev/null
 for LINE in $(cat /tmp/petget_proc/pkgs_to_install_done  | cut -f 1 -d '|' | sort | uniq)
 do
  [ "$(echo $LINE)" = "" ] && continue
  if [ -f /tmp/petget_proc/download_pets_quietly -o -f /tmp/petget_proc/download_only_pet_quietly \
   -o -f /tmp/petget_proc/manual_pkg_download ];then
   if [ -f /root/.packages/download_path ];then
    . /root/.packages/download_path
    DOWN_PATH="$DL_PATH"
   else
    DOWN_PATH=$HOME
   fi
   PREVINST=''
   REALLY=$(ls "$DOWN_PATH" | grep $LINE)
   [ "$REALLY" -a "$(grep $LINE /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null | sort | uniq )" != "" ] && \
    REALLY='' && PREVINST="$(gettext 'was previously downloaded')"
  else
   PREVINST=''
   REALLY=$(grep $LINE /tmp/petget_proc/petget/installedpkgs.results)
   [ "$(grep $LINE /tmp/petget_proc/pgks_failed_to_install_forced 2>/dev/null | sort | uniq )" != "" -o \
    "$(grep $LINE /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null | sort | uniq )" != "" ] \
    && REALLY='' && PREVINST="$(gettext 'was already installed')"
  fi
  if [ "$REALLY" != "" ]; then
   echo $LINE >> /tmp/petget_proc/pgks_really_installed
  else
   echo $LINE $PREVINST >> /tmp/petget_proc/pgks_failed_to_install
  fi
 done
 rm -f /tmp/petget_proc/pgks_failed_to_install_forced
  [ -f /tmp/petget_proc/pgks_really_installed ] && INSTALLED_PGKS="$(</tmp/petget_proc/pgks_really_installed)" \
  || INSTALLED_PGKS=''
 [ -f /tmp/petget_proc/pgks_failed_to_install ] && FAILED_TO_INSTALL="$(</tmp/petget_proc/pgks_failed_to_install)" \
  || FAILED_TO_INSTALL=''
 #MISSING_PKGS=$(cat /tmp/petget_proc/overall_petget_missingpkgs_patterns.txt |sort|uniq )
 MISSING_LIBS=$(cat /tmp/petget_proc/overall_missing_libs.txt 2>/dev/null | tr ' ' '\n' | sort | uniq )
 NOT_IN_PATH_LIBS=$(cat /tmp/petget_proc/overall_missing_libs_hidden.txt 2>/dev/null | tr ' ' '\n' | sort | uniq )
 cat << EOF > /tmp/petget_proc/overall_install_report
Packages succesfully Installed or Downloaded 
$INSTALLED_PGKS
 Packages that failed to be Installed or Downloaded, or were aborted be the user
$FAILED_TO_INSTALL
 Missing Shared Libraries
$MISSING_LIBS
 Existing Libraries that may be in a location other than /lib and /usr/lib
$NOT_IN_PATH_LIBS
EOF
  # Info window/dialogue (display and option to save "missing" info)
 if [ "$MISSING_LIBS" ];then
  MISSINGMSG1="<i><b>$(gettext 'These libraries are missing:')
${MISSING_LIBS}</b></i>"
  LM='  <hbox space-expand="true" space-fill="true">
    <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
      <hbox space-expand="false" space-fill="false">
        <eventbox name="bg_report" space-expand="true" space-fill="true">
          <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
            '"`/usr/lib/gtkdialog/xml_pixmap building_block.svg 32`"'
            <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>
          </vbox>
        </eventbox>
      </hbox>
      <vbox scrollable="true" shadow-type="0" hscrollbar-policy="1" vscrollbar-policy="1" space-expand="true" space-fill="true">
        <text ypad="5" xpad="5" yalign="0" xalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"'${MISSINGMSG1}'"</label></text>
      </vbox>
    </hbox>
  </hbox>'
 fi
 if [ "$NOT_IN_PATH_LIBS" ];then #100830
  MISSINGMSG1="<i><b>${MISSINGMSG1}</b></i>
 $(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):')
<i><b>${NOT_IN_PATH_LIBS}</b></i>"
 fi
  if [ -s /tmp/petget_proc/petget-installed-pkgs-log ];then
  BUTTON_TRIM="<button><input file stock=\"gtk-execute\"></input><label>$(gettext 'Trim the fat')</label><action type=\"exit\">BUTTON_TRIM_FAT</action></button>"
 fi
  export REPORT_DIALOG='
 <window title="'$(gettext 'Package Manager')'" icon-name="gtk-about" default_height="550">
 <vbox>
  '"`/usr/lib/gtkdialog/xml_info fixed package_add.svg 60 " " "$(gettext "Package install/download report")"`"'
  <hbox space-expand="true" space-fill="true">
    <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
      <hbox space-expand="false" space-fill="false">
        <eventbox name="bg_report" space-expand="true" space-fill="true">
          <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
            '"`/usr/lib/gtkdialog/xml_pixmap dialog-complete.svg 32`"'
            <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>
          </vbox>
        </eventbox>
      </hbox>
      <vbox scrollable="true" shadow-type="0" hscrollbar-policy="2" vscrollbar-policy="1" space-expand="true" space-fill="true">
        <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>
      </vbox>
    </hbox>
  </hbox>
   <hbox space-expand="true" space-fill="true">
    <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
      <hbox space-expand="false" space-fill="false">
        <eventbox name="bg_report" space-expand="true" space-fill="true">
          <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
            '"`/usr/lib/gtkdialog/xml_pixmap dialog-error.svg 32`"'
            <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>
          </vbox>
        </eventbox>
      </hbox>
      <vbox scrollable="true" shadow-type="0" hscrollbar-policy="2" vscrollbar-policy="1" space-expand="true" space-fill="true">
        <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>
      </vbox>
    </hbox>
  </hbox>
   '${LM}'
   <hbox space-expand="false" space-fill="false">
     <button ok></button>
     <button>
      <label>'$(gettext 'View details')'</label>
      <input file stock="gtk-dialog-info"></input>
      <action>defaulttextviewer /tmp/petget_proc/overall_install_report &</action>
     </button>
     '${BUTTON_TRIM}'
     '"`/usr/lib/gtkdialog/xml_scalegrip`"'
  </hbox>
 </vbox>
 </window>'
 RETPARAMS="`gtkdialog --center -p REPORT_DIALOG`"
 eval "$RETPARAMS"
 echo 100 > /tmp/petget_proc/petget/install_status_percent
   #trim the fat...
 if [ "$EXIT" = "BUTTON_TRIM_FAT" ];then
  INSTALLEDPKGNAMES="`cat /tmp/petget_proc/petget-installed-pkgs-log | cut -f 2 -d ' ' | tr '\n' ' '`"
  #101013 improvement suggested by L18L...
  CURRLOCALES="`locale -a | grep _ | cut -d '_' -f 1`"
  LISTLOCALES="`echo -e -n "en\n${CURRLOCALES}" | sort -u | tr -s '\n' | tr '\n' ',' | sed -e 's%,$%%'`"
  export PPM_TRIM_DIALOG="<window title=\"$(gettext 'Puppy Package Manager')\" icon-name=\"gtk-about\" resizable=\"false\">
  <vbox>
   <pixmap><input file>/usr/share/pixmaps/puppy/dialog-question.svg</input></pixmap>
   <text><label>$(gettext "You have chosen to 'trim the fat' of these installed packages:")</label></text>
   <text use-markup=\"true\"><label>\"<b>${INSTALLEDPKGNAMES}</b>\"</label></text>
   <frame Locale>
   <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>
   <entry><default>${LISTLOCALES}</default><variable>ENTRY_LOCALE</variable></entry>
   </frame>
   <frame $(gettext 'Documentation')>
   <checkbox><default>true</default><label>$(gettext 'Tick this to delete documentation files')</label><variable>CHECK_DOCDEL</variable></checkbox>
   </frame>
   <frame $(gettext 'Development')>
   <checkbox><default>true</default><label>$(gettext 'Tick this to delete development files')</label><variable>CHECK_DEVDEL</variable></checkbox>
   <text><label>$(gettext '(only needed if these packages are required as dependencies when compiling another package from source code)')</label></text>
   </frame>
   <text><label>$(gettext "Click 'OK', or if you decide to chicken-out click 'Cancel':")</label></text>
   <hbox>
    <button ok></button>
    <button cancel></button>
   </hbox>
  </vbox>
  </window>"
  RETPARAMS="`gtkdialog -p PPM_TRIM_DIALOG`"
  eval "$RETPARAMS"
  [ "$EXIT" != "OK" ] && exit $EXITVAL
  if [ ! -f /tmp/petget_proc/install_quietly ]; then
   /usr/lib/gtkdialog/box_splash -text "$(gettext 'Please wait, trimming fat from packages...')" &
   X4PID=$!
  fi
  elPATTERN="`echo -n "$ENTRY_LOCALE" | tr ',' '\n' | sed -e 's%^%/%' -e 's%$%/%' | tr '\n' '|'`"
  for PKGNAME in $INSTALLEDPKGNAMES
  do
   (
   cat /root/.packages/${PKGNAME}.files |
   while read ONEFILE
   do
    [ ! -f "$ONEFILE" ] && echo "$ONEFILE" && continue
    [ -h "$ONEFILE" ] && echo "$ONEFILE" && continue
    #find out if this is an international language file...
    if [ "$ENTRY_LOCALE" != "" ];then
     if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/locale/|/nls/|/i18n/' | grep -v -E "$elPATTERN"`" != "" ];then
      rm -f "$ONEFILE"
      continue
     fi
    fi
    #find out if this is a documentation file...
    if [ "$CHECK_DOCDEL" = "true" ];then
     if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/man/|/doc/|/doc-base/|/docs/|/info/|/gtk-doc/|/faq/|/manual/|/examples/|/help/|/htdocs/'`" != "" ];then
      rm -f "$ONEFILE" 2>/dev/null
      continue
     fi
    fi
    #find out if this is development file...
    if [ "$CHECK_DEVDEL" = "true" ];then
     if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/include/|/pkgconfig/|/aclocal|/cvs/|/svn/'`" != "" ];then
      rm -f "$ONEFILE" 2>/dev/null
      continue
     fi
     #all .a and .la files... and any stray .m4 files...
     if [ "`echo -n "$ONEBASE" | grep --extended-regexp '\.a$|\.la$|\.m4$'`" != "" ];then
      rm -f "$ONEFILE"
      continue
     fi
    fi
    echo "$ONEFILE"
   done
   ) > /tmp/petget_proc/petget_pkgfiles_temp
   mv -f /tmp/petget_proc/petget_pkgfiles_temp /root/.packages/${PKGNAME}.files
  done
  [ "$X4PID" ] && kill $X4PID
 fi
}
[ "$EXPORT_FNs" = true ] && export -f report_results
 while read a_lib; do
  while read provides_db; do
     matches="$(grep $a_lib $provides_db)"
     REPO_TRIAD=$(basename $provides_db)
     REPO_TRIAD=${REPO_TRIAD#Provides-} #todo MAYBE MAKE THIS MORE ROBUST
     if [ ! -z "$matches" ]; then
        #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
        echo "$matches" | cut -d '|' -f1 | \
          sed -n -E '/^[[:space:]]*$/! {s%(.*)%\1|'$REPO_TRIAD'%;p}'  >> /tmp/petget_proc/pkgs_to_install_s243a
        break
     fi 
  done < <(find /var/packages -name 'Provides-*')
 done < <(cat /tmp/petget_proc/missinglibs.txt | tr [[:space:]] "\n" ) 
 while IFS= read line|| [ -n "$line" ]; 
do     
  export TREE1=$line
   #echo $TREE1 > /tmp/petget_proc/forced_install
  do_install #Expects four fields
done < /tmp/petget_proc/pkgs_to_install_s243a
  #export -f do_instal #pkg_info do_install change_mode

Comments