spk rev 66
Bunch od small improvments and better package_full to handle extra repos
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Fri May 18 06:36:19 2012 +0200 (2012-05-18) |
parents | de880358af6d |
children | 885b195a5d69 |
files | lib/libspk.sh spk spk-add spk-archive |
line diff
1.1 --- a/lib/libspk.sh Fri May 18 03:48:08 2012 +0200 1.2 +++ b/lib/libspk.sh Fri May 18 06:36:19 2012 +0200 1.3 @@ -99,8 +99,8 @@ 1.4 # Check if package is on main or extra mirror. 1.5 mirrored_pkg() { 1.6 local name=$1 1.7 - local occurance=$(grep "^$name |" $pkgsdesc) 1.8 - [ -n "$occurance" ] 1.9 + local find=$(grep "^$name |" $pkgsdesc $extradb/*/*.desc 2>/dev/null) 1.10 + [ -n "$find" ] 1.11 } 1.12 1.13 # Download a file trying all mirrors 1.14 @@ -128,12 +128,18 @@ 1.15 esac 1.16 } 1.17 1.18 -# Assume package name is valid 1.19 +# Return the full package name, search in all packages.desc and break when 1.20 +# first occurance is found: Usage: full_package pkgname 1.21 full_package() { 1.22 - IFS="|" 1.23 - local line="$(grep "^$1 |" $pkgsdesc)" 1.24 - echo $line | busybox awk '{print $1 "-" $2}' 1.25 - unset IFS 1.26 + for desc in $(find $extradb $pkgsdesc -name packages.desc); do 1.27 + local line="$(grep "^$1 |" $desc)" 1.28 + local db=$(dirname $desc) 1.29 + if grep -q "^$1 |" $desc; then 1.30 + IFS="|" 1.31 + echo $line | busybox awk '{print $1 "-" $2 ".tazpkg"}' 1.32 + unset IFS && break 1.33 + fi 1.34 + done 1.35 } 1.36 1.37 # Check if a package is already installed. 1.38 @@ -149,8 +155,7 @@ 1.39 1.40 # get an already installed package from packages.equiv TODO REDO! 1.41 equivalent_pkg() { 1.42 - for i in $(grep -hs "^$1=" $pkgsequiv \ 1.43 - $extradb/*/packages.equiv | sed "s/^$1=//") 1.44 + for i in $(grep -hs "^$1=" $pkgsequiv $extradb/*/*.equiv | sed "s/^$1=//") 1.45 do 1.46 if echo $i | fgrep -q : ; then 1.47 # format 'alternative:newname' 1.48 @@ -209,3 +214,8 @@ 1.49 is_elf() { 1.50 [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ] 1.51 } 1.52 + 1.53 +# Exec functions directly for developement purpose. 1.54 +case $1 in 1.55 + *_*) func=$1 && shift && $func $@ ;; 1.56 +esac
2.1 --- a/spk Fri May 18 03:48:08 2012 +0200 2.2 +++ b/spk Fri May 18 06:36:19 2012 +0200 2.3 @@ -30,6 +30,7 @@ 2.4 --rm $(gettext "Remove installed packages") 2.5 --block $(gettext "Add packages to the blocked list") 2.6 --unblock $(gettext "Remove packages from the blocked list") 2.7 + --log $(gettext "Show package install and upgrade log") 2.8 --root= $(gettext "Set the root file system path") 2.9 --debug $(gettext "Display some usefull debug information") 2.10 2.11 @@ -96,8 +97,7 @@ 2.12 gettext "Blocking package:"; echo -n " $pkg" 2.13 echo $pkg >> $blocked 2.14 log "Blocked package: $pkg" && status 2.15 - fi 2.16 - continue ;; 2.17 + fi && continue ;; 2.18 *\ --unblock\ *) 2.19 check_root 2.20 [ -d "$installed/$pkg" ] || continue 2.21 @@ -108,8 +108,7 @@ 2.22 else 2.23 echo -n "$(boldify "$pkg") " 2.24 gettext "is not blocked"; newline 2.25 - fi 2.26 - continue ;; 2.27 + fi && continue ;; 2.28 *\ --rm\ *) 2.29 [ -d "$installed/$pkg" ] || continue 2.30 spk-rm $pkg --count=$count 2.31 @@ -133,9 +132,7 @@ 2.32 else 2.33 gettext "Any upgrade log for:"; boldify " $pkg" 2.34 newline 2.35 - fi 2.36 - 2.37 - continue ;; 2.38 + fi && continue ;; 2.39 esac 2.40 count=$(($count + 1)) 2.41 [ "$count" == 1 ] && newline
3.1 --- a/spk-add Fri May 18 03:48:08 2012 +0200 3.2 +++ b/spk-add Fri May 18 06:36:19 2012 +0200 3.3 @@ -97,9 +97,8 @@ 3.4 3.5 boldify $(gettext "Adding"; echo " $package_name") 3.6 separator 3.7 - gettext "Copying"; echo -n " $package_name..." 3.8 - cp $package_file $tmpdir 3.9 - status 3.10 + gettext "Copying package..." 3.11 + cp $package_file $tmpdir && status 3.12 3.13 # Add package checksum to $installed.$SUM 3.14 if [ "$verbose" ]; then 3.15 @@ -200,14 +199,15 @@ 3.16 cd - >/dev/null 3.17 fi 3.18 3.19 - # Merge ROOT_FS with Package FS 3.20 - gettext "Installing in:"; echo -n " $root/" 3.21 + # Merge package FS with $root 3.22 + nb=$(cat files.list | wc -l) 3.23 + gettext "Installing files:"; echo -n " $nb" 3.24 cp -a fs/* $root/ 3.25 status 3.26 3.27 # Remove old config files 3.28 if [ "$files_to_remove" ]; then 3.29 - gettext "Removing old"; echo -n " $package_name..." 3.30 + gettext "Removing old files..." 3.31 for file in $files_to_remove; do 3.32 if [ "$verbose" ]; then 3.33 gettext "Removing:"; echo " ${root}${file}" 3.34 @@ -219,9 +219,12 @@ 3.35 cd - >/dev/null 3.36 3.37 # Remove the temporary directory. 3.38 - gettext "Removing all tmp files... " 3.39 - rm -rf $tmpdir 3.40 - status 3.41 + if [ "$verbose" ]; then 3.42 + gettext "Removing all tmp files... " 3.43 + rm -rf $tmpdir && status 3.44 + else 3.45 + rm -rf $tmpdir 3.46 + fi 3.47 3.48 # Post install commands. 3.49 if grep -q ^post_install $package_dir/receipt; then 3.50 @@ -296,33 +299,35 @@ 3.51 boldify " $package_name" && exit 1 3.52 fi 3.53 3.54 - # package_full=Package-Version 3.55 + # We want: package-version.tazpkg 3.56 local package_full=$(full_package $package_name) 3.57 3.58 - cd $CACHE_DIR > /dev/null 3.59 - if [ -f "$package_full.tazpkg" ]; then 3.60 + cd $CACHE_DIR || exit 1 3.61 + if [ -f "$package_full" ]; then 3.62 [ "$count" == 1 ] && newline 3.63 - gettext "Using cache:"; echo " $(colorize "$package_full" 34)" 3.64 + gettext "Using cache:"; colorize " ${package_full%.tazpkg}" 34 3.65 + 3.66 # Check package download was finished 3.67 - if ! tail -c 2k $package_full.tazpkg | fgrep -q 00000000TRAILER; then 3.68 + if ! tail -c 2k $package_full | fgrep -q 00000000TRAILER; then 3.69 gettext "Continuing download of:"; echo " $package_name" 3.70 - download "$package_full.tazpkg" 3.71 + download "$package_full" 3.72 fi 3.73 + 3.74 # Check that the package has the correct checksum 3.75 - #if [ "$($CHECKSUM $package_full.tazpkg)" != "$(fgrep \" $package_full.tazpkg\" $pkgsmd5)" ]; then 3.76 + #if [ "$($CHECKSUM $package_full)" != "$(fgrep \" $package_full\" $pkgsmd5)" ]; then 3.77 # rm -f $package.tazpkg 3.78 - # download "$package_full.tazpkg" 3.79 + # download "$package_full" 3.80 #fi 3.81 else 3.82 - newline && download "$package_full.tazpkg" 3.83 + newline && download "$package_full" 3.84 fi 3.85 3.86 # Create package path early to avoid dependencies loop 3.87 mkdir -p $tmpdir 3.88 - extract_receipt $tmpdir "$CACHE_DIR/$package_full.tazpkg" 3.89 + extract_receipt $tmpdir "$CACHE_DIR/$package_full" 3.90 source $tmpdir/receipt 3.91 3.92 - install_package "$CACHE_DIR/$package_full.tazpkg" 3.93 + install_package "$CACHE_DIR/$package_full" 3.94 3.95 #[ "$exec" ] && chroot $root/ $package_name 3.96 [ "$exec" ] && $package_name $root 3.97 @@ -339,8 +344,8 @@ 3.98 local pkg=$(equivalent_pkg $pkgorg) 3.99 # Check if package is not installed 3.100 if [ ! -d "$installed/$pkg" ]; then 3.101 - if [ ! -f "$PKGS_DB/packages.list" ]; then 3.102 - #spk-up --recharge-only 3.103 + if [ ! -f "$pkgsdesc" ]; then 3.104 + #spk-up --list 3.105 tazpkg recharge 3.106 fi 3.107 spk-add $pkg 3.108 @@ -382,7 +387,7 @@ 3.109 3.110 # Show all new counted packages in verbose mode 3.111 if [ "$verbose" ]; then 3.112 - gettext "New installed packages:"; colorize " $count" 34 3.113 + gettext "Handled packages:"; colorize " $count" 34 3.114 fi 3.115 3.116 exit 0
4.1 --- a/spk-archive Fri May 18 03:48:08 2012 +0200 4.2 +++ b/spk-archive Fri May 18 06:36:19 2012 +0200 4.3 @@ -33,7 +33,8 @@ 4.4 local package_file=$1 4.5 local package_name=$(package_name $package_file) 4.6 local size=$(du -sh $package_file | awk '{print $1}') 4.7 - gettext "Extracting"; echo -n " $package_name: $size" 4.8 + 4.9 + gettext "Extracting archive"; echo -n ": $size" 4.10 cpio -idm --quiet < ${package_file##*/} && rm -f ${package_file##*/} 4.11 unlzma -c fs.cpio.lzma | cpio -idm --quiet && rm fs.cpio.lzma 4.12 status