spk rev 39

spk-rm handle modifiers, small changes and fixes
author Christophe Lincoln <pankso@slitaz.org>
date Wed May 16 01:19:38 2012 +0200 (2012-05-16)
parents 80b6f3e3bb6d
children 0a61f00e2373
files lib/libspk.sh spk-add spk-rm
line diff
     1.1 --- a/lib/libspk.sh	Tue May 15 23:58:01 2012 +0200
     1.2 +++ b/lib/libspk.sh	Wed May 16 01:19:38 2012 +0200
     1.3 @@ -148,15 +148,11 @@
     1.4  			gettext "Missing:"; echo " $pkg"
     1.5  			deps=$(($deps+1))
     1.6  		elif [ ! -f "$installed/$pkg/receipt" ]; then
     1.7 -			gettext "WARNING Dependency loop between \$package and \$pkg."; newline
     1.8 +			gettext "WARNING: Dependency loop between \$package and \$pkg."; newline
     1.9  		fi
    1.10  	done
    1.11 -	if [ $deps -gt 0 ]; then
    1.12 -		echo $deps $(gettext "missing package(s) to install.")
    1.13 -	fi
    1.14  
    1.15 -	echo -n "$(colorize "$deps" 34) "
    1.16 -	gettext "missing dep(s) to install..."; newline
    1.17 +	gettext "Missing dependendcies:"; echo " $(colorize "$deps" 34)"
    1.18  
    1.19  	# Return true if missing deps
    1.20  	[ "$deps" != "0" ]
     2.1 --- a/spk-add	Tue May 15 23:58:01 2012 +0200
     2.2 +++ b/spk-add	Wed May 16 01:19:38 2012 +0200
     2.3 @@ -279,7 +279,8 @@
     2.4  
     2.5  	cd $CACHE_DIR > /dev/null
     2.6  	if [ -f "$package_full.tazpkg" ]; then
     2.7 -		echo -n "$(colorize "$package_full" 34)"; echo ": $CACHE_DIR"
     2.8 +		[ "$count" == 1 ] && newline
     2.9 +		gettext "Using cache:"; echo " $(colorize "$package_full" 34)"
    2.10  		# Check package download was finished
    2.11  		if ! tail -c 2k $package_full.tazpkg | fgrep -q 00000000TRAILER; then
    2.12  			eval_gettext "Continuing \$package_name download"; newline
    2.13 @@ -345,6 +346,7 @@
    2.14  # Handle packages: package package.tazpkg ... packageN packageN.tazpkg
    2.15  #
    2.16  
    2.17 +count=0
    2.18  check_root
    2.19  
    2.20  for pkg in $@
    2.21 @@ -358,6 +360,7 @@
    2.22  		--*) continue ;;
    2.23  		*)
    2.24  			[ "$forced" ] || check_installed $pkg
    2.25 +			count=$(($count + 1))
    2.26  			install_web $pkg ;;
    2.27  	esac
    2.28  done
     3.1 --- a/spk-rm	Tue May 15 23:58:01 2012 +0200
     3.2 +++ b/spk-rm	Wed May 16 01:19:38 2012 +0200
     3.3 @@ -50,7 +50,8 @@
     3.4  # Remove a single package
     3.5  remove() {
     3.6  	altered=""
     3.7 -	for i in $(cd $installed ; ls); do
     3.8 +	for i in $(ls $installed)
     3.9 +	do
    3.10  		[ -f $installed/$i/receipt ] || continue
    3.11  		unset_receipt
    3.12  		. $installed/$i/receipt
    3.13 @@ -61,35 +62,21 @@
    3.14  	unset_receipt
    3.15  	. $installed/$pkg/receipt
    3.16  
    3.17 -	if [ -n "$altered" ]; then
    3.18 -		gettext "The following packages depend on"; boldify " $PACKAGE:"
    3.19 +	# Reverse dep.
    3.20 +	if [ "$altered" ]; then
    3.21 +		gettext "The following packages depend on"; boldify " $PACKAGE"
    3.22  		for i in $altered; do
    3.23 -			echo "  $i"
    3.24 -		done
    3.25 -	fi
    3.26 -	refresh=$(cd $installed ; grep -sl ^$PACKAGE$ */modifiers)
    3.27 -	if [ -n "$refresh" ]; then
    3.28 -		gettext "The following packages have been modified by"
    3.29 -		boldify " $PACKAGE:"
    3.30 -		for i in $refresh; do
    3.31 -			echo "  ${i%/modifiers}"
    3.32 +			echo "    $i"
    3.33  		done
    3.34  	fi
    3.35  
    3.36 -	# Do we have packages depending on $pkg ?
    3.37 -	if [ "$altered" ]; then
    3.38 -		if [ "$confirm" ]; then
    3.39 -			gettext "Remove packages depending on:"; echo -n " $PACKAGE"
    3.40 -			if ! confirm; then
    3.41 -				gettext "Keeping packages depending on:"; echo " $PACKAGE"
    3.42 -				echo -e "\n" && continue
    3.43 -			fi
    3.44 +	# Reverse deps are displayed, confirm uninstall.
    3.45 +	if [ "$confirm" ]; then
    3.46 +		gettext "Confirm uninstallation of:"; echo -n " $pkg"
    3.47 +		if ! confirm; then
    3.48 +			gettext "Uninstallation cancelled"
    3.49 +			echo -e "\n" && continue
    3.50  		fi
    3.51 -		for i in $altered; do
    3.52 -			if [ -d "$installed/$i" ]; then
    3.53 -				spk-rm $i --root=$root
    3.54 -			fi
    3.55 -		done
    3.56  	fi
    3.57  
    3.58  	# Handle pre_remove
    3.59 @@ -135,21 +122,42 @@
    3.60  	status
    3.61  	sed -i "/ $PACKAGE-${VERSION}${EXTRAVERSION}$/d" $pkgsmd5 2> /dev/null
    3.62  
    3.63 -	# Mofified ?
    3.64 -	if [ "$refresh" ]; then
    3.65 +	separator && newline
    3.66 +
    3.67 +	# Do we have packages depending on $pkg to remove ?
    3.68 +	if [ "$altered" ]; then
    3.69  		if [ "$confirm" ]; then
    3.70 -			gettext "Reinstall packages modified by:"; echo " $PACKAGE"
    3.71 +			gettext "Remove packages depending on:"; echo -n " $PACKAGE"
    3.72 +			if ! confirm; then
    3.73 +				gettext "Keeping packages depending on:"; echo " $PACKAGE"
    3.74 +				newline && continue
    3.75 +			fi
    3.76 +		fi
    3.77 +		for i in $altered; do
    3.78 +			if [ -d "$installed/$i" ]; then
    3.79 +				spk-rm $i --root=$root
    3.80 +			fi
    3.81 +		done
    3.82 +	fi
    3.83 +
    3.84 +	# Handle mofified packages
    3.85 +	modified=$(cd $installed; grep -sl ^$pkg$ */modifiers)
    3.86 +	if [ "$modified" ]; then
    3.87 +		gettext "Following packages was modified by"; boldify " $pkg"
    3.88 +		for i in $modified; do
    3.89 +			echo "  ${i%/modifiers}"
    3.90 +			# Remove package from the modifiers list
    3.91 +			sed -i "/^${pkg}$/"d $installed/$i
    3.92 +		done
    3.93 +		if [ "$confirm" ]; then
    3.94 +			gettext "Reinstall packages modified by:"; echo -n " $PACKAGE"
    3.95  			if ! confirm; then
    3.96  				gettext "Keeping packages modified by:"; echo " $PACKAGE"
    3.97 -				echo -e "\n" && continue
    3.98 +				newline && continue
    3.99  			fi
   3.100  		fi
   3.101 -		for i in $refresh; do
   3.102 -			if [ $(wc -l < $installed/$i) -gt 1 ]; then
   3.103 -				gettext "For reinstallation check:"; echo " $installed/$i"
   3.104 -				continue
   3.105 -			fi
   3.106 -			rm -r $installed/$i
   3.107 +		# Reinstall modified packages
   3.108 +		for i in $modified; do
   3.109  			spk-add ${i%/modifiers} --forced --root=$root
   3.110  		done
   3.111  	fi
   3.112 @@ -187,16 +195,7 @@
   3.113  	boldify $(gettext "Removing"; echo " $pkg")
   3.114  	separator
   3.115  	[ "$verbose" ] && echo "DB: $installed"
   3.116 -	# Handle --confirm
   3.117 -	if [ "$confirm" ]; then
   3.118 -		gettext "Confirm uninstallation of"; echo -n " $pkg:"
   3.119 -		if ! confirm; then
   3.120 -			gettext "Uninstallation cancelled"
   3.121 -			echo -e "\n" && continue
   3.122 -		fi
   3.123 -	fi
   3.124  	remove
   3.125 -	separator
   3.126 -	echo "" && log "Removed package: $pkg"
   3.127 +	log "Removed package: $pkg"
   3.128  done
   3.129  exit 0