tazpkg rev 970

Modules "get" and "install": fix cookmode again
author Aleksej Bobylev <al.bobylev@gmail.com>
date Mon Nov 26 18:53:08 2018 +0200 (2018-11-26)
parents f40de1e052aa
children d2dc3d5ed06d
files modules/get modules/install
line diff
     1.1 --- a/modules/get	Mon Nov 26 14:59:03 2018 +0200
     1.2 +++ b/modules/get	Mon Nov 26 18:53:08 2018 +0200
     1.3 @@ -160,8 +160,8 @@
     1.4  		[ ! -e 'packages.info' -a ! -e "packages-$SLITAZ_ARCH.info" ] &&
     1.5  			tazpkg mkdb "$extra_cache" --root='' --forced >/dev/null
     1.6  
     1.7 -		pi='packages.info'
     1.8 -		[ -e "$pi" ] || pi="packages-$SLITAZ_ARCH.info"
     1.9 +		pi="packages-$SLITAZ_ARCH.info"
    1.10 +		[ -e "$pi" ] || pi='packages.info'
    1.11  
    1.12  		if [ -e "$pi" ]; then
    1.13  			awk -F$'\t' -vp="$1" '$1==p{exit 1}' $pi
    1.14 @@ -295,7 +295,11 @@
    1.15  virtual_name() {
    1.16  	# input:  $1 virtual package name
    1.17  	#         $2 repository db directory
    1.18 -	local i
    1.19 +	local i pi
    1.20 +
    1.21 +	pi="$2/packages-$SLITAZ_ARCH.info"
    1.22 +	[ -e "$pi" ] || pi="$2/packages.info"
    1.23 +
    1.24  	unset IFS
    1.25  	for i in $(grep -hs "^$1=" "$2/packages.equiv" | sed "s/^$1=//"); do
    1.26  		if echo $i | fgrep -q : ; then
    1.27 @@ -306,7 +310,7 @@
    1.28  				echo ${i#*:}
    1.29  				return
    1.30  			fi
    1.31 -		elif ! grep -q "^$1	" "$2/packages.info" || [ -f "$INSTALLED/$i/receipt" ]; then
    1.32 +		elif ! grep -q "^$1	" "$pi" || [ -f "$INSTALLED/$i/receipt" ]; then
    1.33  			# unconditional substitution
    1.34  			echo $i
    1.35  			return
    1.36 @@ -320,12 +324,16 @@
    1.37  	# input:  $1 virtual package name
    1.38  	#         $2 repository db directory
    1.39  	# output: display possible package name
    1.40 +	local pi
    1.41  
    1.42  	debug "\nvirtual_pkg('$1', '$2')"
    1.43  
    1.44 +	pi="$2/packages-$SLITAZ_ARCH.info"
    1.45 +	[ -e "$pi" ] || pi="$2/packages.info"
    1.46 +
    1.47  	if [ "$tazpkg_command" != 'get-install' ]; then
    1.48  		# 'get' command: download any package
    1.49 -		if [ -z "$(awk -F$'\t' -vp="$1" '{if ($1 == p) print p}' "$2/packages.info")" ]; then
    1.50 +		if [ -z "$(awk -F$'\t' -vp="$1" '{if ($1 == p) print p}' "$pi")" ]; then
    1.51  			# This package does not exist in the list, it may be a virtual package
    1.52  			virtual_name "$1" "$2"
    1.53  		else
    1.54 @@ -351,17 +359,16 @@
    1.55  
    1.56  	IFS=$'\n'
    1.57  	for rep in $PRIORITY; do
    1.58 -		pi="$rep/packages.info"
    1.59 -		[ ! -e "$pi" ] && pi="$rep/packages-$SLITAZ_ARCH.info"
    1.60 -		[ ! -e "$pi" ] && continue
    1.61 +		pi="$rep/packages-$SLITAZ_ARCH.info"
    1.62 +		[ -e "$pi" ] || pi="$rep/packages.info"
    1.63 +		[ -e "$pi" ] || continue
    1.64  
    1.65  		# If found, output string "<name>-<ver>"
    1.66  		namever=$(awk -F$'\t' -vpkg="$(virtual_pkg "$1" "$rep")" \
    1.67  			'$1==pkg || $1"-"$2==pkg {printf "%s-%s", $1, $2; exit}' "$pi")
    1.68  
    1.69  		pkgfile="$namever-$SLITAZ_ARCH.tazpkg"
    1.70 -		[ -e "$pkgfile" ] ||
    1.71 -		pkgfile="$namever-any.tazpkg"
    1.72 +		[ -e "$pkgfile" ] || pkgfile="$namever-any.tazpkg"
    1.73  
    1.74  		if [ -n "$namever" ]; then
    1.75  			pkgsum=$(awk -vfile="$pkgfile" '{if($2==file)print $1}' $rep/packages.md5)
    1.76 @@ -436,12 +443,12 @@
    1.77  	# output: full path to the found package
    1.78  	# ROOT NOT USED
    1.79  
    1.80 -	local PKGS='/home/slitaz/packages' found='0'
    1.81 +	local PKGS='/home/slitaz/packages' found='0' i
    1.82  	[ -e "/etc/slitaz/cook.conf" ] && . /etc/slitaz/cook.conf
    1.83  
    1.84  	# Find local package
    1.85 -	pi="$PKGS/packages.info"
    1.86 -	[ -e "$pi" ] || pi="$PKGS/packages-$SLITAZ_ARCH.info"
    1.87 +	pi="$PKGS/packages-$SLITAZ_ARCH.info"
    1.88 +	[ -e "$pi" ] || pi="$PKGS/packages.info"
    1.89  
    1.90  	namever="$(awk -F$'\t' -vpkg="$1" '{
    1.91  		if ($1 == pkg) { printf("%s-%s", $1, $2); exit; }
    1.92 @@ -453,18 +460,16 @@
    1.93  		if (index(" " $10 " ", " " pkg " ")) { printf("%s-%s", $1, $2); exit; }
    1.94  	}' $pi)"
    1.95  
    1.96 -	if [ -n "$namever" ]; then
    1.97 -		pkgfile=$(find "$PKGS" -name "$namever-$SLITAZ_ARCH.tazpkg")
    1.98 -		[ -n "$pkgfile" ] ||
    1.99 -		pkgfile=$(find "$PKGS" -name "$namever-any.tazpkg")
   1.100 -	fi
   1.101 +	for i in $SLITAZ_ARCH any; do
   1.102 +		pkgfile="$PKGS/$namever-$i.tazpkg"
   1.103 +		if [ -e "$pkgfile" ]; then
   1.104 +			echo "$pkgfile"
   1.105 +			return
   1.106 +		fi
   1.107 +	done
   1.108  
   1.109 -	if [ -n "$pkgfile" -a -f "$pkgfile" ]; then
   1.110 -		echo "$pkgfile"
   1.111 -	else
   1.112 -		# Proceed to get package as usual (non-local)
   1.113 -		get_pkg "$1"
   1.114 -	fi
   1.115 +	# Proceed to get package as usual (non-local)
   1.116 +	get_pkg "$1"
   1.117  }
   1.118  
   1.119  
     2.1 --- a/modules/install	Mon Nov 26 14:59:03 2018 +0200
     2.2 +++ b/modules/install	Mon Nov 26 18:53:08 2018 +0200
     2.3 @@ -46,11 +46,12 @@
     2.4  	if [ -n "$local" ]; then
     2.5  		# Search for virtual packages
     2.6  		if [ -n "$cookmode" ]; then
     2.7 -			pi='/home/slitaz/packages/packages.info'
     2.8 -			[ -e "$pi" ] || pi="/home/slitaz/packages/packages-$SLITAZ_ARCH.info"
     2.9 +			pi="/home/slitaz/packages/packages-$SLITAZ_ARCH.info"
    2.10 +			[ -e "$pi" ] || pi='/home/slitaz/packages/packages.info'
    2.11  		else
    2.12  			pi="$(dirname "$2")/packages.info"
    2.13  		fi
    2.14 +
    2.15  		[ -f "$pi" ] &&
    2.16  		out=$(awk -F$'\t' -vpkg="$1" '{
    2.17  			# if package name or provided package name matched
    2.18 @@ -183,8 +184,10 @@
    2.19  			if [ -n "$local" ]; then
    2.20  				[ -z "$quiet" ] && _ 'Checking if package "%s" exists in local list...' "$pkg"
    2.21  				[ -n "$cookmode" ] && dir='/home/slitaz/packages'
    2.22 -				pi="$dir/packages.info"
    2.23 -				[ -e "$pi" ] || pi="$dir/packages-$SLITAZ_ARCH.info"
    2.24 +
    2.25 +				pi="$dir/packages-$SLITAZ_ARCH.info"
    2.26 +				[ -e "$pi" ] || pi="$dir/packages.info"
    2.27 +
    2.28  				# Find local package
    2.29  				if [ -f "$pi" ]; then
    2.30  					# Packages database exists (should be everfresh!)
    2.31 @@ -200,13 +203,18 @@
    2.32  						if (index(" " $10 " ", " " pkg " ")) { printf("%s-%s", $1, $2); exit; }
    2.33  					}' "$pi")		# <namever> = <package_name>-<package_version>
    2.34  
    2.35 -					# Package file may be in form <namever>.tazpkg or <namever>-<arch>.tazpkg, so find one
    2.36 -					[ -n "$namever" ] && pkgfile=$(find "$dir" -name "$namever*.tazpkg")
    2.37 +					# Package file may be in form <namever>-<arch>.tazpkg or <namever>-any.tazpkg, so find one
    2.38 +					if [ -n "$namever" ]; then
    2.39 +						pkgfile=$(find "$dir" -name "$namever-$SLITAZ_ARCH.tazpkg")
    2.40 +						[ -n "$pkgfile" ] ||
    2.41 +						pkgfile=$(find "$dir" -name "$namever-any.tazpkg")
    2.42 +					fi
    2.43 +
    2.44  					[ -n "$pkgfile" ] && found='1'
    2.45  				else
    2.46  					# Packages DB missing, proceed to sniff packages
    2.47  					tempd="$(mktemp -d)"; cd "$tempd"
    2.48 -					for pkgfile in $dir/$pkg-*.tazpkg; do
    2.49 +					for pkgfile in $dir/$pkg-*-$SLITAZ_ARCH.tazpkg $dir/$pkg-*-any.tazpkg; do
    2.50  						[ -e "$pkgfile" ] || continue
    2.51  						# Extract receipt from each matched package
    2.52  						cpio -F "$pkgfile" -i receipt >/dev/null 2>&1
    2.53 @@ -274,11 +282,9 @@
    2.54  
    2.55  	# Try to find short description for mirrored package
    2.56  	if [ -z "$short_desc" ]; then
    2.57 -		if [ -e "$PKGS_DB/packages.info" ]; then
    2.58 -			pi="$PKGS_DB/packages.info"
    2.59 -		else
    2.60 -			"$PKGS_DB/packages-$SLITAZ_ARCH.info"
    2.61 -		fi
    2.62 +		pi="$PKGS_DB/packages-$SLITAZ_ARCH.info"
    2.63 +		[ -e "$pi" ] || pi="$PKGS_DB/packages.info"
    2.64 +
    2.65  		short_desc=$(awk -F$'\t' -vp="$1" '$1==p{print $4; exit}' "$pi")
    2.66  	fi
    2.67