tazpkg rev 263

Add tazpkg link
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon May 25 17:31:35 2009 +0200 (2009-05-25)
parents a041e442f730
children f91e0e647f54
files tazpkg
line diff
     1.1 --- a/tazpkg	Mon May 25 16:47:46 2009 +0200
     1.2 +++ b/tazpkg	Mon May 25 17:31:35 2009 +0200
     1.3 @@ -121,6 +121,7 @@
     1.4    depends          Display dependencies tree.
     1.5    rdepends         Display reverse dependencies tree.
     1.6    convert          convert a debian package to a slitaz package (.tazpkg)
     1.7 +  link             link a package from another slitaz installation
     1.8    setup-mirror     Change the mirror url configuration.
     1.9    list-undigest    List undigest mirrors.
    1.10    remove-undigest  Remove an undigest mirror.
    1.11 @@ -898,7 +899,7 @@
    1.12  convert_deb()
    1.13  {
    1.14  	mkdir -p $TMP_DIR
    1.15 -	dpkg-deb -e $1 $TMP_DIR
    1.16 +	dpkg-deb -e $PACKAGE_FILE $TMP_DIR
    1.17  	package=$(grep '^ *Package' $TMP_DIR/control)
    1.18  	package=$(echo ${package##*:})
    1.19  	version=$(grep '^ *Version' $TMP_DIR/control)
    1.20 @@ -907,11 +908,11 @@
    1.21  	descrip=$(echo ${descrip##*:})
    1.22  	file="$package-$version"
    1.23  	mkdir -p $TMP_DIR/$file/fs/
    1.24 -	dpkg-deb -x $1 $TMP_DIR/$file/fs
    1.25 +	dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs
    1.26  	cd $TMP_DIR
    1.27  	cat > $file/receipt <<EOT
    1.28  # SliTaz package receipt.
    1.29 -# generated by tazpkg from debian package $1
    1.30 +# generated by tazpkg from debian package $(basename $PACKAGE_FILE)
    1.31  PACKAGE="$package"
    1.32  VERSION="$version"
    1.33  CATEGORY="misc"
    1.34 @@ -2224,13 +2225,41 @@
    1.35  		;;
    1.36  	convert)
    1.37  		# convert misc package format to .tazpkg
    1.38 -		case "$2" in
    1.39 +		check_for_package_file
    1.40 +		case "$PACKAGE_FILE" in
    1.41  		*.deb|*.udeb)
    1.42 -			convert_deb $2;;
    1.43 +			convert_deb;;
    1.44  		*)
    1.45  			echo "Unsupported format";;
    1.46  		esac
    1.47  		;;
    1.48 +	link)
    1.49 +		# link a package from another slitaz installation
    1.50 +		PACKAGE=$2
    1.51 +		if [ ! -d "$TARGET_DIR" -o \
    1.52 +		     ! -d "$TARGET_DIR$INSTALLED/$PACKAGE" ]; then
    1.53 +			cat <<EOT
    1.54 +usage:   tazpkg link package_name slitaz_root
    1.55 +example: 'tazpkg link openoffice /mnt' will heat less than 100k in
    1.56 +         your ram running system.
    1.57 +EOT
    1.58 +			exit 1
    1.59 +		fi
    1.60 +		if [ -e "$INSTALLED/$PACKAGE" ]; then
    1.61 +			echo "$PACKAGE is already installed."
    1.62 +			exit 1
    1.63 +		fi
    1.64 +		ln -s $TARGET_DIR$INSTALLED/$PACKAGE $INSTALLED
    1.65 +		while read path; do
    1.66 +			[ -e $path ] && continue
    1.67 +			while true; do
    1.68 +				dir=$(dirname $path)
    1.69 +				[ -e $dir ] && break
    1.70 +				path=$dir
    1.71 +			done
    1.72 +			ln -s $TARGET_DIR$path $dir
    1.73 +		done < $INSTALLED/$PACKAGE/files.list
    1.74 +		;;
    1.75  	usage|*)
    1.76  		# Print a short help or give usage for an unknown or empty command.
    1.77  		#