# HG changeset patch # User Christophe Lincoln # Date 1337315779 -7200 # Node ID 63fb720dc777143a1d15fcfb13766664c673eb84 # Parent de880358af6ddee27d50cd3e5b161af579029626 Bunch od small improvments and better package_full to handle extra repos diff -r de880358af6d -r 63fb720dc777 lib/libspk.sh --- a/lib/libspk.sh Fri May 18 03:48:08 2012 +0200 +++ b/lib/libspk.sh Fri May 18 06:36:19 2012 +0200 @@ -99,8 +99,8 @@ # Check if package is on main or extra mirror. mirrored_pkg() { local name=$1 - local occurance=$(grep "^$name |" $pkgsdesc) - [ -n "$occurance" ] + local find=$(grep "^$name |" $pkgsdesc $extradb/*/*.desc 2>/dev/null) + [ -n "$find" ] } # Download a file trying all mirrors @@ -128,12 +128,18 @@ esac } -# Assume package name is valid +# Return the full package name, search in all packages.desc and break when +# first occurance is found: Usage: full_package pkgname full_package() { - IFS="|" - local line="$(grep "^$1 |" $pkgsdesc)" - echo $line | busybox awk '{print $1 "-" $2}' - unset IFS + for desc in $(find $extradb $pkgsdesc -name packages.desc); do + local line="$(grep "^$1 |" $desc)" + local db=$(dirname $desc) + if grep -q "^$1 |" $desc; then + IFS="|" + echo $line | busybox awk '{print $1 "-" $2 ".tazpkg"}' + unset IFS && break + fi + done } # Check if a package is already installed. @@ -149,8 +155,7 @@ # get an already installed package from packages.equiv TODO REDO! equivalent_pkg() { - for i in $(grep -hs "^$1=" $pkgsequiv \ - $extradb/*/packages.equiv | sed "s/^$1=//") + for i in $(grep -hs "^$1=" $pkgsequiv $extradb/*/*.equiv | sed "s/^$1=//") do if echo $i | fgrep -q : ; then # format 'alternative:newname' @@ -209,3 +214,8 @@ is_elf() { [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ] } + +# Exec functions directly for developement purpose. +case $1 in + *_*) func=$1 && shift && $func $@ ;; +esac diff -r de880358af6d -r 63fb720dc777 spk --- a/spk Fri May 18 03:48:08 2012 +0200 +++ b/spk Fri May 18 06:36:19 2012 +0200 @@ -30,6 +30,7 @@ --rm $(gettext "Remove installed packages") --block $(gettext "Add packages to the blocked list") --unblock $(gettext "Remove packages from the blocked list") + --log $(gettext "Show package install and upgrade log") --root= $(gettext "Set the root file system path") --debug $(gettext "Display some usefull debug information") @@ -96,8 +97,7 @@ gettext "Blocking package:"; echo -n " $pkg" echo $pkg >> $blocked log "Blocked package: $pkg" && status - fi - continue ;; + fi && continue ;; *\ --unblock\ *) check_root [ -d "$installed/$pkg" ] || continue @@ -108,8 +108,7 @@ else echo -n "$(boldify "$pkg") " gettext "is not blocked"; newline - fi - continue ;; + fi && continue ;; *\ --rm\ *) [ -d "$installed/$pkg" ] || continue spk-rm $pkg --count=$count @@ -133,9 +132,7 @@ else gettext "Any upgrade log for:"; boldify " $pkg" newline - fi - - continue ;; + fi && continue ;; esac count=$(($count + 1)) [ "$count" == 1 ] && newline diff -r de880358af6d -r 63fb720dc777 spk-add --- a/spk-add Fri May 18 03:48:08 2012 +0200 +++ b/spk-add Fri May 18 06:36:19 2012 +0200 @@ -97,9 +97,8 @@ boldify $(gettext "Adding"; echo " $package_name") separator - gettext "Copying"; echo -n " $package_name..." - cp $package_file $tmpdir - status + gettext "Copying package..." + cp $package_file $tmpdir && status # Add package checksum to $installed.$SUM if [ "$verbose" ]; then @@ -200,14 +199,15 @@ cd - >/dev/null fi - # Merge ROOT_FS with Package FS - gettext "Installing in:"; echo -n " $root/" + # Merge package FS with $root + nb=$(cat files.list | wc -l) + gettext "Installing files:"; echo -n " $nb" cp -a fs/* $root/ status # Remove old config files if [ "$files_to_remove" ]; then - gettext "Removing old"; echo -n " $package_name..." + gettext "Removing old files..." for file in $files_to_remove; do if [ "$verbose" ]; then gettext "Removing:"; echo " ${root}${file}" @@ -219,9 +219,12 @@ cd - >/dev/null # Remove the temporary directory. - gettext "Removing all tmp files... " - rm -rf $tmpdir - status + if [ "$verbose" ]; then + gettext "Removing all tmp files... " + rm -rf $tmpdir && status + else + rm -rf $tmpdir + fi # Post install commands. if grep -q ^post_install $package_dir/receipt; then @@ -296,33 +299,35 @@ boldify " $package_name" && exit 1 fi - # package_full=Package-Version + # We want: package-version.tazpkg local package_full=$(full_package $package_name) - cd $CACHE_DIR > /dev/null - if [ -f "$package_full.tazpkg" ]; then + cd $CACHE_DIR || exit 1 + if [ -f "$package_full" ]; then [ "$count" == 1 ] && newline - gettext "Using cache:"; echo " $(colorize "$package_full" 34)" + gettext "Using cache:"; colorize " ${package_full%.tazpkg}" 34 + # Check package download was finished - if ! tail -c 2k $package_full.tazpkg | fgrep -q 00000000TRAILER; then + if ! tail -c 2k $package_full | fgrep -q 00000000TRAILER; then gettext "Continuing download of:"; echo " $package_name" - download "$package_full.tazpkg" + download "$package_full" fi + # Check that the package has the correct checksum - #if [ "$($CHECKSUM $package_full.tazpkg)" != "$(fgrep \" $package_full.tazpkg\" $pkgsmd5)" ]; then + #if [ "$($CHECKSUM $package_full)" != "$(fgrep \" $package_full\" $pkgsmd5)" ]; then # rm -f $package.tazpkg - # download "$package_full.tazpkg" + # download "$package_full" #fi else - newline && download "$package_full.tazpkg" + newline && download "$package_full" fi # Create package path early to avoid dependencies loop mkdir -p $tmpdir - extract_receipt $tmpdir "$CACHE_DIR/$package_full.tazpkg" + extract_receipt $tmpdir "$CACHE_DIR/$package_full" source $tmpdir/receipt - install_package "$CACHE_DIR/$package_full.tazpkg" + install_package "$CACHE_DIR/$package_full" #[ "$exec" ] && chroot $root/ $package_name [ "$exec" ] && $package_name $root @@ -339,8 +344,8 @@ local pkg=$(equivalent_pkg $pkgorg) # Check if package is not installed if [ ! -d "$installed/$pkg" ]; then - if [ ! -f "$PKGS_DB/packages.list" ]; then - #spk-up --recharge-only + if [ ! -f "$pkgsdesc" ]; then + #spk-up --list tazpkg recharge fi spk-add $pkg @@ -382,7 +387,7 @@ # Show all new counted packages in verbose mode if [ "$verbose" ]; then - gettext "New installed packages:"; colorize " $count" 34 + gettext "Handled packages:"; colorize " $count" 34 fi exit 0 diff -r de880358af6d -r 63fb720dc777 spk-archive --- a/spk-archive Fri May 18 03:48:08 2012 +0200 +++ b/spk-archive Fri May 18 06:36:19 2012 +0200 @@ -33,7 +33,8 @@ local package_file=$1 local package_name=$(package_name $package_file) local size=$(du -sh $package_file | awk '{print $1}') - gettext "Extracting"; echo -n " $package_name: $size" + + gettext "Extracting archive"; echo -n ": $size" cpio -idm --quiet < ${package_file##*/} && rm -f ${package_file##*/} unlzma -c fs.cpio.lzma | cpio -idm --quiet && rm fs.cpio.lzma status