tazpkg annotate modules/flavor @ rev 846

Remove "busybox" "prefixes" (thanks llev)
We used "busybox wget", etc. to be sure we called Busybox's "wget", not any other "wget". Workaround already done in "getenv" module.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Oct 09 13:14:01 2015 +0300 (2015-10-09)
parents d6cbd0c5f273
children 50421cb50644
rev   line source
al@840 1 #!/bin/sh
al@840 2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
al@840 3 # flavor - TazPkg module
al@840 4 # Install package-list from a flavor
al@840 5
al@840 6
al@840 7 # Connect function libraries
al@840 8 . /lib/libtaz.sh
al@840 9
al@840 10 # Get TazPkg working environment
al@840 11 . @@MODULES@@/getenv
al@840 12
al@840 13
al@840 14
al@840 15
al@840 16 # Download a file from this mirror
al@840 17
al@840 18 download_from() {
al@840 19 case "$1" in
al@840 20 # Mirror URL can have a trailing slash or not.
al@840 21 http://* | https://* | ftp://*)
al@846 22 wget -c -q -T 30 -U $UA ${1%/}/$2 2>/dev/null && break ;;
al@840 23 *)
al@840 24 ln -sf ${1%/}/$2 . && break ;;
al@840 25 esac
al@840 26 }
al@840 27
al@840 28
al@840 29 # Download a file trying all mirrors
al@840 30
al@840 31 download() {
al@840 32 # input: <package_name>-<version>.tazpkg
al@840 33 local i
al@840 34 case "$1" in
al@840 35 *.tazpkg)
al@844 36 for i in $PRIORITY; do
al@840 37 if [ -n "$(awk -F$'\t' -vp="$1" 'p==$1"-"$2".tazpkg"{print $1}' \
al@840 38 "$i/packages.info")" ]; then
al@840 39 download_from "$(cat $i/mirror)" "$@" && return
al@840 40 fi
al@840 41 done
al@840 42 ;;
al@840 43 esac
al@840 44
al@844 45 for i in $(cat $(for rep in $PRIORITY; do echo $rep/mirror; done) 2>/dev/null); do
al@840 46 download_from "$i" "$@" && break
al@840 47 done
al@840 48 }
al@840 49
al@840 50
al@840 51
al@840 52
al@840 53 FLAVOR="$1"
al@840 54 TMP_DIR=$(mktemp -d)
al@840 55
al@840 56 [ -f "$FLAVOR.flavor" ] && cp "$FLAVOR.flavor" "$TMP_DIR"
al@840 57
al@840 58 cd "$TMP_DIR"
al@840 59 if [ -f "$FLAVOR.flavor" ] || download "$FLAVOR.flavor"; then
al@840 60 zcat < "$FLAVOR.flavor" | cpio --quiet -i >/dev/null
al@840 61
al@844 62 while read pkgver; do
al@844 63 # 'pkgver' here in form 'package-version'
al@844 64 awk -F$'\t' -vf="$pkgver" '$1 "-" $2 == f {exit 1}' "$PKGS_DB/installed.info"
al@844 65 # Continue if package already installed
al@844 66 [ "$?" -eq 1 ] && continue
al@840 67
al@840 68 # Install package if it not installed or has a different version
al@840 69 cd "$CACHE_DIR"
al@844 70 download "$pkgver.tazpkg"
al@840 71 cd "$TMP_DIR"
al@844 72 tazpkg install "$CACHE_DIR/$pkgver.tazpkg" --forced
al@840 73 done < "$FLAVOR.pkglist"
al@840 74
al@840 75 [ -f "$FLAVOR.nonfree" ] && \
al@840 76 while read pkg; do
al@840 77 [ -d "$INSTALLED/$pkg" ] && continue
al@840 78 [ ! -d "$INSTALLED/get-$pkg" ] && tazpkg get-install get-$pkg
al@840 79 get-$pkg
al@840 80 done < "$FLAVOR.nonfree"
al@840 81
al@840 82 # Option "--purge"
al@844 83 # FIXME: respect all the installed dependencies of the flavored packages
al@840 84 [ -n "$purge" ] && \
al@840 85 for pkg in $(awk -F$'\t' '{printf "%s:%s ", $1, $2}' "$PKGS_DB/installed.info"); do
al@840 86 # If installed 'package-version' listed in 'pkglist'
al@840 87 grep -q "^${pkg/:/-}$" "$FLAVOR.pkglist" && continue
al@840 88 # If installed 'package' listed in 'nonfree'
al@840 89 grep -qs "^${pkg%:*}$" "$FLAVOR.nonfree" && continue
al@840 90 # Remove other packages
al@840 91 tazpkg remove "${pkg%:*}"
al@840 92 done
al@840 93 else
al@840 94 _ "Can't find flavor \"%s\". Abort." "$FLAVOR"
al@840 95 fi
al@840 96 cd "$TOP_DIR"
al@840 97 rm -rf "$TMP_DIR"