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
files Makefile tazpkg
line diff
     1.1 --- a/Makefile	Sun May 10 13:33:16 2015 +0300
     1.2 +++ b/Makefile	Fri May 15 04:33:46 2015 +0300
     1.3 @@ -68,11 +68,11 @@
     1.4  	cp -a doc/*        $(DESTDIR)$(DOCDIR)/tazpkg
     1.5  
     1.6  	# TazPanel files
     1.7 -	install -m 0755 -d      $(DESTDIR)/var/www/tazpanel/menu.d
     1.8 -	cp -a tazpanel/pkgs.cgi $(DESTDIR)/var/www/tazpanel
     1.9 -	ln -fs ../pkgs.cgi      $(DESTDIR)/var/www/tazpanel/menu.d/pkgs
    1.10 -	install -m 0755 -d      $(DESTDIR)/var/www/tazpanel/styles/default
    1.11 -	cp -a tazpanel/pkgs.css $(DESTDIR)/var/www/tazpanel/styles/default
    1.12 +	install -m 0755 -d                $(DESTDIR)/var/www/tazpanel/menu.d
    1.13 +	install -m 0755 tazpanel/pkgs.cgi $(DESTDIR)/var/www/tazpanel
    1.14 +	ln -fs ../pkgs.cgi                $(DESTDIR)/var/www/tazpanel/menu.d/pkgs
    1.15 +	install -m 0755 -d                $(DESTDIR)/var/www/tazpanel/styles/default
    1.16 +	install -m 0644 tazpanel/pkgs.css $(DESTDIR)/var/www/tazpanel/styles/default
    1.17  
    1.18  	# The i18n files
    1.19  	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/locale
    1.20 @@ -85,12 +85,12 @@
    1.21  
    1.22  	# Default icons
    1.23  	install -m 0755 -d $(ICONS)/apps
    1.24 -	install -m 0644 pixmaps/tazpkg.png $(ICONS)/apps
    1.25 -	ln -fs tazpkg.png $(ICONS)/apps/TazPkg.png # icon for Yad
    1.26  	install -m 0755 -d $(ICONS)/actions
    1.27 -	install -m 0644 pixmaps/tazpkg-up.png $(ICONS)/actions
    1.28  	install -m 0755 -d $(ICONS)/status
    1.29 -	install -m 0644 pixmaps/tazpkg-installed.png $(ICONS)/status
    1.30 +	install -m 0644    pixmaps/tazpkg.png           $(ICONS)/apps
    1.31 +	install -m 0644    pixmaps/tazpkg-up.png        $(ICONS)/actions
    1.32 +	install -m 0644    pixmaps/tazpkg-installed.png $(ICONS)/status
    1.33 +	ln -fs tazpkg.png  $(ICONS)/apps/TazPkg.png     # icon for Yad
    1.34  
    1.35  	# TazPkg Notify XDG autostart
    1.36  	mkdir -p            $(DESTDIR)/etc/xdg
     2.1 --- a/tazpkg	Sun May 10 13:33:16 2015 +0300
     2.2 +++ b/tazpkg	Fri May 15 04:33:46 2015 +0300
     2.3 @@ -19,7 +19,7 @@
     2.4  ####################
     2.5  
     2.6  # TazPkg version
     2.7 -VERSION=5.3.4
     2.8 +VERSION='5.3.4'
     2.9  
    2.10  . /etc/slitaz/slitaz.conf
    2.11  . /etc/slitaz/tazpkg.conf
    2.12 @@ -44,10 +44,10 @@
    2.13  
    2.14  # Make array of pre-translated categories
    2.15  
    2.16 -cat_i18n=""
    2.17 -for c in "base-system" "x-window" "utilities" "network" "graphics" \
    2.18 -	"multimedia" "office" "development" "system-tools" "security" "games" \
    2.19 -	"misc" "meta" "non-free"; do
    2.20 +cat_i18n=''
    2.21 +for c in 'base-system' 'x-window' 'utilities' 'network' 'graphics' \
    2.22 +	'multimedia' 'office' 'development' 'system-tools' 'security' 'games' \
    2.23 +	'misc' 'meta' 'non-free'; do
    2.24  	cat_i18n="$cat_i18n
    2.25  $(gettext "$c")	$c"
    2.26  done
    2.27 @@ -55,8 +55,7 @@
    2.28  
    2.29  # Translate category names (must be last in line)
    2.30  
    2.31 -translate_category()
    2.32 -{
    2.33 +translate_category() {
    2.34  	sed "s|base-system$|$(_ base-system)|g; s|x-window$|$(_ x-window)|g;
    2.35  		s|utilities$|$(_ utilities)|g; s|network$|$(_ network)|g;
    2.36  		s|graphics$|$(_ graphics)|g; s|multimedia$|$(_ multimedia)|g;
    2.37 @@ -72,8 +71,7 @@
    2.38  # This also supports custom categories.
    2.39  # And now we support spaces in translated categories
    2.40  
    2.41 -reverse_translate_category()
    2.42 -{
    2.43 +reverse_translate_category() {
    2.44  	echo "$cat_i18n" | awk "BEGIN{FS=\"	\"}{if (/^$@	/) a=\$2}END{if (a==\"\") a=\"$@\"; print a}"
    2.45  }
    2.46  
    2.47 @@ -120,27 +118,28 @@
    2.48  
    2.49  # Initialize some variables to use words rather than numbers for functions
    2.50  # and actions.
    2.51 -COMMAND=$1
    2.52 -PACKAGE=${2%/}
    2.53 +
    2.54 +COMMAND="$1"
    2.55 +PACKAGE="${2%/}"
    2.56  PACKAGE_DIR="$(cd $(dirname $PACKAGE 2>/dev/null) 2>/dev/null; pwd)"
    2.57  [ -n "$PACKAGE" ] && PACKAGE_FILE="$PACKAGE_DIR/${PACKAGE##*/}"
    2.58  if [ -f "$PACKAGE" ]; then
    2.59  	# Set pkg basename for install, extract
    2.60 -	PACKAGE=$(basename $PACKAGE .tazpkg 2>/dev/null)
    2.61 +	PACKAGE="$(basename $PACKAGE .tazpkg 2>/dev/null)"
    2.62  else
    2.63  	# Pkg name for remove, search and all other cmds
    2.64 -	PACKAGE=${PACKAGE%.tazpkg}
    2.65 +	PACKAGE="${PACKAGE%.tazpkg}"
    2.66  fi
    2.67 -TARGET_DIR=$3
    2.68 -TOP_DIR=$(pwd)
    2.69 -TMP_DIR=/tmp/$RANDOM
    2.70 -INSTALL_LIST=""
    2.71 +TARGET_DIR="$3"
    2.72 +TOP_DIR="$(pwd)"
    2.73 +TMP_DIR="/tmp/$RANDOM"
    2.74 +INSTALL_LIST=''
    2.75  SAVE_CACHE_DIR="$CACHE_DIR"
    2.76  
    2.77  # Path to tazpkg used dir and configuration files
    2.78 -MIRROR=$PKGS_DB/mirror
    2.79 -BLOCKED=$PKGS_DB/blocked-packages.list
    2.80 -UP_LIST=$PKGS_DB/packages.up
    2.81 +MIRROR="$PKGS_DB/mirror"
    2.82 +BLOCKED="$PKGS_DB/blocked-packages.list"
    2.83 +UP_LIST="$PKGS_DB/packages.up"
    2.84  DEFAULT_MIRROR="$ONLINE_PKGS"
    2.85  
    2.86  
    2.87 @@ -262,7 +261,7 @@
    2.88  # If not and user is root we create them.
    2.89  
    2.90  check_base_dir() {
    2.91 -	if [ "$(id -u)" = "0" ]; then
    2.92 +	if [ "$(id -u)" == "0" ]; then
    2.93  		check_dir $1$CACHE_DIR
    2.94  		check_dir $1$INSTALLED
    2.95  		check_dir $1$SLITAZ_LOGS
    2.96 @@ -312,24 +311,23 @@
    2.97  
    2.98  
    2.99  # Get repositories priority using $PKGS_DB/priority.
   2.100 -# In this files, undigest are called by their name and main mirror
   2.101 -# by main. Sort order: priority
   2.102 +# In this file undigest repos are called by their names and main mirror
   2.103 +# by 'main'. Sort order: priority
   2.104  
   2.105  look_for_priority() {
   2.106 -	[ -s $PKGS_DB/priority ] && priority=$(cat $PKGS_DB/priority)
   2.107 +	[ -s "$PKGS_DB/priority" ] && priority=$(cat $PKGS_DB/priority)
   2.108 +
   2.109  	for rep in main $(ls $PKGS_DB/undigest 2>/dev/null); do
   2.110 -		if [ ! -s $PKGS_DB/priority ] || \
   2.111 -			! grep -q ^$rep$ $PKGS_DB/priority; then
   2.112 +		if [ ! -s "$PKGS_DB/priority" ] || ! grep -q ^$rep$ $PKGS_DB/priority; then
   2.113  			priority=$(echo -e "$priority\n$rep")
   2.114  		fi
   2.115  	done
   2.116  	priority=$(echo "$priority" | sed '/^$/d' | \
   2.117  		while read line; do
   2.118 -		if [ "$line" = main ]; then
   2.119 -			echo $PKGS_DB
   2.120 -		else
   2.121 -			echo $PKGS_DB/undigest/$line
   2.122 -		fi
   2.123 +		case $line in
   2.124 +			main) echo $PKGS_DB;;
   2.125 +			*)    echo $PKGS_DB/undigest/$line;;
   2.126 +		esac
   2.127  	done)
   2.128  }
   2.129  
   2.130 @@ -337,10 +335,10 @@
   2.131  # Get package name in a directory
   2.132  
   2.133  package_fullname_in_dir() {
   2.134 -	[ -f $1/receipt ] || return
   2.135 -	EXTRAVERSION=""
   2.136 +	[ ! -f "$1/receipt" ] && return
   2.137 +	EXTRAVERSION=''
   2.138  	. $1/receipt
   2.139 -	echo $PACKAGE-$VERSION$EXTRAVERSION
   2.140 +	echo "$PACKAGE-$VERSION$EXTRAVERSION"
   2.141  }
   2.142  
   2.143  
   2.144 @@ -348,9 +346,9 @@
   2.145  
   2.146  get_installed_package_pathname() {
   2.147  	for i in $2$INSTALLED/${1%%-*}*; do
   2.148 -		[ -d $i ] || continue
   2.149 -		if [ "$1" = "$(package_fullname_in_dir $i)" ]; then
   2.150 -			echo $i
   2.151 +		[ ! -d $i ] && continue
   2.152 +		if [ "$1" == "$(package_fullname_in_dir $i)" ]; then
   2.153 +			echo "$i"
   2.154  			return
   2.155  		fi
   2.156  	done
   2.157 @@ -375,7 +373,7 @@
   2.158  check_for_packages_list() {
   2.159  	list_path="$PKGS_DB/packages.list"
   2.160  	if [ ! -f "$list_path" ]; then
   2.161 -		if test $(id -u) = 0 ; then
   2.162 +		if [ $(id -u) == 0 ]; then
   2.163  			tazpkg recharge
   2.164  		else
   2.165  			newline
   2.166 @@ -418,15 +416,15 @@
   2.167  
   2.168  get_cache_dir() {
   2.169  	echo $rep > $tmp/rep
   2.170 -	if [ "$rep" = "$PKGS_DB" ]; then
   2.171 +	if [ "$rep" == "$PKGS_DB" ]; then
   2.172  		CACHE_DIR="$SAVE_CACHE_DIR/$SLITAZ_RELEASE/packages"
   2.173 -	elif [ "${rep%-incoming}" = "$rep" ]; then
   2.174 +	elif [ "${rep%-incoming}" == "$rep" ]; then
   2.175  		CACHE_DIR="$SAVE_CACHE_DIR/${rep##*/}/packages"
   2.176  	else
   2.177  		rep="${rep%-incoming}"
   2.178  		CACHE_DIR="$SAVE_CACHE_DIR/${rep##*/}/packages-incoming"
   2.179  	fi
   2.180 -	[ -d "$CACHE_DIR" ] || mkdir -p $CACHE_DIR
   2.181 +	[ ! -d "$CACHE_DIR" ] && mkdir -p $CACHE_DIR
   2.182  	echo $CACHE_DIR > $tmp/cachedir
   2.183  }
   2.184  
   2.185 @@ -439,22 +437,22 @@
   2.186  		if echo $i | fgrep -q : ; then
   2.187  			# format 'alternative:newname'
   2.188  			# if alternative is installed then substitute newname
   2.189 -			if [ -f $2$INSTALLED/${i%:*}/receipt ]; then
   2.190 +			if [ -f "$2$INSTALLED/${i%:*}/receipt" ]; then
   2.191  				# substitute package dependency
   2.192 -				echo ${i#*:}
   2.193 +				echo "${i#*:}"
   2.194  				return
   2.195  			fi
   2.196  		else
   2.197  			# if alternative is installed then nothing to install
   2.198 -			if [ -f $2$INSTALLED/$i/receipt ]; then
   2.199 +			if [ -f "$2$INSTALLED/$i/receipt" ]; then
   2.200  				# substitute installed package
   2.201 -				echo $i
   2.202 +				echo "$i"
   2.203  				return
   2.204  			fi
   2.205  		fi
   2.206  	done
   2.207  	# if not found in packages.equiv then no substitution
   2.208 -	echo $1
   2.209 +	echo "$1"
   2.210  }
   2.211  
   2.212  
   2.213 @@ -462,19 +460,19 @@
   2.214  
   2.215  virtual_pkg() {
   2.216  	for i in $(for rep in $priority; do
   2.217 -		grep -hs "^$1=" $rep/packages.equiv
   2.218 +			grep -hs "^$1=" $rep/packages.equiv
   2.219  		done | sed "s/^$1=//"); do
   2.220  		if echo $i | fgrep -q : ; then
   2.221  			# format 'alternative:newname'
   2.222  			# if alternative is installed then substitute newname
   2.223 -			if [ -f $2$INSTALLED/${i%:*}/receipt ]; then
   2.224 +			if [ -f "$2$INSTALLED/${i%:*}/receipt" ]; then
   2.225  				# substitute package dependency
   2.226 -				echo ${i#*:}
   2.227 +				echo "${i#*:}"
   2.228  				return
   2.229  			fi
   2.230  		else
   2.231  			# unconditional substitution
   2.232 -			echo $i
   2.233 +			echo "$i"
   2.234  			return
   2.235  		fi
   2.236  	done
   2.237 @@ -487,26 +485,26 @@
   2.238  	local pkg
   2.239  	for rep in $priority; do
   2.240  		pkg=$(grep -A 1 -sh "^$1$" $rep/packages.txt | tail -1 | sed 's/^ *//')
   2.241 -		[ "$pkg" ] && pkg=$(grep -sh "^$1-$pkg" $rep/packages.list | head -1)
   2.242 +		[ -n "$pkg" ] && pkg=$(grep -sh "^$1-$pkg" $rep/packages.list | head -1)
   2.243  
   2.244  		# Allow user to call a package with his version number.
   2.245 -		[ "$pkg" ] || pkg=$(grep -sh "^$1$" $rep/packages.list | head -1)
   2.246 -
   2.247 -		[ "$pkg" ] || pkg=$(grep -sh "^$1-[0-9]" $rep/packages.list | head -1)
   2.248 -		[ "$pkg" ] || pkg=$(grep -sh "^$1-.[\.0-9]" $rep/packages.list | head -1)
   2.249 -		[ "$pkg" ] && get_cache_dir && break
   2.250 +		[ -n "$pkg" ] || pkg=$(grep -sh "^$1$" $rep/packages.list | head -1)
   2.251 +
   2.252 +		[ -n "$pkg" ] || pkg=$(grep -sh "^$1-[0-9]" $rep/packages.list | head -1)
   2.253 +		[ -n "$pkg" ] || pkg=$(grep -sh "^$1-.[\.0-9]" $rep/packages.list | head -1)
   2.254 +		[ -n "$pkg" ] && get_cache_dir && break
   2.255  	done
   2.256  	if [ -z "$pkg" ]; then
   2.257  		# Check for virtual package
   2.258  		local equiv
   2.259  		equiv=$(virtual_pkg $1)
   2.260  		if [ "$equiv" != "$1" ]; then
   2.261 -			PACKAGE=$equiv
   2.262 +			PACKAGE="$equiv"
   2.263  			get_package_filename $PACKAGE
   2.264  			return
   2.265  		fi
   2.266  	fi
   2.267 -	echo $pkg
   2.268 +	echo "$pkg"
   2.269  }
   2.270  
   2.271  
   2.272 @@ -518,10 +516,10 @@
   2.273  	local check_only
   2.274  	check_only="$1"
   2.275  	filename=$(get_package_filename $PACKAGE)
   2.276 -	if [ "$filename" ]; then
   2.277 -		PACKAGE=$filename
   2.278 -		CACHE_DIR=$(cat $tmp/cachedir)
   2.279 -		rep=$(cat $tmp/rep)
   2.280 +	if [ -n "$filename" ]; then
   2.281 +		PACKAGE="$filename"
   2.282 +		CACHE_DIR="$(cat $tmp/cachedir)"
   2.283 +		rep="$(cat $tmp/rep)"
   2.284  		rm -f $tmp/rep $tmp/cachedir
   2.285  	else
   2.286  		newline
   2.287 @@ -539,12 +537,12 @@
   2.288  log_pkg() {
   2.289  	local extra
   2.290  
   2.291 -	[ "$1" = "Installed" ] && \
   2.292 +	[ "$1" == 'Installed' ] && \
   2.293  	extra=" - $(fgrep $PACKAGE-$VERSION $PKGS_DB/installed.$SUM | awk '{ print $1 }')"
   2.294  
   2.295 -	[ -e $LOG ] || touch $LOG
   2.296 -
   2.297 -	[ -w $LOG ] &&
   2.298 +	[ -e "$LOG" ] || touch $LOG
   2.299 +
   2.300 +	[ -w "$LOG" ] &&
   2.301  	echo "$(date +'%F %T') - $1 - $PACKAGE ($VERSION$EXTRAVERSION)$extra" >> $LOG
   2.302  }
   2.303  
   2.304 @@ -552,13 +550,13 @@
   2.305  # Download a get-package script from this mirror
   2.306  
   2.307  download_get_script() {
   2.308 -	local p
   2.309 +	local p i
   2.310  	for p in $priority ; do
   2.311 -		local i
   2.312  		for i in $(cat $p/mirror) ; do
   2.313  			case "$i" in
   2.314 -				http://*|ftp://*)
   2.315 -					wget -O $2 ${i%packages/*}packages/get/$1 && return 0 ;;
   2.316 +				http://*|https://*|ftp://*)
   2.317 +					busybox wget -q -T 30 -U TazPkg -O $2 \
   2.318 +						${i%packages/*}packages/get/$1 && return 0 ;;
   2.319  			esac
   2.320  		done
   2.321  	done
   2.322 @@ -2249,6 +2247,7 @@
   2.323  				rm IDs.bak ID.bak
   2.324  				continue
   2.325  			fi
   2.326 +			rm IDs.bak ID.bak 2>/dev/null
   2.327  
   2.328  			title 'Recharging repository "%s"' "$repo_name"
   2.329  			[ -e 'IDs' ] && _ 'Database timestamp: %s' "$(date -d "@$(awk '{print $2}' IDs)" "+%x %R")"
   2.330 @@ -2308,8 +2307,10 @@
   2.331  				rm packages.list.bak
   2.332  				if [ -f 'extra.list.bak' ]; then
   2.333  					if [ -f 'extra.list' ]; then
   2.334 -						diff -u extra.list.bak extra.list | grep ^+[a-z] >> packages.diff
   2.335 -						rm extra.list.bak
   2.336 +						awk -F'|' '{print $1 " (extra)"}' extra.list > extra.list1
   2.337 +						awk -F'|' '{print $1 " (extra)"}' extra.list.bak > extra.list1.bak
   2.338 +						diff -u extra.list1.bak extra.list1 | grep ^+[a-z] >> packages.diff
   2.339 +						rm extra.list.bak extra.list1 extra.list1.bak
   2.340  					else
   2.341  						mv extra.list.bak extra.list
   2.342  					fi
   2.343 @@ -2354,15 +2355,15 @@
   2.344  				--check|-c) 	install="n" ;;
   2.345  			esac
   2.346  		done
   2.347 -		time=$(date +%s)
   2.348 +		time="$(date +%s)"
   2.349  
   2.350  		look_for_priority
   2.351  		for repo in $priority; do
   2.352 -			pkg_list=$repo/packages.list
   2.353 +			pkg_list="$repo/packages.list"
   2.354  			mtime=$(find $pkg_list -mtime +7)
   2.355 -			if [ "$mtime" ]; then
   2.356 +			if [ -n "$mtime" ]; then
   2.357  				if [ "$repo" == "$PKGS_DB" ]; then
   2.358 -					repo_name=main
   2.359 +					repo_name='main'
   2.360  				else
   2.361  					repo_name="${repo##*/}"
   2.362  				fi
   2.363 @@ -2376,18 +2377,18 @@
   2.364  		cd $INSTALLED
   2.365  		echo -n > $UP_LIST
   2.366  		blocked_count=0
   2.367 -		installed_sum=$PKGS_DB/installed.$SUM
   2.368 +		installed_sum="$PKGS_DB/installed.$SUM"
   2.369  
   2.370  		for pkg in *; do
   2.371  			[ ! -d $pkg ] && continue
   2.372  			unset VERSION EXTRAVERSION
   2.373  			. $pkg/receipt
   2.374 -			md5=$(fgrep "  $PACKAGE-${VERSION}$EXTRAVERSION.tazpkg" \
   2.375 +			md5=$(fgrep "  $PACKAGE-$VERSION$EXTRAVERSION.tazpkg" \
   2.376  				$installed_sum | awk '{print $1}')
   2.377  			for repo in $priority; do
   2.378 -				pkg_desc=$repo/packages.desc
   2.379 -				pkg_list=$repo/packages.list
   2.380 -				pkg_sum=$repo/packages.$SUM
   2.381 +				pkg_desc="$repo/packages.desc"
   2.382 +				pkg_list="$repo/packages.list"
   2.383 +				pkg_sum="$repo/packages.$SUM"
   2.384  
   2.385  				if ! fgrep -q "$md5  $PACKAGE-" $pkg_sum; then
   2.386  					# Jump to next repository in priority if pkg doesn't exist
   2.387 @@ -2441,10 +2442,11 @@
   2.388  				$upnb "$blocked")"
   2.389  			newline
   2.390  		fi
   2.391 +
   2.392  		# Pkgs to upgrade ? Skip, let install them all or ask user
   2.393 -		[ "$install" == "n" ] && exit 0
   2.394 +		[ "$install" == 'n' ] && exit 0
   2.395  		if [ "$upnb" -gt 0 ]; then
   2.396 -			if [ "$install" == "y" ]; then
   2.397 +			if [ "$install" == 'y' ]; then
   2.398  				answer=0
   2.399  			else
   2.400  				confirm "$(_ 'Do you wish to install them now? (y/N)')"
   2.401 @@ -2472,11 +2474,13 @@
   2.402  		cd $INSTALLED
   2.403  		shift
   2.404  		LIST=$@
   2.405 -		[ -n "$LIST" ] || LIST=$(ls)
   2.406 +		[ -z "$LIST" ] && LIST=$(ls)
   2.407  		MSG=$(_n 'No known bugs.')
   2.408 +
   2.409 +		title 'Known bugs in packages'
   2.410  		for PACKAGE in $LIST; do
   2.411 -			BUGS=""
   2.412 -			EXTRAVERSION=""
   2.413 +			BUGS=''
   2.414 +			EXTRAVERSION=''
   2.415  			. $PACKAGE/receipt
   2.416  			if [ -n "$BUGS" ]; then
   2.417  				MSG=$(_n 'Bug list completed')
   2.418 @@ -2487,7 +2491,7 @@
   2.419  EOT
   2.420  			fi
   2.421  		done
   2.422 -		echo "$MSG" ;;
   2.423 +		footer "$MSG" ;;
   2.424  
   2.425  
   2.426  	check)