tazpkg rev 30

Improve 'tazpkg remove' : checks dependancies
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Dec 26 17:35:56 2007 +0000 (2007-12-26)
parents 5e76ae2196ae
children 5f292ead3dc7
files tazpkg
line diff
     1.1 --- a/tazpkg	Wed Dec 26 17:12:39 2007 +0000
     1.2 +++ b/tazpkg	Wed Dec 26 17:35:56 2007 +0000
     1.3 @@ -608,9 +608,23 @@
     1.4  			echo -e "\n$PACKAGE is not installed.\n"
     1.5  			exit 0
     1.6  		else
     1.7 -			. $INSTALLED/$PACKAGE/receipt
     1.8 +			ALTERED=""
     1.9 +			THE_PACKAGE=$PACKAGE	# altered by receipt
    1.10 +			for i in $(cd $INSTALLED ; ls); do
    1.11 +				. $INSTALLED/$i/receipt
    1.12 +				case " $(echo $DEPENDS) " in
    1.13 +				*\ $THE_PACKAGE\ *) ALTERED="$ALTERED $i";;
    1.14 +				esac
    1.15 +			done
    1.16 +			. $INSTALLED/$THE_PACKAGE/receipt
    1.17  		fi
    1.18  		echo ""
    1.19 +		if [ -n "$ALTERED" ]; then
    1.20 +			echo "The following packages depend on $PACKAGE :"
    1.21 +			for i in $ALTERED; do
    1.22 +				echo "  $i"
    1.23 +			done
    1.24 +		fi
    1.25  		echo "Remove $PACKAGE ($VERSION) ?"
    1.26  		echo -n "Please confirm uninstallation (y/N) : "; read anser
    1.27  		if [ "$anser" = "y" ]; then
    1.28 @@ -627,6 +641,15 @@
    1.29  			echo -n "Removing package receipt..."
    1.30  			rm -rf $INSTALLED/$PACKAGE
    1.31  			status
    1.32 +			if [ -n "$ALTERED" ]; then
    1.33 +				echo -n "Remove packages depending on $PACKAGE"
    1.34 +				echo -n " (y/N) ? "; read anser
    1.35 +				if [ "$anser" = "y" ]; then
    1.36 +					for i in $ALTERED; do
    1.37 +						tazpkg remove $i
    1.38 +					done
    1.39 +				fi
    1.40 +			fi
    1.41  		else
    1.42  			echo ""
    1.43  			echo "Uninstallation of $PACKAGE cancelled."