spk rev 55
spk-add: handle local packages and almost fix modified files check and display overwrited files
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Thu May 17 13:33:31 2012 +0200 (2012-05-17) |
parents | ee68829c1d60 |
children | 256ff61b7248 |
files | lib/libspk.sh spk-add |
line diff
1.1 --- a/lib/libspk.sh Thu May 17 11:08:49 2012 +0200 1.2 +++ b/lib/libspk.sh Thu May 17 13:33:31 2012 +0200 1.3 @@ -46,6 +46,7 @@ 1.4 extract_receipt() { 1.5 local dir="$1" 1.6 local file="$2" 1.7 + debug "extract_receipt $1 $2" 1.8 cd "$dir" 1.9 { cpio --quiet -i receipt > /dev/null 2>&1; } < $file 1.10 cd - >/dev/null 1.11 @@ -99,6 +100,7 @@ 1.12 local name="$1" 1.13 if [ -d "$installed/$name" ]; then 1.14 echo $(boldify "$name") $(gettext "package is already installed") 1.15 + [ "$forced" ] || rm -rf $tmpdir 1.16 continue 1.17 fi 1.18 }
2.1 --- a/spk-add Thu May 17 11:08:49 2012 +0200 2.2 +++ b/spk-add Thu May 17 13:33:31 2012 +0200 2.3 @@ -11,6 +11,9 @@ 2.4 2.5 tmpdir="/tmp/spk/$RANDOM" 2.6 2.7 +# TODO: Handle packages.equiv: php dep on lighttpd, but id apache is installed 2.8 +# we dont need lighttpd since apache is equivalent. 2.9 + 2.10 # 2.11 # Functions 2.12 # 2.13 @@ -64,17 +67,11 @@ 2.14 install_package() { 2.15 local package_file=$1 2.16 2.17 - # Never used I think!!! 2.18 # Set by receipt: pre_depends() DEPENDS SELF_INSTALL CONFIG_FILES post_install() 2.19 2.20 - # Create package path early to avoid dependencies loop 2.21 - mkdir -p $tmpdir 2.22 - extract_receipt $tmpdir $package_file 2.23 - source $tmpdir/receipt 2.24 - 2.25 local package_name=$PACKAGE 2.26 local package_dir="$installed/$package_name" 2.27 - mkdir -p $package_dir 2.28 + mkdir -p $package_dir || exit 1 2.29 2.30 # Run pre_depends from receipt if it exists 2.31 if grep -q ^pre_depends $tmpdir/receipt; then 2.32 @@ -147,26 +144,29 @@ 2.33 debug "check modified files" 2.34 for file in $file_list 2.35 do 2.36 - local filegrep=$(grep ^${file}$ $installed/*/files.list) 2.37 + local filegrep=$(egrep ^${file}$ $installed/*/files.list) 2.38 if [ "$filegrep" ]; then 2.39 local list=$(echo $filegrep | cut -d ":" -f 1) 2.40 + local count=0 2.41 for pkg_file in $list; do 2.42 local name=$(basename $(dirname $pkg_file)) 2.43 - [ "$pkg" == "$name" ] && continue 2 2.44 - eval_gettext "Conflict package: \$name"; newline 2.45 - # If confirm is set, ask to remove 2.46 - if ! $confirm || gettext "Remove " && confirm; then 2.47 - spk-rm $name 2.48 - else 2.49 - eval_gettext "Warning! /$file will be overwritten!"; newline 2.50 - eval_gettext "If you remove /$package_name, be sure to reinstall $name"; newline 2.51 + [ "$package_name" == "$name" ] && continue 2 2.52 + count=$(($count +1)) 2.53 + [ "$count" == "1" ] && gettext "Modified package:"; \ 2.54 + colorize " $name" 31 2.55 + gettext "Overwriting file:"; echo " $file" 2.56 + # If confirm is set, ask to remove. Do we want that ? 2.57 + # If gawk is installed for example we will never remove Busybox 2.58 + # Use CONFLICTS receipt variable to avoid 2.59 + if [ "$confirm" ]; then 2.60 + echo -n "NOTE: confirm: spk-rm $name ???"; read 2.61 fi 2.62 done 2.63 fi 2.64 done 2.65 2.66 cd $tmpdir || exit 1 2.67 - cp receipt files.list $package_dir 2.68 + cp receipt files.list $package_dir || exit 1 2.69 2.70 # Copy the description if found. 2.71 [ -f "description.txt" ] && cp description.txt $package_dir 2.72 @@ -256,7 +256,22 @@ 2.73 # Parameters: package_file 2.74 install_local() { 2.75 package_file="$1" 2.76 - check_valid_tazpkg $package_file 2.77 + #check_valid_tazpkg $package_file 2.78 + if [ -f "$package_file" ]; then 2.79 + if [ $(dirname $package_file) == "." ]; then 2.80 + package_file=$(pwd)/$package_file 2.81 + fi 2.82 + debug "package file: $package_file" 2.83 + else 2.84 + gettext "Unable to find:"; echo " $package_file" 2.85 + exit 1 2.86 + fi 2.87 + 2.88 + # Get package name now to check if installed 2.89 + mkdir -p $tmpdir 2.90 + extract_receipt $tmpdir $package_file 2.91 + source $tmpdir/receipt 2.92 + [ "$forced" ] || check_installed $PACKAGE 2.93 install_package $package_file 2.94 update_databases 2.95 } 2.96 @@ -299,6 +314,11 @@ 2.97 newline && download "$package_full.tazpkg" 2.98 fi 2.99 2.100 + # Create package path early to avoid dependencies loop 2.101 + mkdir -p $tmpdir 2.102 + extract_receipt $tmpdir "$CACHE_DIR/$package_full.tazpkg" 2.103 + source $tmpdir/receipt 2.104 + 2.105 install_package "$CACHE_DIR/$package_full.tazpkg" 2.106 2.107 #[ "$AUTOEXEC" ] && chroot $root/ $package_name 2.108 @@ -344,10 +364,11 @@ 2.109 do 2.110 case "$pkg" in 2.111 *.tazpkg|*.spk) 2.112 - [ "$forced" ] || check_installed $(package_name $package_file) 2.113 - echo "Local package" 2.114 - #install_local $pkg 2.115 - ;; 2.116 + #[ "$forced" ] || check_installed $(package_name $pkg) 2.117 + install_local $pkg ;; 2.118 + *.deb|.rmp) 2.119 + echo "TODO: spk-convert then install" ;; 2.120 + *.*) gettext "WARNING: Not a valid package:"; echo " $pkg" ;; 2.121 --*) continue ;; 2.122 *) 2.123 [ "$forced" ] || check_installed $pkg