cookutils rev 788

cook: use option '--local' for tazpkg install local package (with local dependencies); better handle removing of old package
author Aleksej Bobylev <al.bobylev@gmail.com>
date Thu Dec 17 15:47:24 2015 +0200 (2015-12-17)
parents 36e267c88f80
children b40b5b271d4d
files cook
line diff
     1.1 --- a/cook	Wed Dec 16 18:39:00 2015 +0100
     1.2 +++ b/cook	Thu Dec 17 15:47:24 2015 +0200
     1.3 @@ -710,7 +710,7 @@
     1.4  	cd $PKGS
     1.5  	for i in $(uniq $CACHE/installed.local); do
     1.6  		_ 'Installing dep (pkg/local): %s' "$i"
     1.7 -		tazpkg install $i --root=$root --quiet
     1.8 +		tazpkg install $i --root=$root --local --quiet
     1.9  	done
    1.10  
    1.11  	# Install web or cached packages (if mirror is set to $PKGS we only
    1.12 @@ -938,13 +938,21 @@
    1.13  		rm -f $command
    1.14  		exit 1
    1.15  	else
    1.16 -		# Ls sort by name so the first file is the one we want.
    1.17 -		old=$(ls $PKGS/$pkg-*.tazpkg 2>/dev/null | head -n1)
    1.18 -		status
    1.19 -		if [ -f "$old" ]; then
    1.20 -			action 'Removing old package "%s"' "$(basename $old)"
    1.21 -			rm -f $old; status
    1.22 -		fi
    1.23 +		:; status
    1.24 +		# Find and remove old package(s)
    1.25 +		tempd="$(mktemp -d)"; cd "$tempd"
    1.26 +		for testpkg in $PKGS/$pkg-*.tazpkg; do
    1.27 +			# Extract receipt from each matched package
    1.28 +			cpio -F "$testpkg" -i receipt >/dev/null 2>&1
    1.29 +			name=$(. receipt; echo $PACKAGE)
    1.30 +			rm receipt
    1.31 +			if [ "$name" == "$pkg" ]; then
    1.32 +				action 'Removing old package "%s"' "$(basename "$testpkg")"
    1.33 +				rm -f "$testpkg"
    1.34 +				status
    1.35 +			fi
    1.36 +		done
    1.37 +		rm -r "$tempd"
    1.38  		mv -f $pkgdir/taz/$pkg-*.tazpkg $PKGS
    1.39  		sed -i /^${pkg}$/d $broken
    1.40  		#action 'Removing source tree...'