tazpkg rev 249

tazpkg upgrade should not overload overloaded files
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Mar 27 17:58:11 2009 +0000 (2009-03-27)
parents 4790e7d52f42
children 63f4f0e413e1
files tazpkg
line diff
     1.1 --- a/tazpkg	Mon Mar 23 21:58:18 2009 +0000
     1.2 +++ b/tazpkg	Fri Mar 27 17:58:11 2009 +0000
     1.3 @@ -368,10 +368,14 @@
     1.4  		if grep -q ^pre_depends $TMP_DIR/receipt; then
     1.5  			pre_depends $ROOT
     1.6  		fi
     1.7 -		rm -rf $TMP_DIR $ROOT$INSTALLED/$PACKAGE 2> /dev/null
     1.8 +		# keep modifers list on upgrade
     1.9 +		cp $ROOT$INSTALLED/$PACKAGE/modifiers $TMP_DIR 2> /dev/null
    1.10 +		rm -rf $ROOT$INSTALLED/$PACKAGE 2> /dev/null
    1.11  		# Make the installed package data dir to store
    1.12  		# the receipt and the files list.
    1.13  		mkdir -p $ROOT$INSTALLED/$PACKAGE
    1.14 +		cp $TMP_DIR/modifiers $ROOT$INSTALLED/$PACKAGE 2> /dev/null
    1.15 +		rm -rf $TMP_DIR 2> /dev/null
    1.16  		sed -i "/ $(basename $PACKAGE_FILE)$/d" \
    1.17  			$ROOT$LOCALSTATE/installed.md5 2> /dev/null
    1.18  		cd $(dirname $PACKAGE_FILE)
    1.19 @@ -411,15 +415,23 @@
    1.20  		[ -e "$ROOT$i" ] || continue
    1.21  		[ -d "$ROOT$i" ] && continue
    1.22  		for j in $(grep -l "^$i$" $ROOT$INSTALLED/*/files.list); do
    1.23 +			local dir
    1.24 +			dir=$(dirname $j)
    1.25  			[ "$j" = "$ROOT$INSTALLED/$PACKAGE/files.list" ] && continue
    1.26 -			grep -qs ^$PACKAGE$ $(dirname $j)/modifiers && continue
    1.27 -			if [ -s "$(dirname $j)/volatile.cpio.gz" ]; then
    1.28 +			if grep -qs ^$(basename $dir)$ \
    1.29 +				  $ROOT$INSTALLED/$PACKAGE/modifiers; then
    1.30 +				# Do not overload an overloaded file !
    1.31 +				rm .$i 2> /dev/null
    1.32 +				continue
    1.33 +			fi
    1.34 +			grep -qs ^$PACKAGE$ $dir/modifiers && continue
    1.35 +			if [ -s "$dir/volatile.cpio.gz" ]; then
    1.36  				# We can modify backed up files
    1.37 -				zcat $(dirname $j)/volatile.cpio.gz | \
    1.38 +				zcat $dir/volatile.cpio.gz | \
    1.39  					cpio -t 2> /dev/null | \
    1.40  					grep -q "^${i#/}$" && continue
    1.41  			fi
    1.42 -			echo "$PACKAGE" >> $(dirname $j)/modifiers
    1.43 +			echo "$PACKAGE" >> $dir/modifiers
    1.44  		done
    1.45  	done
    1.46  	cp receipt files.list $ROOT$INSTALLED/$PACKAGE