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