s243a

Draft: install_missing.sh (2)

Mar 4th, 2020
1,012
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.25 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. cat /tmp/petget_proc/pkgs_to_install | cut -d '|' -f1,4 > /tmp/petget_proc/pkgs_to_install
  89. echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
  90. #-- Make sure that we have atleast one mode flag
  91. if [ ! -f /tmp/petget_proc/install_pets_quietly \
  92. -a ! -f /tmp/petget_proc/download_only_pet_quietly \
  93. -a ! -f /tmp/petget_proc/download_pets_quietly \
  94. -a ! -f /tmp/petget_proc/install_classic ] ; then
  95. touch /tmp/petget_proc/install_classic #/tmp/petget_proc/install_pets_quietly
  96. fi
  97. #if [ "$(grep $TREE1 /root/.packages/user-installed-packages)" != "" ] ; then
  98. # . /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.')"
  99. # if [ "$EXIT" = "yes" ]; then
  100. # exit 0
  101. # else
  102. # echo $TREE1 > /tmp/petget_proc/forced_install
  103. # fi
  104. #fi
  105. #--
  106. if [ "$(cat /tmp/petget_proc/forced_install 2>/dev/null)" != "" ]; then
  107. touch /tmp/petget_proc/force_install
  108. else
  109. rm -f /tmp/petget_proc/force_install
  110. fi
  111. #cut -d"|" -f1,4 /tmp/petget_proc/pkgs_to_install > /tmp/petget_proc/pkgs_to_install_tmp
  112. #mv -f /tmp/petget_proc/pkgs_to_install_tmp /tmp/petget_proc/pkgs_to_install
  113. #if ! [ -f /tmp/petget_proc/force_install -a -f /tmp/petget_proc/install_pets_quietly ]; then
  114. #/usr/local/petget/installed_size_preview.sh "$NEWPACKAGE" ADD
  115. if [ "$USE_installmodes_sh" != false ]; then
  116. /usr/local/petget/installmodes.sh "$INSTALL_MODE"
  117. elif [ "$SKIP_installmodes_sh" != false ]; then
  118. install_package #This was taken from installmodes.sh
  119. else
  120. cat /tmp/petget_proc/pkgs_to_install | cut -d '|' -f1 > /tmp/petget_proc/pkgs_to_install
  121. cat /tmp/petget_proc/pkgs_to_install | tr ' ' '\n' > /tmp/petget_proc/pkgs_left_to_install
  122. echo "pkgs_to_install=$(cat /tmp/petget_proc/pkgs_to_install)"
  123. /usr/local/petget/installpreview.sh
  124. fi
  125. }
  126.  
  127. echo_pkg_info_fields_helper(){
  128. [ $# -gt 0 ] && TREE1=$1
  129. [ $# -gt 1 ] && TREE1="$TREE1|$2"
  130. local repo_triad
  131. local result
  132. if [ -f /tmp/petget_proc/petget/filterpkgs.results.post ]; then
  133. result="$(grep ^$TREE1 /tmp/petget_proc/petget/filterpkgs.results.post)"
  134. fi
  135. if [ -z $result ]; then
  136. pkg=$(echo $TREE1 | cut -f1 -d '|' )
  137. #repo_triad=$(echo $TREE1 | cut -f2 -d)
  138. n_fields=$(echo "$TREE1" | awk -F "|" '{print NF}' | head -n 1)
  139. if [ $n_fields -gt 1 ]; then
  140. repo_triad=$(echo "$TREE1" | awk -F "|" '{print $NF}' | head -n 1)
  141. elif [ -f /tmp/petget_proc/petget ]; then
  142. repo_triad=$(cat /tmp/petget_proc/petget | head -n 1)
  143. fi
  144. result="$(grep -m1 ^$pkg /var/packages/Packages-$repo_triad | cut -f1,5,10,11)"
  145. fi
  146. echo "$result"
  147. }
  148. echo_pkg_info_fields(){
  149. echo_pkg_info_fields_helper
  150. #TODO maybe look at all repos specified by the ppm or fallback repos.
  151. }
  152. #Taken from: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/pkg_chooser.sh#L120
  153. # but modified to not depend on filterpkgs.results.post
  154. pkg_info() {
  155. # Exit if called spuriously
  156. [ "$TREE1" = "" ] && exit 0
  157. #NEWPACKAGE="$(grep ^$TREE1 /tmp/petget_proc/petget/filterpkgs.results.post)"
  158. pkg=$(echo $TREE1 | cut -f1 -d '|' )
  159. export ENTRY1=$pkg #used in findnames.sh
  160. /usr/local/petget/findnames.sh #We can remove this if we generage filterpkgs.results.post another way. See: postfilterpkgs.sh and installpreview.sh
  161. # rm -f /tmp/petget_proc/overall_*
  162. #/usr/local/petget/installed_size_preview.sh "$TREE1" ADD
  163. #installpreview.sh
  164. repo_triad=$(echo $TREE1 | cut -f2 -d '|' )
  165. echo "$repo_triad" > /tmp/petget_proc/petget/current-repo-triad
  166. IFS="|" read PKG_NAME PKG_CAT PKG_DESC PKG_REPO < <(echo_pkg_info_fields )
  167. (
  168. echo "Name : $PKG_NAME"
  169. echo "Category: $PKG_CAT"
  170. echo "Desc : $PKG_DESC"
  171. echo "Repo : $repo_triad" #$PKG_REPO
  172. ) > /tmp/petget_proc/petget/pgk_info
  173. echo "$PKG_NAME|$PKG_CAT|$PKG_DESC|$repo_triad" >> /tmp/petget_proc/pkgs_to_install
  174. }
  175.  
  176. #Taken from: https://github.com/puppylinux-woof-CE/woof-CE/blob/60d94862a3343bf0a062a0fcd0dd73475d6985ba/woof-code/rootfs-skeleton/usr/local/petget/installmodes.sh#L12
  177. clean_up () {
  178. if [ "$(ls /tmp/petget_proc/*_pet{,s}_quietly /tmp/petget_proc/install_classic 2>/dev/null |wc -l)" -eq 1 ]; then
  179. for MODE in $(ls /tmp/petget_proc/*_pet{,s}_quietly /tmp/petget_proc/install_classic)
  180. do
  181. mv $MODE $MODE.bak
  182. done
  183. fi
  184. mv /tmp/petget_proc/install_quietly /tmp/petget_proc/install_quietly.bak
  185. echo -n > /tmp/petget_proc/pkgs_to_install
  186. rm -f /tmp/petget_proc/{install,remove}{,_pets}_quietly 2>/dev/null
  187. rm -f /tmp/petget_proc/install_classic 2>/dev/null
  188. rm -f /tmp/petget_proc/download_pets_quietly 2>/dev/null
  189. rm -f /tmp/petget_proc/download_only_pet_quietly 2>/dev/null
  190. rm -f /tmp/petget_proc/pkgs_left_to_install 2>/dev/null
  191. rm -f /tmp/petget_proc/pkgs_to_install_done 2>/dev/null
  192. rm -f /tmp/petget_proc/overall_pkg_size* 2>/dev/null
  193. rm -f /tmp/petget_proc/overall_dependencies 2>/dev/null
  194. rm -f /tmp/petget_proc/mode_changed 2>/dev/null
  195. rm -f /tmp/petget_proc/force*_install 2>/dev/null
  196. rm -f /tmp/petget_proc/pkgs_to_install_done 2>/dev/null
  197. rm -f /tmp/petget_proc/pgks_really_installed 2>/dev/null
  198. rm -f /tmp/petget_proc/pgks_failed_to_install 2>/dev/null
  199. rm -f /tmp/petget_proc/overall_petget_missingpkgs_patterns.txt 2>/dev/null
  200. rm -f /tmp/petget_proc/overall_missing_libs.txt 2>/dev/null
  201. rm -f /tmp/petget_proc/overall_install_report 2>/dev/null
  202. rm -f /tmp/petget_proc/pkgs_to_install_bar 2>/dev/null
  203. rm -f /tmp/petget_proc/manual_pkg_download 2>/dev/null
  204. rm -f /tmp/petget_proc/ppm_reporting 2>/dev/null
  205. rm -f /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null
  206. rm -rf /tmp/petget_proc/PPM_LOGs/ 2>/dev/null
  207. mv $MODE.bak $MODE
  208. mv /tmp/petget_proc/install_quietly.bak /tmp/petget_proc/install_quietly
  209. }
  210. [ "$EXPORT_FNs" = true ] && export -f clean_up
  211. report_results () {
  212. # Info source files
  213. touch /tmp/petget_proc/ppm_reporting # progress bar flag
  214. /usr/local/petget/finduserinstalledpkgs.sh #make sure...
  215. sync
  216. rm -f /tmp/petget_proc/pgks_really_installed 2>/dev/null
  217. rm -f /tmp/petget_proc/pgks_failed_to_install 2>/dev/null
  218. for LINE in $(cat /tmp/petget_proc/pkgs_to_install_done | cut -f 1 -d '|' | sort | uniq)
  219. do
  220. [ "$(echo $LINE)" = "" ] && continue
  221. if [ -f /tmp/petget_proc/download_pets_quietly -o -f /tmp/petget_proc/download_only_pet_quietly \
  222. -o -f /tmp/petget_proc/manual_pkg_download ];then
  223. if [ -f /root/.packages/download_path ];then
  224. . /root/.packages/download_path
  225. DOWN_PATH="$DL_PATH"
  226. else
  227. DOWN_PATH=$HOME
  228. fi
  229. PREVINST=''
  230. REALLY=$(ls "$DOWN_PATH" | grep $LINE)
  231. [ "$REALLY" -a "$(grep $LINE /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null | sort | uniq )" != "" ] && \
  232. REALLY='' && PREVINST="$(gettext 'was previously downloaded')"
  233. else
  234. PREVINST=''
  235. REALLY=$(grep $LINE /tmp/petget_proc/petget/installedpkgs.results)
  236. [ "$(grep $LINE /tmp/petget_proc/pgks_failed_to_install_forced 2>/dev/null | sort | uniq )" != "" -o \
  237. "$(grep $LINE /tmp/petget_proc/pkgs_DL_BAD_LIST 2>/dev/null | sort | uniq )" != "" ] \
  238. && REALLY='' && PREVINST="$(gettext 'was already installed')"
  239. fi
  240. if [ "$REALLY" != "" ]; then
  241. echo $LINE >> /tmp/petget_proc/pgks_really_installed
  242. else
  243. echo $LINE $PREVINST >> /tmp/petget_proc/pgks_failed_to_install
  244. fi
  245. done
  246. rm -f /tmp/petget_proc/pgks_failed_to_install_forced
  247.  
  248. [ -f /tmp/petget_proc/pgks_really_installed ] && INSTALLED_PGKS="$(</tmp/petget_proc/pgks_really_installed)" \
  249. || INSTALLED_PGKS=''
  250. [ -f /tmp/petget_proc/pgks_failed_to_install ] && FAILED_TO_INSTALL="$(</tmp/petget_proc/pgks_failed_to_install)" \
  251. || FAILED_TO_INSTALL=''
  252. #MISSING_PKGS=$(cat /tmp/petget_proc/overall_petget_missingpkgs_patterns.txt |sort|uniq )
  253. MISSING_LIBS=$(cat /tmp/petget_proc/overall_missing_libs.txt 2>/dev/null | tr ' ' '\n' | sort | uniq )
  254. NOT_IN_PATH_LIBS=$(cat /tmp/petget_proc/overall_missing_libs_hidden.txt 2>/dev/null | tr ' ' '\n' | sort | uniq )
  255. cat << EOF > /tmp/petget_proc/overall_install_report
  256. Packages succesfully Installed or Downloaded
  257. $INSTALLED_PGKS
  258.  
  259. Packages that failed to be Installed or Downloaded, or were aborted be the user
  260. $FAILED_TO_INSTALL
  261.  
  262. Missing Shared Libraries
  263. $MISSING_LIBS
  264.  
  265. Existing Libraries that may be in a location other than /lib and /usr/lib
  266. $NOT_IN_PATH_LIBS
  267. EOF
  268.  
  269. # Info window/dialogue (display and option to save "missing" info)
  270. if [ "$MISSING_LIBS" ];then
  271. MISSINGMSG1="<i><b>$(gettext 'These libraries are missing:')
  272. ${MISSING_LIBS}</b></i>"
  273. LM=' <hbox space-expand="true" space-fill="true">
  274. <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  275. <hbox space-expand="false" space-fill="false">
  276. <eventbox name="bg_report" space-expand="true" space-fill="true">
  277. <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  278. '"`/usr/lib/gtkdialog/xml_pixmap building_block.svg 32`"'
  279. <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>
  280. </vbox>
  281. </eventbox>
  282. </hbox>
  283. <vbox scrollable="true" shadow-type="0" hscrollbar-policy="1" vscrollbar-policy="1" space-expand="true" space-fill="true">
  284. <text ypad="5" xpad="5" yalign="0" xalign="0" use-markup="true" space-expand="true" space-fill="true"><label>"'${MISSINGMSG1}'"</label></text>
  285. </vbox>
  286. </hbox>
  287. </hbox>'
  288. fi
  289. if [ "$NOT_IN_PATH_LIBS" ];then #100830
  290. MISSINGMSG1="<i><b>${MISSINGMSG1}</b></i>
  291.  
  292. $(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):')
  293. <i><b>${NOT_IN_PATH_LIBS}</b></i>"
  294. fi
  295.  
  296. if [ -s /tmp/petget_proc/petget-installed-pkgs-log ];then
  297. BUTTON_TRIM="<button><input file stock=\"gtk-execute\"></input><label>$(gettext 'Trim the fat')</label><action type=\"exit\">BUTTON_TRIM_FAT</action></button>"
  298. fi
  299.  
  300. export REPORT_DIALOG='
  301. <window title="'$(gettext 'Package Manager')'" icon-name="gtk-about" default_height="550">
  302. <vbox>
  303. '"`/usr/lib/gtkdialog/xml_info fixed package_add.svg 60 " " "$(gettext "Package install/download report")"`"'
  304. <hbox space-expand="true" space-fill="true">
  305. <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  306. <hbox space-expand="false" space-fill="false">
  307. <eventbox name="bg_report" space-expand="true" space-fill="true">
  308. <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  309. '"`/usr/lib/gtkdialog/xml_pixmap dialog-complete.svg 32`"'
  310. <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>
  311. </vbox>
  312. </eventbox>
  313. </hbox>
  314. <vbox scrollable="true" shadow-type="0" hscrollbar-policy="2" vscrollbar-policy="1" space-expand="true" space-fill="true">
  315. <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>
  316. </vbox>
  317. </hbox>
  318. </hbox>
  319.  
  320. <hbox space-expand="true" space-fill="true">
  321. <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  322. <hbox space-expand="false" space-fill="false">
  323. <eventbox name="bg_report" space-expand="true" space-fill="true">
  324. <vbox margin="5" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
  325. '"`/usr/lib/gtkdialog/xml_pixmap dialog-error.svg 32`"'
  326. <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>
  327. </vbox>
  328. </eventbox>
  329. </hbox>
  330. <vbox scrollable="true" shadow-type="0" hscrollbar-policy="2" vscrollbar-policy="1" space-expand="true" space-fill="true">
  331. <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>
  332. </vbox>
  333. </hbox>
  334. </hbox>
  335.  
  336. '${LM}'
  337.  
  338. <hbox space-expand="false" space-fill="false">
  339. <button ok></button>
  340. <button>
  341. <label>'$(gettext 'View details')'</label>
  342. <input file stock="gtk-dialog-info"></input>
  343. <action>defaulttextviewer /tmp/petget_proc/overall_install_report &</action>
  344. </button>
  345. '${BUTTON_TRIM}'
  346. '"`/usr/lib/gtkdialog/xml_scalegrip`"'
  347. </hbox>
  348. </vbox>
  349. </window>'
  350. RETPARAMS="`gtkdialog --center -p REPORT_DIALOG`"
  351. eval "$RETPARAMS"
  352. echo 100 > /tmp/petget_proc/petget/install_status_percent
  353.  
  354. #trim the fat...
  355. if [ "$EXIT" = "BUTTON_TRIM_FAT" ];then
  356. INSTALLEDPKGNAMES="`cat /tmp/petget_proc/petget-installed-pkgs-log | cut -f 2 -d ' ' | tr '\n' ' '`"
  357. #101013 improvement suggested by L18L...
  358. CURRLOCALES="`locale -a | grep _ | cut -d '_' -f 1`"
  359. LISTLOCALES="`echo -e -n "en\n${CURRLOCALES}" | sort -u | tr -s '\n' | tr '\n' ',' | sed -e 's%,$%%'`"
  360. export PPM_TRIM_DIALOG="<window title=\"$(gettext 'Puppy Package Manager')\" icon-name=\"gtk-about\" resizable=\"false\">
  361. <vbox>
  362. <pixmap><input file>/usr/share/pixmaps/puppy/dialog-question.svg</input></pixmap>
  363. <text><label>$(gettext "You have chosen to 'trim the fat' of these installed packages:")</label></text>
  364. <text use-markup=\"true\"><label>\"<b>${INSTALLEDPKGNAMES}</b>\"</label></text>
  365. <frame Locale>
  366. <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>
  367. <entry><default>${LISTLOCALES}</default><variable>ENTRY_LOCALE</variable></entry>
  368. </frame>
  369. <frame $(gettext 'Documentation')>
  370. <checkbox><default>true</default><label>$(gettext 'Tick this to delete documentation files')</label><variable>CHECK_DOCDEL</variable></checkbox>
  371. </frame>
  372. <frame $(gettext 'Development')>
  373. <checkbox><default>true</default><label>$(gettext 'Tick this to delete development files')</label><variable>CHECK_DEVDEL</variable></checkbox>
  374. <text><label>$(gettext '(only needed if these packages are required as dependencies when compiling another package from source code)')</label></text>
  375. </frame>
  376. <text><label>$(gettext "Click 'OK', or if you decide to chicken-out click 'Cancel':")</label></text>
  377. <hbox>
  378. <button ok></button>
  379. <button cancel></button>
  380. </hbox>
  381. </vbox>
  382. </window>"
  383. RETPARAMS="`gtkdialog -p PPM_TRIM_DIALOG`"
  384. eval "$RETPARAMS"
  385. [ "$EXIT" != "OK" ] && exit $EXITVAL
  386. if [ ! -f /tmp/petget_proc/install_quietly ]; then
  387. /usr/lib/gtkdialog/box_splash -text "$(gettext 'Please wait, trimming fat from packages...')" &
  388. X4PID=$!
  389. fi
  390. elPATTERN="`echo -n "$ENTRY_LOCALE" | tr ',' '\n' | sed -e 's%^%/%' -e 's%$%/%' | tr '\n' '|'`"
  391. for PKGNAME in $INSTALLEDPKGNAMES
  392. do
  393. (
  394. cat /root/.packages/${PKGNAME}.files |
  395. while read ONEFILE
  396. do
  397. [ ! -f "$ONEFILE" ] && echo "$ONEFILE" && continue
  398. [ -h "$ONEFILE" ] && echo "$ONEFILE" && continue
  399. #find out if this is an international language file...
  400. if [ "$ENTRY_LOCALE" != "" ];then
  401. if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/locale/|/nls/|/i18n/' | grep -v -E "$elPATTERN"`" != "" ];then
  402. rm -f "$ONEFILE"
  403. continue
  404. fi
  405. fi
  406. #find out if this is a documentation file...
  407. if [ "$CHECK_DOCDEL" = "true" ];then
  408. if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/man/|/doc/|/doc-base/|/docs/|/info/|/gtk-doc/|/faq/|/manual/|/examples/|/help/|/htdocs/'`" != "" ];then
  409. rm -f "$ONEFILE" 2>/dev/null
  410. continue
  411. fi
  412. fi
  413. #find out if this is development file...
  414. if [ "$CHECK_DEVDEL" = "true" ];then
  415. if [ "`echo -n "$ONEFILE" | grep --extended-regexp '/include/|/pkgconfig/|/aclocal|/cvs/|/svn/'`" != "" ];then
  416. rm -f "$ONEFILE" 2>/dev/null
  417. continue
  418. fi
  419. #all .a and .la files... and any stray .m4 files...
  420. if [ "`echo -n "$ONEBASE" | grep --extended-regexp '\.a$|\.la$|\.m4$'`" != "" ];then
  421. rm -f "$ONEFILE"
  422. continue
  423. fi
  424. fi
  425. echo "$ONEFILE"
  426. done
  427. ) > /tmp/petget_proc/petget_pkgfiles_temp
  428. mv -f /tmp/petget_proc/petget_pkgfiles_temp /root/.packages/${PKGNAME}.files
  429. done
  430. [ "$X4PID" ] && kill $X4PID
  431. fi
  432. }
  433. [ "$EXPORT_FNs" = true ] && export -f report_results
  434.  
  435. while read a_lib; do
  436. while read provides_db; do
  437. matches="$(grep $a_lib $provides_db)"
  438. REPO_TRIAD=$(basename $provides_db)
  439. REPO_TRIAD=${REPO_TRIAD#Provides-} #todo MAYBE MAKE THIS MORE ROBUST
  440. if [ ! -z "$matches" ]; then
  441. #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
  442. echo "$matches" | cut -d '|' -f1 | \
  443. sed -n -E '/^[[:space:]]*$/! {s%(.*)%\1|'$REPO_TRIAD'%;p}' >> /tmp/petget_proc/pkgs_to_install_s243a
  444. break
  445. fi
  446. done < <(find /var/packages -name 'Provides-*')
  447.  
  448. done < <(cat /tmp/petget_proc/missinglibs.txt | tr [[:space:]] "\n" )
  449.  
  450. while IFS= read line|| [ -n "$line" ];
  451. do
  452. export TREE1=$line
  453.  
  454. #echo $TREE1 > /tmp/petget_proc/forced_install
  455. do_install #Expects four fields
  456. done < /tmp/petget_proc/pkgs_to_install_s243a
  457.  
  458.  
  459. #export -f do_instal #pkg_info do_install change_mode
Advertisement
Add Comment
Please, Sign In to add comment