# HG changeset patch # User Aleksej Bobylev # Date 1543251188 -7200 # Node ID f079c87ba41932f02508fa40d8f4eed167ecebbe # Parent f40de1e052aa6b976b4d22c8a16d30dfefa5d16f Modules "get" and "install": fix cookmode again diff -r f40de1e052aa -r f079c87ba419 modules/get --- a/modules/get Mon Nov 26 14:59:03 2018 +0200 +++ b/modules/get Mon Nov 26 18:53:08 2018 +0200 @@ -160,8 +160,8 @@ [ ! -e 'packages.info' -a ! -e "packages-$SLITAZ_ARCH.info" ] && tazpkg mkdb "$extra_cache" --root='' --forced >/dev/null - pi='packages.info' - [ -e "$pi" ] || pi="packages-$SLITAZ_ARCH.info" + pi="packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi='packages.info' if [ -e "$pi" ]; then awk -F$'\t' -vp="$1" '$1==p{exit 1}' $pi @@ -295,7 +295,11 @@ virtual_name() { # input: $1 virtual package name # $2 repository db directory - local i + local i pi + + pi="$2/packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi="$2/packages.info" + unset IFS for i in $(grep -hs "^$1=" "$2/packages.equiv" | sed "s/^$1=//"); do if echo $i | fgrep -q : ; then @@ -306,7 +310,7 @@ echo ${i#*:} return fi - elif ! grep -q "^$1 " "$2/packages.info" || [ -f "$INSTALLED/$i/receipt" ]; then + elif ! grep -q "^$1 " "$pi" || [ -f "$INSTALLED/$i/receipt" ]; then # unconditional substitution echo $i return @@ -320,12 +324,16 @@ # input: $1 virtual package name # $2 repository db directory # output: display possible package name + local pi debug "\nvirtual_pkg('$1', '$2')" + pi="$2/packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi="$2/packages.info" + if [ "$tazpkg_command" != 'get-install' ]; then # 'get' command: download any package - if [ -z "$(awk -F$'\t' -vp="$1" '{if ($1 == p) print p}' "$2/packages.info")" ]; then + if [ -z "$(awk -F$'\t' -vp="$1" '{if ($1 == p) print p}' "$pi")" ]; then # This package does not exist in the list, it may be a virtual package virtual_name "$1" "$2" else @@ -351,17 +359,16 @@ IFS=$'\n' for rep in $PRIORITY; do - pi="$rep/packages.info" - [ ! -e "$pi" ] && pi="$rep/packages-$SLITAZ_ARCH.info" - [ ! -e "$pi" ] && continue + pi="$rep/packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi="$rep/packages.info" + [ -e "$pi" ] || continue # If found, output string "-" namever=$(awk -F$'\t' -vpkg="$(virtual_pkg "$1" "$rep")" \ '$1==pkg || $1"-"$2==pkg {printf "%s-%s", $1, $2; exit}' "$pi") pkgfile="$namever-$SLITAZ_ARCH.tazpkg" - [ -e "$pkgfile" ] || - pkgfile="$namever-any.tazpkg" + [ -e "$pkgfile" ] || pkgfile="$namever-any.tazpkg" if [ -n "$namever" ]; then pkgsum=$(awk -vfile="$pkgfile" '{if($2==file)print $1}' $rep/packages.md5) @@ -436,12 +443,12 @@ # output: full path to the found package # ROOT NOT USED - local PKGS='/home/slitaz/packages' found='0' + local PKGS='/home/slitaz/packages' found='0' i [ -e "/etc/slitaz/cook.conf" ] && . /etc/slitaz/cook.conf # Find local package - pi="$PKGS/packages.info" - [ -e "$pi" ] || pi="$PKGS/packages-$SLITAZ_ARCH.info" + pi="$PKGS/packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi="$PKGS/packages.info" namever="$(awk -F$'\t' -vpkg="$1" '{ if ($1 == pkg) { printf("%s-%s", $1, $2); exit; } @@ -453,18 +460,16 @@ if (index(" " $10 " ", " " pkg " ")) { printf("%s-%s", $1, $2); exit; } }' $pi)" - if [ -n "$namever" ]; then - pkgfile=$(find "$PKGS" -name "$namever-$SLITAZ_ARCH.tazpkg") - [ -n "$pkgfile" ] || - pkgfile=$(find "$PKGS" -name "$namever-any.tazpkg") - fi + for i in $SLITAZ_ARCH any; do + pkgfile="$PKGS/$namever-$i.tazpkg" + if [ -e "$pkgfile" ]; then + echo "$pkgfile" + return + fi + done - if [ -n "$pkgfile" -a -f "$pkgfile" ]; then - echo "$pkgfile" - else - # Proceed to get package as usual (non-local) - get_pkg "$1" - fi + # Proceed to get package as usual (non-local) + get_pkg "$1" } diff -r f40de1e052aa -r f079c87ba419 modules/install --- a/modules/install Mon Nov 26 14:59:03 2018 +0200 +++ b/modules/install Mon Nov 26 18:53:08 2018 +0200 @@ -46,11 +46,12 @@ if [ -n "$local" ]; then # Search for virtual packages if [ -n "$cookmode" ]; then - pi='/home/slitaz/packages/packages.info' - [ -e "$pi" ] || pi="/home/slitaz/packages/packages-$SLITAZ_ARCH.info" + pi="/home/slitaz/packages/packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi='/home/slitaz/packages/packages.info' else pi="$(dirname "$2")/packages.info" fi + [ -f "$pi" ] && out=$(awk -F$'\t' -vpkg="$1" '{ # if package name or provided package name matched @@ -183,8 +184,10 @@ if [ -n "$local" ]; then [ -z "$quiet" ] && _ 'Checking if package "%s" exists in local list...' "$pkg" [ -n "$cookmode" ] && dir='/home/slitaz/packages' - pi="$dir/packages.info" - [ -e "$pi" ] || pi="$dir/packages-$SLITAZ_ARCH.info" + + pi="$dir/packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi="$dir/packages.info" + # Find local package if [ -f "$pi" ]; then # Packages database exists (should be everfresh!) @@ -200,13 +203,18 @@ if (index(" " $10 " ", " " pkg " ")) { printf("%s-%s", $1, $2); exit; } }' "$pi") # = - - # Package file may be in form .tazpkg or -.tazpkg, so find one - [ -n "$namever" ] && pkgfile=$(find "$dir" -name "$namever*.tazpkg") + # Package file may be in form -.tazpkg or -any.tazpkg, so find one + if [ -n "$namever" ]; then + pkgfile=$(find "$dir" -name "$namever-$SLITAZ_ARCH.tazpkg") + [ -n "$pkgfile" ] || + pkgfile=$(find "$dir" -name "$namever-any.tazpkg") + fi + [ -n "$pkgfile" ] && found='1' else # Packages DB missing, proceed to sniff packages tempd="$(mktemp -d)"; cd "$tempd" - for pkgfile in $dir/$pkg-*.tazpkg; do + for pkgfile in $dir/$pkg-*-$SLITAZ_ARCH.tazpkg $dir/$pkg-*-any.tazpkg; do [ -e "$pkgfile" ] || continue # Extract receipt from each matched package cpio -F "$pkgfile" -i receipt >/dev/null 2>&1 @@ -274,11 +282,9 @@ # Try to find short description for mirrored package if [ -z "$short_desc" ]; then - if [ -e "$PKGS_DB/packages.info" ]; then - pi="$PKGS_DB/packages.info" - else - "$PKGS_DB/packages-$SLITAZ_ARCH.info" - fi + pi="$PKGS_DB/packages-$SLITAZ_ARCH.info" + [ -e "$pi" ] || pi="$PKGS_DB/packages.info" + short_desc=$(awk -F$'\t' -vp="$1" '$1==p{print $4; exit}' "$pi") fi