# HG changeset patch # User Pascal Bellard # Date 1238176691 0 # Node ID 90af2423ad9f1dc290432a8a519ed2cd287caf94 # Parent 4790e7d52f4221b9e85a42811379b8a7f636b5cb tazpkg upgrade should not overload overloaded files diff -r 4790e7d52f42 -r 90af2423ad9f tazpkg --- a/tazpkg Mon Mar 23 21:58:18 2009 +0000 +++ b/tazpkg Fri Mar 27 17:58:11 2009 +0000 @@ -368,10 +368,14 @@ if grep -q ^pre_depends $TMP_DIR/receipt; then pre_depends $ROOT fi - rm -rf $TMP_DIR $ROOT$INSTALLED/$PACKAGE 2> /dev/null + # keep modifers list on upgrade + cp $ROOT$INSTALLED/$PACKAGE/modifiers $TMP_DIR 2> /dev/null + rm -rf $ROOT$INSTALLED/$PACKAGE 2> /dev/null # Make the installed package data dir to store # the receipt and the files list. mkdir -p $ROOT$INSTALLED/$PACKAGE + cp $TMP_DIR/modifiers $ROOT$INSTALLED/$PACKAGE 2> /dev/null + rm -rf $TMP_DIR 2> /dev/null sed -i "/ $(basename $PACKAGE_FILE)$/d" \ $ROOT$LOCALSTATE/installed.md5 2> /dev/null cd $(dirname $PACKAGE_FILE) @@ -411,15 +415,23 @@ [ -e "$ROOT$i" ] || continue [ -d "$ROOT$i" ] && continue for j in $(grep -l "^$i$" $ROOT$INSTALLED/*/files.list); do + local dir + dir=$(dirname $j) [ "$j" = "$ROOT$INSTALLED/$PACKAGE/files.list" ] && continue - grep -qs ^$PACKAGE$ $(dirname $j)/modifiers && continue - if [ -s "$(dirname $j)/volatile.cpio.gz" ]; then + if grep -qs ^$(basename $dir)$ \ + $ROOT$INSTALLED/$PACKAGE/modifiers; then + # Do not overload an overloaded file ! + rm .$i 2> /dev/null + continue + fi + grep -qs ^$PACKAGE$ $dir/modifiers && continue + if [ -s "$dir/volatile.cpio.gz" ]; then # We can modify backed up files - zcat $(dirname $j)/volatile.cpio.gz | \ + zcat $dir/volatile.cpio.gz | \ cpio -t 2> /dev/null | \ grep -q "^${i#/}$" && continue fi - echo "$PACKAGE" >> $(dirname $j)/modifiers + echo "$PACKAGE" >> $dir/modifiers done done cp receipt files.list $ROOT$INSTALLED/$PACKAGE