tazpkg rev 460

Merge new features from branch 4.3
author Antoine Bodin <gokhlayeh@slitaz.org>
date Wed Apr 06 16:51:20 2011 +0200 (2011-04-06)
parents 3ddb4fd7328f 68f72d0a2b3a
children b8b913af3cd7
files .hgtags tazpkg
line diff
     1.1 --- a/.hgtags	Wed Apr 06 01:33:25 2011 +0200
     1.2 +++ b/.hgtags	Wed Apr 06 16:51:20 2011 +0200
     1.3 @@ -39,5 +39,7 @@
     1.4  13789d978d2330ebdbf1dbb6088d141ae3417fa0 4.2.4
     1.5  88a196a42cd8fcc80ae8b133dd999337c9dc6d6d 4.2.5
     1.6  2784093ebf38aed33d3794bd62291bbcc6191075 4.2.6
     1.7 +a2c85fb6212467e55ae60d8821812e04ac8f98e7 4.3-beta
     1.8 +f8a1a260f8111d2fe7fab8c2755441c53fb817a5 4.3-beta2
     1.9  18a0552011dad34429616d42901b40dcf2b8d533 4.3
    1.10  beaa0348485d42aeeb50e204b2416572ffcbf662 4.4
     2.1 --- a/tazpkg	Wed Apr 06 01:33:25 2011 +0200
     2.2 +++ b/tazpkg	Wed Apr 06 16:51:20 2011 +0200
     2.3 @@ -1751,14 +1751,16 @@
     2.4  		check_for_package_on_cmdline
     2.5  		check_for_package_file
     2.6  		
     2.7 -		# Get repositories priority list.
     2.8 -		look_for_priority
     2.9  		get_options_list="root forced list"
    2.10  		get_options
    2.11  		
    2.12 +		[ "$root" ] && ROOT="$root" && check_base_dir "$root"
    2.13 +		[ "$list" ] && INSTALL_LIST="$list"
    2.14 +
    2.15 +		# Get repositories priority list.
    2.16 +		look_for_priority
    2.17 +
    2.18  		# Check if forced install.
    2.19 -		[ "$root" ] && ROOT="$root" && check_dir "$root"
    2.20 -		[ "$list" ] && INSTALL_LIST="$list"
    2.21  		if ! [ "$forced" ]; then
    2.22  			check_for_installed_package $ROOT
    2.23  		fi
    2.24 @@ -2217,31 +2219,79 @@
    2.25  		# Recharge packages.list from a mirror.
    2.26  		#
    2.27  		check_root
    2.28 -		
    2.29 -		for path in $LOCALSTATE $LOCALSTATE/undigest/*; do
    2.30 +		get_options_list="root forced list rootconfig"
    2.31 +		get_options
    2.32 +		ARG=$2
    2.33 +		if [ "$root" ]; then
    2.34 +			LOCALSTATE=$root$LOCALSTATE
    2.35 +			[ "${2#--}" != "$2" ] && ARG=$3
    2.36 +		fi
    2.37 +		if [ "$ARG" = main ]; then
    2.38 +			repository_to_recharge=$LOCALSTATE
    2.39 +		elif [ "$ARG" ]; then
    2.40 +			if [ -d "$LOCALSTATE/undigest/$ARG" ]; then
    2.41 +				repository_to_recharge=$LOCALSTATE/undigest/$ARG
    2.42 +			else
    2.43 +				echo "\$LOCALSTATE/undigest/$ARG `gettext \"doesn't exists.\"`" >&2
    2.44 +				exit 1
    2.45 +			fi
    2.46 +		else
    2.47 +			repository_to_recharge="$LOCALSTATE $LOCALSTATE/undigest/*"
    2.48 +		fi	
    2.49 +		for path in $repository_to_recharge; do
    2.50  			[ -f $path/mirror ] || continue
    2.51 +			cd $path
    2.52 +
    2.53 +			# Quietly check if recharging is needed.
    2.54 +			[ -f ID ] && mv ID ID.bak
    2.55 +			download_from "$(cat mirror)" ID >/dev/null 2>/dev/null
    2.56 +			if [ -f ID ] && fgrep -q `cat ID.bak 2>/dev/null || echo "null"` ID; then
    2.57 +				if [ "$path" = "$LOCALSTATE" ]; then
    2.58 +					repository_name=Main
    2.59 +				else
    2.60 +					repository_name="`gettext \"Undigest\"` $(basename $path)"
    2.61 +				fi
    2.62 +				echo "$repository_name `gettext \"is up to date.\"`"
    2.63 +				rm ID.bak
    2.64 +				continue
    2.65 +			fi
    2.66 +
    2.67 +			# Don't let ID be a symlink when using local repository.
    2.68 +			if [ -f ID ]; then
    2.69 +				mv -f ID ID.bak
    2.70 +				cat ID.bak > ID
    2.71 +				rm ID.bak
    2.72 +			fi
    2.73 +
    2.74  			echo ""
    2.75  			if [ "$path" != "$LOCALSTATE" ]; then
    2.76  				echo -e "`gettext \"Recharging undigest\"` $(basename $path):"
    2.77  			fi
    2.78 -			cd $path
    2.79 +
    2.80  			if [ -f "packages.list" ]; then
    2.81  				gettext "Creating backup of the last packages list..."
    2.82 -				mv -f packages.desc packages.desc.bak 2>/dev/null
    2.83 -				mv -f packages.md5 packages.md5.txt 2>/dev/null
    2.84 -				mv -f packages.txt packages.txt.bak 2>/dev/null
    2.85 -				mv -f packages.list packages.list.bak 2>/dev/null
    2.86 -				mv -f packages.equiv packages.equiv.bak 2>/dev/null
    2.87 -				mv -f files.list.lzma files.list.lzma.bak 2> /dev/null
    2.88 -				mv -f mirrors mirrors.bak 2> /dev/null
    2.89 +				for i in  wanted.txt depends.txt libraries.txt \
    2.90 +				packages.desc packages.md5 packages.txt \
    2.91 +				packages.list packages.equiv files.list.lzma \
    2.92 +				mirrors; do
    2.93 +					mv -f $i $i.bak 2>/dev/null
    2.94 +				done
    2.95  				status
    2.96  			fi
    2.97 -			download_from "$(cat mirror)" packages.desc
    2.98 -			download_from "$(cat mirror)" packages.md5
    2.99 -			download_from "$(cat mirror)" packages.txt
   2.100 -			download_from "$(cat mirror)" packages.list
   2.101 -			download_from "$(cat mirror)" packages.equiv
   2.102 +			for i in desc md5 txt list equiv; do
   2.103 +				download_from "$(cat mirror)" packages.$i
   2.104 +			done
   2.105 +			
   2.106  			download_from "$(cat mirror)" files.list.lzma
   2.107 +			
   2.108 +			# ID file & wanted/depends/libraries files were implemented
   2.109 +			# at the same time. Not all repositories have them.
   2.110 +			if [ -f ID ]; then
   2.111 +				for i in wanted depends library; do
   2.112 +					download_from "$(cat mirror)" $i.txt
   2.113 +				done
   2.114 +			fi
   2.115 +
   2.116  			download_from "$(sed 's|packages/.*||' < mirror)" mirrors
   2.117  			[ -f mirrors ] || mv mirrors.bak mirrors 2> /dev/null
   2.118  			suffix=$(head -1 mirror)
   2.119 @@ -2614,16 +2664,28 @@
   2.120  		check_root
   2.121  		check_for_package_on_cmdline
   2.122  		check_for_packages_list
   2.123 -		
   2.124 -		# Get repositories priority list.
   2.125 -		look_for_priority
   2.126 -		get_options_list="root forced list"
   2.127 +
   2.128 +		get_options_list="root forced list rootconfig"
   2.129  		get_options
   2.130  		
   2.131  		DO_CHECK=""
   2.132  		[ "$forced" ] && DO_CHECK=no
   2.133 -		[ "$root" ] && ROOT="$root" && check_dir "$root"
   2.134 +		[ "$root" ] && ROOT="$root" && check_base_dir "$root"
   2.135  		[ "$list" ] && INSTALL_LIST="$list"
   2.136 +		if [ "$rootconfig" ]; then
   2.137 +			if [ "$root" ]; then
   2.138 +				CACHE_DIR=$root/$CACHE_DIR
   2.139 +				SAVE_CACHE_DIR=$CACHE_DIR
   2.140 +				LOCALSTATE=$root/$LOCALSTATE
   2.141 +			else
   2.142 +				echo "rootconfig needs --root= option used." >&2
   2.143 +				exit 1
   2.144 +			fi
   2.145 +		fi
   2.146 +
   2.147 +		# Get repositories priority list.
   2.148 +		look_for_priority
   2.149 +
   2.150  		AUTOEXEC="no"
   2.151  		if ! check_for_package_in_list check; then
   2.152  			PACKAGE=get-$PACKAGE
   2.153 @@ -2657,6 +2719,7 @@
   2.154  			download $PACKAGE.tazpkg
   2.155  		fi
   2.156  		PACKAGE_FILE=$CACHE_DIR/$PACKAGE.tazpkg
   2.157 +		[ "$rootconfig" ] && LOCALSTATE=${LOCALSTATE#$root}
   2.158  		install_package $ROOT
   2.159  		[ "$AUTOEXEC" != "no" ] && $PACKAGE $ROOT 
   2.160  		update_desktop_database $ROOT