tazpkg rev 419

A cache dir for each repo & fixed md5sum check
author Antoine Bodin <gokhlayeh@slitaz.org>
date Tue Feb 01 02:21:48 2011 +0100 (2011-02-01)
parents 2f4f55db2600
children c69340c2b441
files tazpkg
line diff
     1.1 --- a/tazpkg	Fri Jan 28 23:03:37 2011 +0100
     1.2 +++ b/tazpkg	Tue Feb 01 02:21:48 2011 +0100
     1.3 @@ -53,6 +53,7 @@
     1.4  TOP_DIR=`pwd`
     1.5  TMP_DIR=$tmp/$RANDOM
     1.6  INSTALL_LIST=""
     1.7 +SAVE_CACHE_DIR="$CACHE_DIR"
     1.8  
     1.9  # Path to tazpkg used dir and configuration files
    1.10  INSTALLED=$LOCALSTATE/installed
    1.11 @@ -232,6 +233,21 @@
    1.12  	fi
    1.13  }
    1.14  
    1.15 +get_cache_dir()
    1.16 +{
    1.17 +	echo $rep > $tmp/rep
    1.18 +	if [ "$rep"	= /var/lib/tazpkg ]; then
    1.19 +		CACHE_DIR="$SAVE_CACHE_DIR/$SLITAZ_VERSION/packages"
    1.20 +	elif [ "${rep%-incoming}" = "$rep" ]; then
    1.21 +		CACHE_DIR="$SAVE_CACHE_DIR/${rep##*/}/packages"
    1.22 +	else
    1.23 +		rep="${rep%-incoming}"
    1.24 +		CACHE_DIR="$SAVE_CACHE_DIR/${rep##*/}/packages-incoming"
    1.25 +	fi
    1.26 +	[ -d "$CACHE_DIR" ] || mkdir -p $CACHE_DIR
    1.27 +	echo $CACHE_DIR > $tmp/cachedir
    1.28 +}
    1.29 +
    1.30  # get an already installed package from packages.equiv
    1.31  equivalent_pkg()
    1.32  {
    1.33 @@ -297,7 +313,7 @@
    1.34  			$rep/packages.list | head -1)
    1.35  		[ "$pkg" ] || pkg=$(grep -sh "^$1-.[\.0-9]" \
    1.36  		$rep/packages.list | head -1)
    1.37 -		[ "$pkg" ] && break
    1.38 +		[ "$pkg" ] && get_cache_dir && break
    1.39  	done
    1.40  	if [ -z "$pkg" ]; then
    1.41  		# Check for vitual package
    1.42 @@ -319,9 +335,12 @@
    1.43  	local filename
    1.44  	local check_only
    1.45  	check_only="$1"
    1.46 -	filename=$(get_package_filename $PACKAGE)
    1.47 -	if [ -n "$filename" ]; then
    1.48 +	filename=`get_package_filename $PACKAGE`
    1.49 +	if [ "$filename" ]; then
    1.50  		PACKAGE=$filename
    1.51 +		CACHE_DIR=$(cat $tmp/cachedir)
    1.52 +		rep=$(cat $tmp/rep)
    1.53 +		rm -f $tmp/rep $tmp/cachedir
    1.54  	else
    1.55  		echo ""
    1.56  		eval_gettext "Unable to find: \$PACKAGE in the mirrored packages list."; echo
    1.57 @@ -2609,19 +2628,18 @@
    1.58  		[ "$root" ] && ROOT="$root" && check_dir "$root"
    1.59  		[ "$list" ] && INSTALL_LIST="$list"
    1.60  		AUTOEXEC="no"
    1.61 -		if ! check_for_package_in_list check; then
    1.62 -			PACKAGE=get-$PACKAGE
    1.63 +		check_for_package_in_list check || { PACKAGE=get-$PACKAGE
    1.64  			AUTOEXEC=$PACKAGE
    1.65  			check_for_package_in_list
    1.66  			if [ -n "$(get_installed_package_pathname $PACKAGE $ROOT)" ]; then
    1.67 +				CACHE_DIR="${CACHE_DIR%/*}/get"
    1.68 +				[ -d "$CACHE_DIR" ] || mkdir -p $CACHE_DIR
    1.69  				$AUTOEXEC $ROOT
    1.70  				exit 0
    1.71  			fi
    1.72 -		fi
    1.73 +		}
    1.74  		# Check if forced install.
    1.75 -		if [ "$DO_CHECK" = "no" ]; then
    1.76 -			rm -f $CACHE_DIR/$PACKAGE.tazpkg
    1.77 -		else
    1.78 +		if ! [ "$DO_CHECK" = "no" ]; then
    1.79  			check_for_installed_package $ROOT
    1.80  		fi
    1.81  		cd $CACHE_DIR
    1.82 @@ -2632,7 +2650,7 @@
    1.83  				eval_gettext "Continuing \$PACKAGE download"; echo
    1.84  				download $PACKAGE.tazpkg
    1.85  			}
    1.86 -			if [ "$(md5sum $PACKAGE.tazpkg)" != "$(fgrep "  $PACKAGE.tazpkg" /var/lib/tazpkg/packages.md5)" ]; then
    1.87 +			if [ "$(md5sum $PACKAGE.tazpkg)" != "$(fgrep "  $PACKAGE.tazpkg" $rep/packages.md5)" ]; then
    1.88  				rm -f $PACKAGE.tazpkg
    1.89  				download $PACKAGE.tazpkg
    1.90  			fi