tazpkg diff tazpkg @ rev 804

Makefile: make pkgs.cgi executable; tazpkg: fix processing extra.list in the "tazpkg recharge", tiny edits.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri May 15 04:33:46 2015 +0300 (2015-05-15)
parents f07e0fd1175e
children 918bafc87bf6
line diff
     1.1 --- a/tazpkg	Sun May 10 13:33:16 2015 +0300
     1.2 +++ b/tazpkg	Fri May 15 04:33:46 2015 +0300
     1.3 @@ -19,7 +19,7 @@
     1.4  ####################
     1.5  
     1.6  # TazPkg version
     1.7 -VERSION=5.3.4
     1.8 +VERSION='5.3.4'
     1.9  
    1.10  . /etc/slitaz/slitaz.conf
    1.11  . /etc/slitaz/tazpkg.conf
    1.12 @@ -44,10 +44,10 @@
    1.13  
    1.14  # Make array of pre-translated categories
    1.15  
    1.16 -cat_i18n=""
    1.17 -for c in "base-system" "x-window" "utilities" "network" "graphics" \
    1.18 -	"multimedia" "office" "development" "system-tools" "security" "games" \
    1.19 -	"misc" "meta" "non-free"; do
    1.20 +cat_i18n=''
    1.21 +for c in 'base-system' 'x-window' 'utilities' 'network' 'graphics' \
    1.22 +	'multimedia' 'office' 'development' 'system-tools' 'security' 'games' \
    1.23 +	'misc' 'meta' 'non-free'; do
    1.24  	cat_i18n="$cat_i18n
    1.25  $(gettext "$c")	$c"
    1.26  done
    1.27 @@ -55,8 +55,7 @@
    1.28  
    1.29  # Translate category names (must be last in line)
    1.30  
    1.31 -translate_category()
    1.32 -{
    1.33 +translate_category() {
    1.34  	sed "s|base-system$|$(_ base-system)|g; s|x-window$|$(_ x-window)|g;
    1.35  		s|utilities$|$(_ utilities)|g; s|network$|$(_ network)|g;
    1.36  		s|graphics$|$(_ graphics)|g; s|multimedia$|$(_ multimedia)|g;
    1.37 @@ -72,8 +71,7 @@
    1.38  # This also supports custom categories.
    1.39  # And now we support spaces in translated categories
    1.40  
    1.41 -reverse_translate_category()
    1.42 -{
    1.43 +reverse_translate_category() {
    1.44  	echo "$cat_i18n" | awk "BEGIN{FS=\"	\"}{if (/^$@	/) a=\$2}END{if (a==\"\") a=\"$@\"; print a}"
    1.45  }
    1.46  
    1.47 @@ -120,27 +118,28 @@
    1.48  
    1.49  # Initialize some variables to use words rather than numbers for functions
    1.50  # and actions.
    1.51 -COMMAND=$1
    1.52 -PACKAGE=${2%/}
    1.53 +
    1.54 +COMMAND="$1"
    1.55 +PACKAGE="${2%/}"
    1.56  PACKAGE_DIR="$(cd $(dirname $PACKAGE 2>/dev/null) 2>/dev/null; pwd)"
    1.57  [ -n "$PACKAGE" ] && PACKAGE_FILE="$PACKAGE_DIR/${PACKAGE##*/}"
    1.58  if [ -f "$PACKAGE" ]; then
    1.59  	# Set pkg basename for install, extract
    1.60 -	PACKAGE=$(basename $PACKAGE .tazpkg 2>/dev/null)
    1.61 +	PACKAGE="$(basename $PACKAGE .tazpkg 2>/dev/null)"
    1.62  else
    1.63  	# Pkg name for remove, search and all other cmds
    1.64 -	PACKAGE=${PACKAGE%.tazpkg}
    1.65 +	PACKAGE="${PACKAGE%.tazpkg}"
    1.66  fi
    1.67 -TARGET_DIR=$3
    1.68 -TOP_DIR=$(pwd)
    1.69 -TMP_DIR=/tmp/$RANDOM
    1.70 -INSTALL_LIST=""
    1.71 +TARGET_DIR="$3"
    1.72 +TOP_DIR="$(pwd)"
    1.73 +TMP_DIR="/tmp/$RANDOM"
    1.74 +INSTALL_LIST=''
    1.75  SAVE_CACHE_DIR="$CACHE_DIR"
    1.76  
    1.77  # Path to tazpkg used dir and configuration files
    1.78 -MIRROR=$PKGS_DB/mirror
    1.79 -BLOCKED=$PKGS_DB/blocked-packages.list
    1.80 -UP_LIST=$PKGS_DB/packages.up
    1.81 +MIRROR="$PKGS_DB/mirror"
    1.82 +BLOCKED="$PKGS_DB/blocked-packages.list"
    1.83 +UP_LIST="$PKGS_DB/packages.up"
    1.84  DEFAULT_MIRROR="$ONLINE_PKGS"
    1.85  
    1.86  
    1.87 @@ -262,7 +261,7 @@
    1.88  # If not and user is root we create them.
    1.89  
    1.90  check_base_dir() {
    1.91 -	if [ "$(id -u)" = "0" ]; then
    1.92 +	if [ "$(id -u)" == "0" ]; then
    1.93  		check_dir $1$CACHE_DIR
    1.94  		check_dir $1$INSTALLED
    1.95  		check_dir $1$SLITAZ_LOGS
    1.96 @@ -312,24 +311,23 @@
    1.97  
    1.98  
    1.99  # Get repositories priority using $PKGS_DB/priority.
   1.100 -# In this files, undigest are called by their name and main mirror
   1.101 -# by main. Sort order: priority
   1.102 +# In this file undigest repos are called by their names and main mirror
   1.103 +# by 'main'. Sort order: priority
   1.104  
   1.105  look_for_priority() {
   1.106 -	[ -s $PKGS_DB/priority ] && priority=$(cat $PKGS_DB/priority)
   1.107 +	[ -s "$PKGS_DB/priority" ] && priority=$(cat $PKGS_DB/priority)
   1.108 +
   1.109  	for rep in main $(ls $PKGS_DB/undigest 2>/dev/null); do
   1.110 -		if [ ! -s $PKGS_DB/priority ] || \
   1.111 -			! grep -q ^$rep$ $PKGS_DB/priority; then
   1.112 +		if [ ! -s "$PKGS_DB/priority" ] || ! grep -q ^$rep$ $PKGS_DB/priority; then
   1.113  			priority=$(echo -e "$priority\n$rep")
   1.114  		fi
   1.115  	done
   1.116  	priority=$(echo "$priority" | sed '/^$/d' | \
   1.117  		while read line; do
   1.118 -		if [ "$line" = main ]; then
   1.119 -			echo $PKGS_DB
   1.120 -		else
   1.121 -			echo $PKGS_DB/undigest/$line
   1.122 -		fi
   1.123 +		case $line in
   1.124 +			main) echo $PKGS_DB;;
   1.125 +			*)    echo $PKGS_DB/undigest/$line;;
   1.126 +		esac
   1.127  	done)
   1.128  }
   1.129  
   1.130 @@ -337,10 +335,10 @@
   1.131  # Get package name in a directory
   1.132  
   1.133  package_fullname_in_dir() {
   1.134 -	[ -f $1/receipt ] || return
   1.135 -	EXTRAVERSION=""
   1.136 +	[ ! -f "$1/receipt" ] && return
   1.137 +	EXTRAVERSION=''
   1.138  	. $1/receipt
   1.139 -	echo $PACKAGE-$VERSION$EXTRAVERSION
   1.140 +	echo "$PACKAGE-$VERSION$EXTRAVERSION"
   1.141  }
   1.142  
   1.143  
   1.144 @@ -348,9 +346,9 @@
   1.145  
   1.146  get_installed_package_pathname() {
   1.147  	for i in $2$INSTALLED/${1%%-*}*; do
   1.148 -		[ -d $i ] || continue
   1.149 -		if [ "$1" = "$(package_fullname_in_dir $i)" ]; then
   1.150 -			echo $i
   1.151 +		[ ! -d $i ] && continue
   1.152 +		if [ "$1" == "$(package_fullname_in_dir $i)" ]; then
   1.153 +			echo "$i"
   1.154  			return
   1.155  		fi
   1.156  	done
   1.157 @@ -375,7 +373,7 @@
   1.158  check_for_packages_list() {
   1.159  	list_path="$PKGS_DB/packages.list"
   1.160  	if [ ! -f "$list_path" ]; then
   1.161 -		if test $(id -u) = 0 ; then
   1.162 +		if [ $(id -u) == 0 ]; then
   1.163  			tazpkg recharge
   1.164  		else
   1.165  			newline
   1.166 @@ -418,15 +416,15 @@
   1.167  
   1.168  get_cache_dir() {
   1.169  	echo $rep > $tmp/rep
   1.170 -	if [ "$rep" = "$PKGS_DB" ]; then
   1.171 +	if [ "$rep" == "$PKGS_DB" ]; then
   1.172  		CACHE_DIR="$SAVE_CACHE_DIR/$SLITAZ_RELEASE/packages"
   1.173 -	elif [ "${rep%-incoming}" = "$rep" ]; then
   1.174 +	elif [ "${rep%-incoming}" == "$rep" ]; then
   1.175  		CACHE_DIR="$SAVE_CACHE_DIR/${rep##*/}/packages"
   1.176  	else
   1.177  		rep="${rep%-incoming}"
   1.178  		CACHE_DIR="$SAVE_CACHE_DIR/${rep##*/}/packages-incoming"
   1.179  	fi
   1.180 -	[ -d "$CACHE_DIR" ] || mkdir -p $CACHE_DIR
   1.181 +	[ ! -d "$CACHE_DIR" ] && mkdir -p $CACHE_DIR
   1.182  	echo $CACHE_DIR > $tmp/cachedir
   1.183  }
   1.184  
   1.185 @@ -439,22 +437,22 @@
   1.186  		if echo $i | fgrep -q : ; then
   1.187  			# format 'alternative:newname'
   1.188  			# if alternative is installed then substitute newname
   1.189 -			if [ -f $2$INSTALLED/${i%:*}/receipt ]; then
   1.190 +			if [ -f "$2$INSTALLED/${i%:*}/receipt" ]; then
   1.191  				# substitute package dependency
   1.192 -				echo ${i#*:}
   1.193 +				echo "${i#*:}"
   1.194  				return
   1.195  			fi
   1.196  		else
   1.197  			# if alternative is installed then nothing to install
   1.198 -			if [ -f $2$INSTALLED/$i/receipt ]; then
   1.199 +			if [ -f "$2$INSTALLED/$i/receipt" ]; then
   1.200  				# substitute installed package
   1.201 -				echo $i
   1.202 +				echo "$i"
   1.203  				return
   1.204  			fi
   1.205  		fi
   1.206  	done
   1.207  	# if not found in packages.equiv then no substitution
   1.208 -	echo $1
   1.209 +	echo "$1"
   1.210  }
   1.211  
   1.212  
   1.213 @@ -462,19 +460,19 @@
   1.214  
   1.215  virtual_pkg() {
   1.216  	for i in $(for rep in $priority; do
   1.217 -		grep -hs "^$1=" $rep/packages.equiv
   1.218 +			grep -hs "^$1=" $rep/packages.equiv
   1.219  		done | sed "s/^$1=//"); do
   1.220  		if echo $i | fgrep -q : ; then
   1.221  			# format 'alternative:newname'
   1.222  			# if alternative is installed then substitute newname
   1.223 -			if [ -f $2$INSTALLED/${i%:*}/receipt ]; then
   1.224 +			if [ -f "$2$INSTALLED/${i%:*}/receipt" ]; then
   1.225  				# substitute package dependency
   1.226 -				echo ${i#*:}
   1.227 +				echo "${i#*:}"
   1.228  				return
   1.229  			fi
   1.230  		else
   1.231  			# unconditional substitution
   1.232 -			echo $i
   1.233 +			echo "$i"
   1.234  			return
   1.235  		fi
   1.236  	done
   1.237 @@ -487,26 +485,26 @@
   1.238  	local pkg
   1.239  	for rep in $priority; do
   1.240  		pkg=$(grep -A 1 -sh "^$1$" $rep/packages.txt | tail -1 | sed 's/^ *//')
   1.241 -		[ "$pkg" ] && pkg=$(grep -sh "^$1-$pkg" $rep/packages.list | head -1)
   1.242 +		[ -n "$pkg" ] && pkg=$(grep -sh "^$1-$pkg" $rep/packages.list | head -1)
   1.243  
   1.244  		# Allow user to call a package with his version number.
   1.245 -		[ "$pkg" ] || pkg=$(grep -sh "^$1$" $rep/packages.list | head -1)
   1.246 -
   1.247 -		[ "$pkg" ] || pkg=$(grep -sh "^$1-[0-9]" $rep/packages.list | head -1)
   1.248 -		[ "$pkg" ] || pkg=$(grep -sh "^$1-.[\.0-9]" $rep/packages.list | head -1)
   1.249 -		[ "$pkg" ] && get_cache_dir && break
   1.250 +		[ -n "$pkg" ] || pkg=$(grep -sh "^$1$" $rep/packages.list | head -1)
   1.251 +
   1.252 +		[ -n "$pkg" ] || pkg=$(grep -sh "^$1-[0-9]" $rep/packages.list | head -1)
   1.253 +		[ -n "$pkg" ] || pkg=$(grep -sh "^$1-.[\.0-9]" $rep/packages.list | head -1)
   1.254 +		[ -n "$pkg" ] && get_cache_dir && break
   1.255  	done
   1.256  	if [ -z "$pkg" ]; then
   1.257  		# Check for virtual package
   1.258  		local equiv
   1.259  		equiv=$(virtual_pkg $1)
   1.260  		if [ "$equiv" != "$1" ]; then
   1.261 -			PACKAGE=$equiv
   1.262 +			PACKAGE="$equiv"
   1.263  			get_package_filename $PACKAGE
   1.264  			return
   1.265  		fi
   1.266  	fi
   1.267 -	echo $pkg
   1.268 +	echo "$pkg"
   1.269  }
   1.270  
   1.271  
   1.272 @@ -518,10 +516,10 @@
   1.273  	local check_only
   1.274  	check_only="$1"
   1.275  	filename=$(get_package_filename $PACKAGE)
   1.276 -	if [ "$filename" ]; then
   1.277 -		PACKAGE=$filename
   1.278 -		CACHE_DIR=$(cat $tmp/cachedir)
   1.279 -		rep=$(cat $tmp/rep)
   1.280 +	if [ -n "$filename" ]; then
   1.281 +		PACKAGE="$filename"
   1.282 +		CACHE_DIR="$(cat $tmp/cachedir)"
   1.283 +		rep="$(cat $tmp/rep)"
   1.284  		rm -f $tmp/rep $tmp/cachedir
   1.285  	else
   1.286  		newline
   1.287 @@ -539,12 +537,12 @@
   1.288  log_pkg() {
   1.289  	local extra
   1.290  
   1.291 -	[ "$1" = "Installed" ] && \
   1.292 +	[ "$1" == 'Installed' ] && \
   1.293  	extra=" - $(fgrep $PACKAGE-$VERSION $PKGS_DB/installed.$SUM | awk '{ print $1 }')"
   1.294  
   1.295 -	[ -e $LOG ] || touch $LOG
   1.296 -
   1.297 -	[ -w $LOG ] &&
   1.298 +	[ -e "$LOG" ] || touch $LOG
   1.299 +
   1.300 +	[ -w "$LOG" ] &&
   1.301  	echo "$(date +'%F %T') - $1 - $PACKAGE ($VERSION$EXTRAVERSION)$extra" >> $LOG
   1.302  }
   1.303  
   1.304 @@ -552,13 +550,13 @@
   1.305  # Download a get-package script from this mirror
   1.306  
   1.307  download_get_script() {
   1.308 -	local p
   1.309 +	local p i
   1.310  	for p in $priority ; do
   1.311 -		local i
   1.312  		for i in $(cat $p/mirror) ; do
   1.313  			case "$i" in
   1.314 -				http://*|ftp://*)
   1.315 -					wget -O $2 ${i%packages/*}packages/get/$1 && return 0 ;;
   1.316 +				http://*|https://*|ftp://*)
   1.317 +					busybox wget -q -T 30 -U TazPkg -O $2 \
   1.318 +						${i%packages/*}packages/get/$1 && return 0 ;;
   1.319  			esac
   1.320  		done
   1.321  	done
   1.322 @@ -2249,6 +2247,7 @@
   1.323  				rm IDs.bak ID.bak
   1.324  				continue
   1.325  			fi
   1.326 +			rm IDs.bak ID.bak 2>/dev/null
   1.327  
   1.328  			title 'Recharging repository "%s"' "$repo_name"
   1.329  			[ -e 'IDs' ] && _ 'Database timestamp: %s' "$(date -d "@$(awk '{print $2}' IDs)" "+%x %R")"
   1.330 @@ -2308,8 +2307,10 @@
   1.331  				rm packages.list.bak
   1.332  				if [ -f 'extra.list.bak' ]; then
   1.333  					if [ -f 'extra.list' ]; then
   1.334 -						diff -u extra.list.bak extra.list | grep ^+[a-z] >> packages.diff
   1.335 -						rm extra.list.bak
   1.336 +						awk -F'|' '{print $1 " (extra)"}' extra.list > extra.list1
   1.337 +						awk -F'|' '{print $1 " (extra)"}' extra.list.bak > extra.list1.bak
   1.338 +						diff -u extra.list1.bak extra.list1 | grep ^+[a-z] >> packages.diff
   1.339 +						rm extra.list.bak extra.list1 extra.list1.bak
   1.340  					else
   1.341  						mv extra.list.bak extra.list
   1.342  					fi
   1.343 @@ -2354,15 +2355,15 @@
   1.344  				--check|-c) 	install="n" ;;
   1.345  			esac
   1.346  		done
   1.347 -		time=$(date +%s)
   1.348 +		time="$(date +%s)"
   1.349  
   1.350  		look_for_priority
   1.351  		for repo in $priority; do
   1.352 -			pkg_list=$repo/packages.list
   1.353 +			pkg_list="$repo/packages.list"
   1.354  			mtime=$(find $pkg_list -mtime +7)
   1.355 -			if [ "$mtime" ]; then
   1.356 +			if [ -n "$mtime" ]; then
   1.357  				if [ "$repo" == "$PKGS_DB" ]; then
   1.358 -					repo_name=main
   1.359 +					repo_name='main'
   1.360  				else
   1.361  					repo_name="${repo##*/}"
   1.362  				fi
   1.363 @@ -2376,18 +2377,18 @@
   1.364  		cd $INSTALLED
   1.365  		echo -n > $UP_LIST
   1.366  		blocked_count=0
   1.367 -		installed_sum=$PKGS_DB/installed.$SUM
   1.368 +		installed_sum="$PKGS_DB/installed.$SUM"
   1.369  
   1.370  		for pkg in *; do
   1.371  			[ ! -d $pkg ] && continue
   1.372  			unset VERSION EXTRAVERSION
   1.373  			. $pkg/receipt
   1.374 -			md5=$(fgrep "  $PACKAGE-${VERSION}$EXTRAVERSION.tazpkg" \
   1.375 +			md5=$(fgrep "  $PACKAGE-$VERSION$EXTRAVERSION.tazpkg" \
   1.376  				$installed_sum | awk '{print $1}')
   1.377  			for repo in $priority; do
   1.378 -				pkg_desc=$repo/packages.desc
   1.379 -				pkg_list=$repo/packages.list
   1.380 -				pkg_sum=$repo/packages.$SUM
   1.381 +				pkg_desc="$repo/packages.desc"
   1.382 +				pkg_list="$repo/packages.list"
   1.383 +				pkg_sum="$repo/packages.$SUM"
   1.384  
   1.385  				if ! fgrep -q "$md5  $PACKAGE-" $pkg_sum; then
   1.386  					# Jump to next repository in priority if pkg doesn't exist
   1.387 @@ -2441,10 +2442,11 @@
   1.388  				$upnb "$blocked")"
   1.389  			newline
   1.390  		fi
   1.391 +
   1.392  		# Pkgs to upgrade ? Skip, let install them all or ask user
   1.393 -		[ "$install" == "n" ] && exit 0
   1.394 +		[ "$install" == 'n' ] && exit 0
   1.395  		if [ "$upnb" -gt 0 ]; then
   1.396 -			if [ "$install" == "y" ]; then
   1.397 +			if [ "$install" == 'y' ]; then
   1.398  				answer=0
   1.399  			else
   1.400  				confirm "$(_ 'Do you wish to install them now? (y/N)')"
   1.401 @@ -2472,11 +2474,13 @@
   1.402  		cd $INSTALLED
   1.403  		shift
   1.404  		LIST=$@
   1.405 -		[ -n "$LIST" ] || LIST=$(ls)
   1.406 +		[ -z "$LIST" ] && LIST=$(ls)
   1.407  		MSG=$(_n 'No known bugs.')
   1.408 +
   1.409 +		title 'Known bugs in packages'
   1.410  		for PACKAGE in $LIST; do
   1.411 -			BUGS=""
   1.412 -			EXTRAVERSION=""
   1.413 +			BUGS=''
   1.414 +			EXTRAVERSION=''
   1.415  			. $PACKAGE/receipt
   1.416  			if [ -n "$BUGS" ]; then
   1.417  				MSG=$(_n 'Bug list completed')
   1.418 @@ -2487,7 +2491,7 @@
   1.419  EOT
   1.420  			fi
   1.421  		done
   1.422 -		echo "$MSG" ;;
   1.423 +		footer "$MSG" ;;
   1.424  
   1.425  
   1.426  	check)