Advertisement
s243a

move_builtin.sh (Draft #3 add mv woof-installed-packages metadata)

Mar 18th, 2021 (edited)
1,787
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 16.54 KB | None | 0 0
  1. #!/bin/bash
  2. #Barry Kauler Dec. 2010, license GPL v3 /usr/share/doc/legal.
  3. #based on a script by technosaurus, Dec. 2010.
  4. #Modified by s243a to work with an alternative root and for better cli support.
  5.  
  6. set -x
  7. CWD="$PWD"
  8. REMOVE_BUILTIN_fixmenus=no
  9. REMOVE_BUILTIN_prompt=no
  10. CHROOT_UPDATES=no
  11. REMOVE_BUILTIN_use_gui=no
  12. CHROOT_DIR="${CHROOT_DIR:-"$(echo "$CWD/puppy_fossapup64_9.5.sfs.extracted")"}"
  13. TARGET_DIR="${TARGET_DIR:-"$(echo "$CWD/fossapup64_9.5_basesfs_corecli")"}"
  14.  
  15. BUILTIN_ACITON="mv" #Move files
  16. BUILTIN_ACITON_SPECS="cp" #Only copy lines from DISTRO_PKGS_SPECS
  17.  
  18. #D=$CHROOT_DIR/root/.packages/builtin_files
  19. D_dir=/var/packages
  20. D2_dir="$D_dir"
  21. D_rel="$D_dir"/builtin_files-sml
  22. D2_rel="$D_dir"/builtin_files-sml_corecli
  23. Spec_rel=/var/packages/DISTRO_PKGS_SPECS
  24. Spec2_rel=/var/packages/DISTRO_PKGS_SPECS
  25. distro_spec_file="$CHROOT_DIR$Spec_rel"
  26. distro_spec_file2="$TARGET_DIR$Spec2_rel"
  27. inst_pkgs_name=woof-installed-packages-sml
  28. inst_pkgs_name2=woof-installed-packages-sml_cli
  29. D_inst_pkgs="$CHROOT_DIR$D_dir/$inst_pkgs_name"
  30. D2_inst_pkgs="$TARGET_DIR$D2_dir/$inst_pkgs_name2"
  31. inst_pkgs_action=delete
  32. mv_spec_action=switch #either switch (i.e. turn to no) or delete
  33.  
  34. [ -z "$D_rel" ] && D_rel=/root/.packages/builtin_files
  35. D="$CHROOT_DIR$D_rel"
  36. D="$(realpath "$D")"
  37. [ ! -d "$D" ] && D=$CHROOT_DIR/var/packages/builtin_files
  38. D2="$TARGET_DIR$D2_rel"
  39. mkdir -p "$D2"
  40. D2="$(realpath "$D2")"
  41. [ ! -d "$D" ] && D2=$TARGET_DIR/var/packages/builtin_files
  42. #/var/packages/builtin_files-sml
  43. set +x
  44. read -p "press enter to continue"
  45. set -x
  46. mkdir -p "$TARGET_DIR"
  47. function mk_parrent_dir(){
  48.   parrent="$(dirname $1)"
  49.   if  [ ${#parrent} -le 1 ]; then
  50.     return 0
  51.   else [ ! -d "$TARGET_DIR$parrent" ];
  52.     if [ ! -z "`which cpio`" ]; then
  53.         ( cd "$CHROOT_DIR"
  54.           echo "./$1" | \
  55.             cpio -pdu "$TARGET_DIR" )
  56.     else
  57.       mkdir -p "$TARGET_DIR/$1"
  58.     fi         
  59.   fi
  60. }
  61. if [ -z "$BUILTIN_ACITON" ]; then
  62.      if [ -z "$TARGET_DIR" ]; then
  63.       ACTION_MESSAGE="removing"
  64.     else
  65.       ACTION_MESSAGE="moving"
  66.     fi
  67. else
  68.   case "$BUILTIN_ACITON" in
  69.   rm) ACTION_MESSAGE="removing"; ;;
  70.   mv) ACTION_MESSAGE="moving"; ;;
  71.   cp) ACTION_MESSAGE="copying"; ;;
  72.   esac
  73. fi
  74. function builtin_action(){
  75.   local a_action
  76.   if [ -z "$BUILTIN_ACITON" ]; then
  77.     if [ -z "$TARGET_DIR" ]; then
  78.       a_action="rm"
  79.     else
  80.       a_action="mv"
  81.     fi
  82.   else
  83.     a_action="$BUILTIN_ACITON"
  84.   fi
  85.       case "$a_action" in
  86.       rm)
  87.         rm $CHROOT_DIR$1
  88.         ;;
  89.       mv)
  90.         mk_parrent_dir "$1"
  91.         mv "$CHROOT_DIR$1" "$TARGET_DIR$1"
  92.         ;;
  93.       cp) #TODO: use cpio instead of cp.
  94.         if [ ! -z "`which cpio`" ]; then
  95.          ( cd "$CHROOT_DIR"
  96.               echo "./$1" | \
  97.                 cpio -pdu "$TARGET_DIR" )    
  98.         else
  99.           cp -a "$CHROOT_DIR$1" "$TARGET_DIR$1"
  100.         fi
  101.         ;;
  102.       esac
  103.  
  104. }
  105. #[ -f $D/$PKG ] && rm $D/$PKG
  106. function d_action(){
  107.   local a_action
  108.   if [ -z "$BUILTIN_ACITON" ]; then
  109.     if [ -z "$TARGET_DIR" ]; then
  110.       a_action="rm"
  111.     else
  112.       a_action="mv"
  113.     fi
  114.   else
  115.     a_action="$BUILTIN_ACITON"
  116.   fi
  117.       case "$a_action" in
  118.       rm)
  119.         rm $D/$1
  120.         ;;
  121.       mv)
  122.         #mk_parrent_dir "$1"
  123.         mv "$D/$1" "$D2/$1"
  124.         ;;
  125.       cp) #TODO: use cpio instead of cp.
  126.         if [ ! -z "`which cpio`" ]; then
  127.          ( cd "$CHROOT_DIR$D"
  128.               echo "./$1" | \
  129.                 cpio -pdu "$TARGET_DIR$D2" )    
  130.         else
  131.           cp -a "$D/$1" "$D2/$1"
  132.         fi
  133.         ;;
  134.       esac
  135.       move-inst-pkgs-metadata "$1"
  136.       write_DISTRO_PKGS_SPECS_item "$1"
  137. }
  138. function write_DISTRO_PKGS_SPECS_hdr(){
  139.   cat "$distro_spec_file" | sed -nr '{p}; /^PKGS_SPECS_TABLE=/ {q};' > "$distro_spec_file2"
  140. }  
  141. function write_DISTRO_PKGS_SPECS_footer(){
  142.   (echo "'"; echo) >> "$distro_spec_file2"
  143. }  
  144. function write_DISTRO_PKGS_SPECS_item(){    
  145.     #Spec_rel=/var/packages/DISTRO_PKGS_SPECS
  146.     #Spec2_rel=/var/packages/DISTRO_PKGS_SPECS
  147.     #distro_spec_file="$CHROOT_DIR$Spec_rel"
  148.     #distro_spec_file2="$TARGET_DIR$Spec2_rel" 
  149.   local a_action
  150.   [ -z "$BUILTIN_ACITON_SPECS" ] &&  BUILTIN_ACITON_SPECS="$BUILTIN_ACITON"
  151.   if [ -z "$BUILTIN_ACITON_SPECS" ]; then
  152.     if [ -z "$TARGET_DIR" ]; then
  153.       a_action="rm"
  154.     else
  155.       a_action="mv"
  156.     fi
  157.   else
  158.     a_action="$BUILTIN_ACITON"
  159.   fi
  160.       cat "$distro_spec_file" | grep -E '^yes\|'$1'\|' | head -n1 >> "$distro_spec_file2"
  161.       case "$a_action" in
  162.       #rm)
  163.       #  rm $D/$1
  164.       #  ;;
  165.       mv)
  166.         case "$mv_spec_action" in
  167.         delete)
  168.           sed -ir "\%^yes|$1|%d" "$distro_spec_file"
  169.           ;;
  170.         switch)
  171.           sed -ir "\%^yes|$1|% {s%^yes%no%g}" "$distro_spec_file"
  172.           ;;
  173.         esac
  174.         ;;
  175.       esac    
  176. }
  177.  
  178. function move-inst-pkgs-metadata(){
  179.   line="$(cat "$distro_spec_file" | grep -E 'yes\|'$1'\|' | head -n1 )"
  180.  
  181.   if [ ${#line} -gt 0  ]; then
  182.       #[[ ! "$line" = 'yes|'*'|'*'|'* ]] && continue
  183.       pkg_grp="$1" #"$(echo "$line" | cut -f2 -d'|')"
  184.       pkgs_str="$(echo "$line" | cut -f3 -d'|')"
  185.       pkgs=(${pkgs_str//,/" "})
  186.       #cd "$CHROOT_DIR"/var/packages/builtin-breakout
  187.       [ ${#pkgs[@]} -eq 0 ] && pkgs=($1)
  188.        for a_pkg in "${pkgs[@]}"; do
  189.           AWK_fn='BEGIN {FS="|"}
  190.     $2 == PKG {print $0}'
  191.           line2="$(cat "$D_inst_pkgs" | awk -v PKG="$a_pkg" "$AWK_fn" | head -n1 )"
  192.           if [ ${#line2} -gt 0  ]; then #e.g. devX packages may return an empty result in the main sfs
  193.             pkg_key="$(echo "$line2" | cut -f1 -d'|')"
  194.             echo "$line2" >> "$D2_inst_pkgs"
  195.             case "$inst_pkgs_action" in
  196.             delete)
  197.               ##TODO maybe delete via AWK. It might be more reliable.
  198.               sed -ir '\%^'$pkg_key'|%d' "$D_inst_pkgs" #TODO: maybe we don't always want to delete this.
  199.               ;;
  200.             esac              
  201.           fi
  202.        done
  203.   fi
  204. }
  205.  
  206. #echo CHROOT_DIR="CHROOT_DIR=$CHROOT_DIR"
  207. #set +x
  208. #read -p "Press Enter to continue"
  209. #set -x
  210.  
  211. [ "`whoami`" != "root" ] && exec sudo -A ${0} ${@} #110505
  212.  
  213. export TEXTDOMAIN=remove_builtin
  214. export OUTPUT_CHARSET=UTF-8
  215. eval_gettext () {
  216.   local myMESSAGE=$(gettext "$1")
  217.   eval echo \"$myMESSAGE\"
  218. }
  219.  
  220. Yes_lbl="$(gettext 'Yes')"
  221. No_lbl="$(gettext 'No')"
  222.  
  223. MSG1="`gettext \"Simple utility to 'delete' packages that are builtin\nto the read-only .sfs file (Squashfs filesystem)\"`"
  224. FIXMENU='no'
  225.  
  226. #D=$CHROOT_DIR/root/.packages/builtin_files
  227. #D="$(realpath "$D")"
  228. #[ ! -d "$D" ] && D=$CHROOT_DIR/var/packages/builtin_files
  229.  
  230. #===========================================================
  231. process_remove_builtin_list() {
  232.     # count
  233.     #set -x
  234.     local pkglist="$1" COUNT=$(wc -l < "$1") COUNTER=0
  235.     mkdir -p /tmp/deb-build/
  236.     #exec 15<> /tmp/deb-build/fd_15
  237.    
  238.    
  239.     # process
  240.     while read -r p; do
  241.         echo "Processing: $p"
  242.         p=${p%%#*}; eval set -- $p; p="$1"
  243.         [ -z $p ] && continue
  244.        
  245.         # commands
  246.         COUNTER=$((COUNTER+1))     
  247.         echo $COUNTER of $COUNT "$@"       
  248.         case $p in
  249.             #%exit) break ;;
  250.             #%dpkg)
  251.             #   echo Switching to dpkg
  252.             #   [ -z "$WITHOUT_DPKG" ] && do_install() { dpkg_install; } ||
  253.             #   do_install() { dpkgchroot_install; } ;;
  254.             #%dpkgchroot)
  255.             #   echo Switching to dpkgchroot
  256.             #   do_install() { dpkgchroot_install; } ;;
  257.             #%bootstrap)
  258.             #   echo Switching to bootstrap
  259.             #   do_install() { bootstrap_install; } ;;
  260.             #%bblinks)
  261.             #   shift # $1-nousr
  262.             #   echo Installing busybox symlinks ...
  263.             #   install_bb_links "$@" ;;
  264.             #%makesfs)
  265.             #    set -x
  266.             #    #unbind_ALL
  267.             #    wait_until_unmounted || exit
  268.             #   shift # $1-output $@-squashfs params
  269.             #   echo Creating $1 ...
  270.             #   make_sfs "$@" ;;
  271.             #%remove)
  272.             #   shift # $1-pkgname, pkgname, ...
  273.             #   remove_pkg "$@" ;;
  274.             #%addbase)
  275.             #   echo Installing base rootfs ...
  276.             #   [ "$BASE_ARCH_PATH" ] && install_from_dir $BASE_ARCH_PATH base-arch core               
  277.             #   install_from_dir $BASE_CODE_PATH base core ;;
  278.             #%addpkg)
  279.             #    set -x
  280.             #   shift # $1-pkgname, pkgname ...
  281.             #   forced=0
  282.             #   PKGSECTION="optional"
  283.             #   while [ "$1" ]; do
  284.             #       case "$1" in
  285.             #       --forced)
  286.             #         forced=1
  287.             #         ;;
  288.             #       --category=*)
  289.             #         PKGSECTION="${1#'--category='}";
  290.             #         ;;
  291.             #       *)
  292.             #         ! [ -d $EXTRAPKG_PATH/$1 ] && shift && continue
  293.             #         echo Installing extra package "$1"  ...
  294.             #         if [ $forced -eq 1 ]; then
  295.             #           install_from_dir $EXTRAPKG_PATH/$1 $1 $PKGSECTION force
  296.             #         else
  297.             #           install_from_dir $EXTRAPKG_PATH/$1 $1 $PKGSECTION
  298.             #         fi
  299.             #         ;;
  300.             #       esac
  301.             #       shift
  302.             #   done
  303.             #   set +x
  304.             #    ;;
  305.             #%importpkg)
  306.             #  shift
  307.             #  set -x
  308.             #  import_from_dir $EXTRAPKG_PATH/$1
  309.             #  set +x
  310.             #    ;;
  311.             #%dummy)
  312.             #    set -x
  313.             #   shift # $1-pkgname, pkgname ...
  314.             #   install_dummy "$@"
  315.             #   set +x
  316.             #   ;;
  317.             #%dpkg_configure)
  318.             #   shift # $@-configure flags
  319.             #   DEBIAN_FRONTEND=noninteractive chroot $CHROOT_DIR /usr/bin/dpkg --configure "$@" ;;
  320.             #%lock)
  321.             #   shift # $1-pkgname, pkgname ...
  322.             #   lock_pkg "$@" ;;
  323.             #%cutdown)
  324.             #    set -x
  325.             #   shift # $@ various cutdown options
  326.             #   cutdown "$@" ;;
  327.             #%import)
  328.             #   shift # $@ dirs to import
  329.             #   import_dir "$@" ;;
  330.             #  
  331.             #### filesystem operations
  332.             #%symlink)
  333.             #   shift # $1 source $2 target
  334.             #   rm -f $CHROOT_DIR/$2
  335.             #   ln -s $1 $CHROOT_DIR/$2
  336.             #   ;;
  337.             #%rm)
  338.             #   shift # $@ files to remove
  339.             #   while [ "$1" ]; do
  340.             #       rm -rf $CHROOT_DIR/$1
  341.             #       shift
  342.             #   done
  343.             #   ;;
  344.             #%mkdir)
  345.             #   shift # $@ dirs to make
  346.             #   while [ "$1" ]; do
  347.             #       mkdir -p $CHROOT_DIR/$1
  348.             #       shift
  349.             #   done
  350.             #   ;;
  351.             #%touch)
  352.             #   shift # $@ files to create
  353.             #   while [ "$1" ]; do
  354.             #       > $CHROOT_DIR/$1
  355.             #       shift
  356.             #   done
  357.             #   ;;
  358.             #%chroot)
  359.             #   shift # $@ commands
  360.             #   chroot $CHROOT_DIR "$@"
  361.             #   ;;
  362.             #
  363.             # anything else - install package
  364.             *)
  365.                 #get_pkg_info $p
  366.                 #[ -z "$PKG" ] && echo Cannot find ${p}. && continue
  367.                 #download_pkg || { echo Download $p failed. && exit 1; }
  368.                 #install_pkg "$2" || { echo Installation of $p failed. && exit 1; }
  369.                 remove_builtin_pkg "$p"        
  370.                 ;;
  371.         esac       
  372.     done < "$pkglist" #< $pkglist
  373.     #exec 15>&-
  374.     #rm /tmp/deb-build/fd_14
  375.     return 0
  376. }
  377.  
  378. function remove_builtin_pkg() {
  379.     PKG="$1"
  380.     local NO_PKG=false
  381.     if [ -z "$PKG" ] ; then
  382.         return 1
  383.     fi
  384.     if [ ! -f $D/$PKG ] ; then
  385.         echo "$PKG does not exist.." >&2
  386.         #return 1 #TODO: we need alternative to "return 1" here
  387.         NO_PKG=true
  388.     else
  389.       echo "$ACTION_MESSAGE $PKG"
  390.       if grep -q '\.desktop$' ${D}/${PKG}; then
  391.         [ "$REMOVE_BUILTIN_fixmenus" = yes ] && FIXMENU='yes' #101222
  392.       fi
  393.       (
  394.         while read file
  395.         do
  396.             #rm "$CHROOT_DIR$file" 1>&2
  397.             builtin_action "$file" 1>&2
  398.             echo "${file%/*}" >&2 #get dir
  399.         done < $D/$PKG
  400.       ) > /tmp/remove_builtin_dirs$$
  401.       #-- remove empty directories
  402.       sort -ur /tmp/remove_builtin_dirs$$ | \
  403.       while read dir
  404.       do
  405.         while [ 1 ] ; do
  406.             rmdir "$dir" 2>/dev/null
  407.             dir=${dir%/*} #dirname $dir
  408.             if [ -z "$dir" ] ; then
  409.                 break
  410.             fi
  411.         done
  412.       done
  413.     #--
  414.   fi
  415.   PKGFILES="$D/$PKG"
  416.  
  417.   if [ "$CHROOT_UPDATES" = yes ] && [ "$NO_PKG" = false ]; then
  418.     if [ "`grep '/usr/share/glib-2.0/schemas' $PKGFILES`" != "" ];then
  419.      [ -e /usr/bin/glib-compile-schemas ] && glib-compile-schemas /usr/share/glib-2.0/schemas
  420.     fi
  421.    
  422.     if [ "`grep '/usr/lib/gio/modules' $PKGFILES`" != "" ];then
  423.      [ -e /usr/bin/gio-querymodules ] && gio-querymodules /usr/lib/gio/modules
  424.     fi
  425.    
  426.     if [ "`grep ''\.desktop$'' $PKGFILES`" != "" ];then
  427.      rm -f "$CHROOT_DIR/usr/share/applications/mimeinfo.cache"
  428.      [ -e /usr/bin/update-desktop-database ] && update-desktop-database /usr/share/applications
  429.     fi
  430.    
  431.     if [ "`grep '/usr/share/mime' $PKGFILES`" != "" ];then
  432.      [ -e /usr/bin/update-mime-database ] && update-mime-database /usr/share/mime
  433.     fi
  434.    
  435.     if [ "`grep '/usr/share/icons/hicolor' $PKGFILES`" != "" ];then
  436.      [ -e /usr/bin/gtk-update-icon-cache ] && gtk-update-icon-cache /usr/share/icons/hicolor
  437.     fi
  438.    
  439.     if [ "`grep '/usr/lib/gdk-pixbuf' $PKGFILES`" != "" ];then
  440.      gdk-pixbuf-query-loaders --update-cache
  441.     fi
  442.    
  443.     if [ "`grep '/usr/lib/gconv' $PKGFILES`" != "" ];then
  444.      iconvconfig
  445.     fi
  446.    
  447.     if [ "`grep '/usr/lib/pango' $PKGFILES`" != "" ];then
  448.      pango-querymodules --update-cache
  449.     fi
  450.  
  451.  
  452.     for gtkver in '1.0' '2.0' '3.0'
  453.     do
  454.      if [ "`grep "/usr/lib/gtk-$gtkver" $PKGFILES | grep "/immodules"`" != "" ];then
  455.       [ -e /usr/bin/gtk-query-immodules-$gtkver ] && gtk-query-immodules-$gtkver --update-cache
  456.      fi
  457.     done
  458.    
  459.     if [ "`grep '/usr/share/fonts' $PKGFILES`" != "" ];then
  460.      fc-cache -f
  461.     fi
  462.    
  463.     KERNVER="$(uname -r)"
  464.    
  465.     if [ "`grep "/lib/modules/$KERNVER" $PKGFILES`" != "" ];then
  466.      depmod -a
  467.     fi
  468.   fi   
  469.    
  470.   #[ -f $D/$PKG ] && rm $D/$PKG
  471.   d_action "$PKG"
  472.   [ "$NO_PKG" = false ] && rm /tmp/remove_builtin_dirs$$
  473.   sed -i "\%|${PKG}|%d" "$CHROOT_DIR/root/.packages/woof-installed-packages"
  474.   line="$(cat "$CHROOT_DIR/root/.packages/DISTRO_PKGS_SPECS" | grep "^yes|${PKG}|")"
  475.   pkgs_str=$(echo $line | cut -d'|' -f3)
  476.   pkgs=(${pkgs_str//,/" "})
  477.   for a_pkg in "${pkgs[@]}"; do
  478.     sed -i "\%|${a_pkg}|%d" "$CHROOT_DIR/root/.packages/woof-installed-packages"
  479.   done
  480.   return 0
  481. }
  482.  
  483. fix_menus() {
  484.     if [ "$FIXMENU" = "yes" ];then #101222
  485.         fixmenus
  486.         if [ "$DISPLAY" ] ; then
  487.             if [ "`pidof jwm`" != "" ] ; then
  488.                 jwm -reload || jwm -restart
  489.                 sleep 1
  490.             fi
  491.         fi
  492.     fi
  493. }
  494.  
  495. #===========================================================
  496. #                   COMMAND LINE
  497. #============================================================
  498.  
  499. case $1 in
  500.   -l|-list|--list)
  501.     ls -1 $D
  502.     exit ;;
  503.   --pkg-list)
  504.     shift
  505.     write_DISTRO_PKGS_SPECS_hdr
  506.     process_remove_builtin_list "$@"
  507.     write_DISTRO_PKGS_SPECS_footer
  508.     exit ;;    
  509. esac
  510.  
  511. if [ "$1" ] ; then
  512.     for i in $@
  513.     do
  514.         remove_builtin_pkg $i
  515.     done
  516.     [ "$REMOVE_BUILTIN_fixmenus" = yes ] && fix_menus
  517.     exit $?
  518. fi
  519.  
  520. #===========================================================
  521. #                    GUI
  522. #============================================================
  523.  
  524.  
  525. if [ REMOVE_BUILTIN_use_gui = yes ]; then
  526.     PKGS=`ls -1 $D`
  527.     DIALOG="dialog --aspect 10"
  528.     MENUOPT="--checklist"
  529.     REP=/tmp/$(basename $0).txt
  530.    
  531.     if [ "$DISPLAY" ] ; then
  532.         DIALOG=Xdialog
  533.     fi
  534.    
  535.     for i in $PKGS ; do
  536.         CHOICES="$CHOICES $i . off"
  537.     done
  538.    
  539.     PKG=`$DIALOG --stdout --backtitle "${MSG1}" --title "$(gettext 'Remove builtin packages')" --help "$(gettext "In all modes of running Puppy, other than a full hard-drive installation,\n
  540.     all of the Puppy files are in a compressed read-only file named 'puppy.sfs'\n
  541.     or 'wary_500.sfs' (or some similar name). So you can't actually delete these\n
  542.     files. However, if you want to remaster the live-CD to create your own custom\n
  543.     Puppy (see Setup menu), you can use this little program to 'pretend' to delete\n
  544.     them -- and they will really be gone in the remastered CD. So, for example if\n
  545.     you remove SeaMonkey, it will be gone in the remastered CD thus reducing the\n
  546.     size of the .iso live-CD file.\n\n
  547.     Technical note: the lists of builtin files is at /root/.packages/builtin_files,\n
  548.     the list of builtin pkgs is in /root/.packages/woof-installed-packages.")" \
  549.     $MENUOPT "$(gettext 'Select packages to remove (be careful):')" 0 0 0 $CHOICES`
  550.     if [ ! "$PKG" ];then
  551.         exit
  552.     fi
  553.    
  554.     PKG=$(echo "$PKG" | sed 's%/% %g')
  555.     /usr/lib/gtkdialog/box_yesno --warning "Remove builtin pkg(s)" \
  556.         "Please confirm that you want to delete the following pkg(s):" "" \
  557.         "<b>$PKG</b>" "" "This can be a dangerous operation if you don't know what you're doing. However some more confirmation dialogs may appear..."
  558.     if [ $? -ne 0 ] ; then
  559.         exit
  560.     fi
  561.    
  562.     #--
  563.     REMOVED_PKGS=''
  564.     #--
  565.    
  566.     for i in $PKG
  567.     do
  568.         DEP_OF=`grep "+${i}" "$CHROOT_DIR/root/.packages/woof-installed-packages" |cut -d "|" -f 2 |tr "\n" " "`
  569.         if [ "$DEP_OF" ] ; then
  570.             DESCR="`grep "|${i}|" "$CHROOT_DIR/root/.packages/woof-installed-packages" |cut -d "|" -f 10`"
  571.             Xdialog --left --screen-center --backtitle "$(gettext 'Confirm that you want to delete') '${i}'" --title "$(gettext 'Remove builtin packages')" --ok-label "$Yes_lbl" --cancel-label "$No_lbl" --yesno "$(gettext 'Description of package:')\n
  572.     ${DESCR}\n
  573.     $(gettext 'For information only, these are dependencies of') '${i}':\n
  574.     `grep "|${i}|" "$CHROOT_DIR/root/.packages/woof-installed-packages" |cut -d "|" -f 9 | sed -e 's%^+%%' -e 's%,+% %g'`
  575.     \n
  576.     `eval_gettext \"Warning, removing '\\\${i}' _may_ break the following packages:\"`
  577.     $DEP_OF
  578.     \n
  579.     $(gettext 'Continue?')" 0 0
  580.             if ! [ $? -eq 0 ];then
  581.                 continue
  582.             fi
  583.         fi
  584.         remove_builtin_pkg $i || continue
  585.         REMOVED_PKGS="$REMOVED_PKGS $i"
  586.     done
  587. fi
  588.  
  589. [ "$REMOVE_BUILTIN_fixmenus" = yes ] && fix_menus
  590.  
  591. if [ "$REMOVE_BUILTIN_use_gui" = yes ]; then
  592.     if [ "${REMOVED_PKGS}" ] ; then
  593.         /usr/lib/gtkdialog/box_ok "Remove builtin pkg(s)" info  \
  594.             "The following packages were removed:" "" "<b>${REMOVED_PKGS}</b>"
  595.     fi
  596. fi
  597. ### END ###
  598.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement