tazpkg annotate modules/link @ rev 955

modules/search: allow search file with dash at start: tazpkg -sf "-spi"
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Dec 22 00:02:54 2017 +0200 (2017-12-22)
parents
children
rev   line source
al@844 1 #!/bin/sh
al@844 2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
al@844 3 # link - TazPkg module
al@844 4 # Link a package from another SliTaz installation
al@844 5
al@844 6
al@844 7 # Connect function libraries
al@844 8 . /lib/libtaz.sh
al@844 9
al@844 10 # Get TazPkg working environment
al@844 11 . @@MODULES@@/getenv
al@844 12
al@844 13
al@844 14
al@844 15
al@844 16 PACKAGE="$2"
al@844 17 TARGET_DIR="$3"
al@844 18
al@844 19 if [ -e "$INSTALLED/$PACKAGE" ]; then
al@844 20 _ 'Package "%s" is already installed.' "$PACKAGE"
al@844 21 exit 1
al@844 22 fi
al@844 23
al@844 24 ln -s "$TARGET_DIR$INSTALLED/$PACKAGE" $INSTALLED
al@844 25 DEPENDS="$(. "$INSTALLED/$PACKAGE/receipt"; echo $DEPENDS)"
al@844 26 MISSING=''
al@844 27
al@844 28 for i in $DEPENDS; do
al@844 29 [ -e $INSTALLED/$i ] && continue
al@844 30 MISSING="$MISSING$i "
al@844 31 _ 'Missing: %s' $i
al@844 32 done
al@844 33
al@844 34 if [ -n "$MISSING" ]; then
al@844 35 newline
al@844 36 confirm "$(_ 'Link all missing dependencies? (y/N)')"
al@844 37 answer=$?
al@844 38 newline
al@844 39 if [ "$answer" -eq 0 ]; then
al@844 40 for i in $MISSING; do
al@844 41 tazpkg link $i $TARGET_DIR
al@844 42 done
al@844 43 else
al@844 44 newline
al@844 45 _ 'Leaving dependencies unresolved for package "%s"' "$PACKAGE"
al@844 46 _ 'The package is installed but probably will not work.'
al@844 47 newline
al@844 48 fi
al@844 49 fi
al@844 50
al@844 51 . "$INSTALLED/$PACKAGE/receipt"
al@844 52 if grep -q ^pre_install "$INSTALLED/$PACKAGE/receipt"; then
al@844 53 pre_install
al@844 54 fi
al@844 55
al@844 56 while read path; do
al@844 57 [ -e "$path" ] && continue
al@844 58 while true; do
al@844 59 dir="$(dirname "$path")"
al@844 60 [ -e "$dir" ] && break
al@844 61 path="$dir"
al@844 62 done
al@844 63 ln -s "$TARGET_DIR$path" "$dir"
al@844 64 done < "$INSTALLED/$PACKAGE/files.list"
al@844 65
al@844 66 if grep -q ^post_install "$INSTALLED/$PACKAGE/receipt"; then
al@844 67 post_install
al@844 68 fi