spk annotate spk-rm @ rev 161

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 12:27:19 2019 +0100 (2019-02-26)
parents 365a7811faf7
children
rev   line source
pankso@8 1 #!/bin/sh
pankso@8 2 #
pankso@8 3 # Spk-rm - Remove SliTaz packages. Read the README before adding or
paul@131 4 # modifying any code in spk!
pankso@8 5 #
pankso@8 6 # Copyright (C) SliTaz GNU/Linux - BSD License
pankso@8 7 # Author: See AUTHORS files
pankso@8 8 #
pankso@19 9 . /usr/lib/slitaz/libspk.sh
pankso@8 10
pankso@8 11 #
pankso@8 12 # Functions
pankso@8 13 #
pankso@8 14
pankso@8 15 # Help and usage
pankso@8 16 usage() {
pankso@8 17 name=$(basename $0)
pankso@8 18 cat << EOT
pankso@8 19
pankso@10 20 $(boldify $(gettext "Usage:")) $name [packages|--options]
pankso@8 21
mojo@79 22 $(gettext "Remove installed packages and their dependencies")
pankso@15 23
pankso@8 24 $(boldify $(gettext "Options:"))
pankso@13 25 --confirm $(gettext "Ask before removing any packages")
pankso@30 26 --root= $(gettext "Set the root file system path")
pankso@13 27 --verbose $(gettext "Be more verbose when removing files")
pankso@8 28
pankso@8 29 $(boldify $(gettext "Examples:"))
pankso@13 30 $name package1 package2 packagesN
pankso@13 31 $name package1 --confirm --verbose
pankso@8 32
pankso@8 33 EOT
pankso@8 34 exit 0
pankso@8 35 }
pankso@8 36
pankso@13 37 # Remove a single package
pankso@13 38 remove() {
meshca@103 39 local altered
meshca@70 40 boldify $(gettext "Removing") $pkg
pankso@41 41 separator
pankso@41 42 [ "$verbose" ] && echo "DB: $installed"
pankso@41 43
pankso@41 44 # Reverse deps
pankso@41 45 for i in $(ls $installed); do
meshca@104 46 is_package_installed $i || continue
pankso@13 47 unset_receipt
meshca@103 48 source_receipt $installed/$i/receipt
meshca@70 49 case " $DEPENDS " in
pankso@13 50 *\ $pkg\ *) altered="$altered $i" ;;
pankso@13 51 esac
pankso@13 52 done
pankso@13 53 unset_receipt
meshca@103 54 source_receipt $installed/$pkg/receipt
pankso@13 55
pankso@39 56 if [ "$altered" ]; then
meshca@69 57 gettext "The following packages depend on"; colorize 31 " $pkg"
pankso@13 58 for i in $altered; do
meshca@69 59 echo " $(colorize 32 $i)"
pankso@13 60 done
pankso@13 61 fi
pankso@13 62
pankso@39 63 # Reverse deps are displayed, confirm uninstall.
pankso@39 64 if [ "$confirm" ]; then
meshca@103 65 echo $(gettext "Confirm uninstallation of:") " $pkg"
pankso@39 66 if ! confirm; then
pankso@39 67 gettext "Uninstallation cancelled"
meshca@103 68 newline && continue
pankso@13 69 fi
pankso@13 70 fi
pankso@13 71
pankso@13 72 # Handle pre_remove
pankso@17 73 if grep -q ^pre_remove $installed/$PACKAGE/receipt; then
pankso@13 74 pre_remove $root
pankso@13 75 fi
pankso@13 76
pankso@13 77 # Remove all files
pankso@41 78 fileslist=$installed/$PACKAGE/files.list
pankso@78 79 gettext "Installed files:"
pankso@41 80 echo -n " $(wc -l $fileslist | cut -d " " -f 1)"
pankso@13 81 [ "$verbose" ] && newline
pankso@41 82 for file in $(cat $fileslist)
pankso@40 83 do
pankso@40 84 if [ "$verbose" ]; then
pankso@40 85 gettext "Removing:"; echo -n " ${root}${file}"
pankso@40 86 fi
pankso@40 87 remove_file ${root}${file}
pankso@40 88 [ "$verbose" ] && status
pankso@40 89 done
pankso@17 90 [ ! "$verbose" ] && status
pankso@13 91
pankso@13 92 # Handle post_remove
pankso@17 93 if grep -q ^post_remove $installed/$PACKAGE/receipt; then
pankso@13 94 post_remove $root
pankso@13 95 fi
pankso@13 96
pankso@13 97 # Remove package receipt.
pankso@13 98 gettext "Removing package receipt..."
pankso@17 99 rm -rf $installed/$PACKAGE
pankso@51 100 sed -i "/$PACKAGE-${VERSION}${EXTRAVERSION}.tazpkg/"d $installed.$SUM
pankso@13 101 status
pankso@13 102
pankso@53 103 separator
pankso@39 104
pankso@39 105 # Do we have packages depending on $pkg to remove ?
pankso@39 106 if [ "$altered" ]; then
pankso@13 107 if [ "$confirm" ]; then
meshca@103 108 echo $(gettext "Removing packages depending on:") $pkg
pankso@39 109 if ! confirm; then
pankso@40 110 gettext "Keeping packages..."; newline
pankso@39 111 newline && continue
pankso@39 112 fi
pankso@39 113 fi
pankso@39 114 for i in $altered; do
pankso@39 115 if [ -d "$installed/$i" ]; then
pankso@39 116 spk-rm $i --root=$root
pankso@39 117 fi
pankso@39 118 done
pankso@53 119 else
pankso@53 120 newline
pankso@39 121 fi
pankso@13 122 }
pankso@13 123
pankso@8 124 #
pankso@10 125 # Commands and exit
pankso@8 126 #
pankso@8 127
pankso@8 128 case "$1" in
pankso@15 129 ""|*usage|*help) usage ;;
pankso@8 130 esac
pankso@10 131
pankso@10 132 #
pankso@10 133 # Handle packages
pankso@10 134 #
pankso@10 135
pankso@19 136 : ${count=0}
pankso@10 137 check_root
pankso@10 138
pankso@10 139 for pkg in $@
pankso@10 140 do
pankso@13 141 # Skip options
pankso@13 142 case "$pkg" in
pankso@13 143 --*) continue
pankso@13 144 esac
pankso@13 145 # Be sure package is installed
meshca@104 146 if ! is_package_installed $pkg; then
meshca@71 147 echo -n "$(boldify $pkg) "
pankso@13 148 gettext "package is not installed"; newline
pankso@13 149 continue
pankso@13 150 fi
pankso@10 151 count=$(($count + 1))
pascal@161 152 [ "$count" = 1 ] && newline
pankso@13 153 remove
pankso@39 154 log "Removed package: $pkg"
pankso@10 155 done
pankso@56 156
pankso@56 157 # Show all new counted packages in verbose mode
pankso@56 158 if [ "$verbose" ]; then
meshca@69 159 gettext "Removed packages:"; colorize 34 " $count"
pankso@56 160 fi
pankso@56 161
pankso@8 162 exit 0