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.
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" |