tazpkg annotate modules/link @ rev 844
Finish modularization. Beta release: still have few FIXMEs and TODOs.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Mon Oct 05 03:53:47 2015 +0300 (2015-10-05) |
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 |