tazpkg rev 326

tazpkgbox: add link support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Mar 03 15:19:29 2010 +0100 (2010-03-03)
parents a975792be8c9
children 58396b6c385e
files lib/tazpkgbox/list lib/tazpkgbox/package_infos tazpkgbox
line diff
     1.1 --- a/lib/tazpkgbox/list	Fri Feb 26 12:48:18 2010 +0000
     1.2 +++ b/lib/tazpkgbox/list	Wed Mar 03 15:19:29 2010 +0100
     1.3 @@ -55,12 +55,17 @@
     1.4  
     1.5  installed_list()
     1.6  {
     1.7 -	for pkg in installed/*
     1.8 +	for pkg in ${1}installed/*
     1.9  	do
    1.10 +		[ -n "$1" -a -s installed/$(basename $pkg)/receipt ] && continue
    1.11  		. $pkg/receipt
    1.12  		ICON=tazpkg-installed
    1.13  		[ $CAT == all -o $CATEGORY == $CAT ] || continue
    1.14 -		grep -qs "^$PACKAGE" undigest/*/packages.desc && ICON=add
    1.15 +		if [ -n "$1" -o -L $pkg ]; then
    1.16 +			ICON=media-flash
    1.17 +		else
    1.18 +			grep -qs "^$PACKAGE" undigest/*/packages.desc && ICON=add
    1.19 +		fi
    1.20  		grep -qs "^$PACKAGE$" blocked-packages.list && ICON=stop
    1.21  		echo "$ICON|$PACKAGE|$VERSION|$SHORT_DESC"
    1.22  	done
    1.23 @@ -99,6 +104,9 @@
    1.24  		case $STATUS in
    1.25  			blocked|upgradeable)
    1.26  				blocked_list $STATUS;;
    1.27 +			linkable)
    1.28 +				[ -d fslink ] && installed_list \
    1.29 +					$(readlink fslink)/var/lib/tazpkg/;;
    1.30  			installed)
    1.31  				installed_list ;;
    1.32  			installable)
     2.1 --- a/lib/tazpkgbox/package_infos	Fri Feb 26 12:48:18 2010 +0000
     2.2 +++ b/lib/tazpkgbox/package_infos	Wed Mar 03 15:19:29 2010 +0100
     2.3 @@ -6,6 +6,10 @@
     2.4  XTERM_OPTS="-geometry 80x16+120+120"
     2.5  
     2.6  PKG=`cat /tmp/tazpkgbox/pkg | sed s/" "/""/g`
     2.7 +ROOT=/var/lib/tazpkg
     2.8 +if [ "$(cat /tmp/tazpkgbox/status)" = "linkable" ]; then
     2.9 +	ROOT=$(readlink /var/lib/tazpkg/fslink)$ROOT
    2.10 +fi
    2.11  TMP_DIR=/tmp/tazpkg-$$-$RANDOM
    2.12  
    2.13  if [ "$1" = "sizes" ]; then
    2.14 @@ -19,7 +23,7 @@
    2.15  	exit 0
    2.16  fi
    2.17  if [ "$1" = "info" ]; then
    2.18 -	RECEIPT=/var/lib/tazpkg/installed/$3/receipt
    2.19 +	RECEIPT=$ROOT/installed/$3/receipt
    2.20  	. $RECEIPT
    2.21  	case "$2" in
    2.22  	Web*) firefox $WEB_SITE &;;
    2.23 @@ -28,7 +32,7 @@
    2.24  	Hand*) firefox $HANDBOOK_URL &;;
    2.25  	Sug*) $0 list_packages $SUGGESTED;;
    2.26  	Dep*) $0 list_packages $DEPENDS;;
    2.27 -	Mod*) $0 list_packages $(xargs echo < /var/lib/tazpkg/installed/$3/modifiers);;
    2.28 +	Mod*) $0 list_packages $(xargs echo < $ROOT/installed/$3/modifiers);;
    2.29  	Con*) tazpkgbox list_config $3;;
    2.30  	Ver*) xterm -T "$3 receipt (q to quit)" -e "cat $RECEIPT | less";;
    2.31  	esac
    2.32 @@ -36,18 +40,21 @@
    2.33  fi
    2.34  
    2.35  if [ "$1" = "list_files" ]; then
    2.36 -	AWK_FILTER='BEGIN { ls=0 } { if (/^===/) ls=1-ls; else if (ls) print; }'
    2.37  	CONF_FILES="$(tazpkg list-config $2 | awk "$AWK_FILTER")"
    2.38  	if [ -n "$CONF_FILES" ]; then
    2.39  		mkdir $TMP_DIR
    2.40 -		zcat /var/lib/tazpkg/installed/$2/volatile.cpio.gz | \
    2.41 +		zcat $ROOT/installed/$2/volatile.cpio.gz | \
    2.42  			( cd $TMP_DIR ; cpio -id > /dev/null )
    2.43  	fi
    2.44 -	tazpkg list-files $2 | awk "$AWK_FILTER" | while read file; do
    2.45 -		echo -n "$(stat -c "%A|%U|%G|%s|%n|" "$file" || \
    2.46 +	cat $ROOT/installed/$2/files.list | grep ^/ | while read file; do
    2.47 +		realfile="$file"
    2.48 +		if [ "$(cat /tmp/tazpkgbox/status)" = "linkable" ]; then
    2.49 +			realfile="$(readlink /var/lib/tazpkg/fslink)$file"
    2.50 +		fi
    2.51 +		echo -n "$(stat -c "%A|%U|%G|%s|$file|" "$realfile" || \
    2.52  			   echo "File lost !||||$file|")"
    2.53 -		if [ -L "$file" ]; then
    2.54 -			echo -n "$(readlink "$file")"
    2.55 +		if [ -L "$realfile" ]; then
    2.56 +			echo -n "$(readlink "$realfile")"
    2.57  		elif [ -f "$file" ]; then
    2.58  			case "$CONF_FILES" in
    2.59  			*$file*) 
    2.60 @@ -89,8 +96,8 @@
    2.61  	<variable>PKG</variable>
    2.62  '
    2.63  		for i in "$@"; do
    2.64 -			if [ -d /var/lib/tazpkg/installed/$i ]; then
    2.65 -				. /var/lib/tazpkg/installed/$i/receipt
    2.66 +			if [ -d $ROOT/installed/$i ]; then
    2.67 +				. $ROOT/installed/$i/receipt
    2.68  				LIST_PKGS="$LIST_PKGS
    2.69  	<item icon=\"tazpkg\">$i|$VERSION|Installed|$SHORT_DESC</item>
    2.70  "
    2.71 @@ -171,13 +178,13 @@
    2.72  "
    2.73  
    2.74  # Installed or not installed, that is the question!
    2.75 -if [ -d /var/lib/tazpkg/installed/$PKG ]; then
    2.76 +if [ -d $ROOT/installed/$PKG ]; then
    2.77  	PACKED_SIZE=""
    2.78  	DEPENDS=""
    2.79  	MAINTAINER=""
    2.80  	BUGS=""
    2.81  	TAGS=""
    2.82 -	. /var/lib/tazpkg/installed/$PKG/receipt
    2.83 +	. $ROOT/installed/$PKG/receipt
    2.84  	MAINTAINER=$(echo "$MAINTAINER" | sed 's/[<>|]/ /g')
    2.85  	upgrade_version="$(cat /var/lib/tazpkg/packages.desc \
    2.86  		/var/lib/tazpkg/undigest/*/packages.desc 2> /dev/null | \
    2.87 @@ -188,7 +195,7 @@
    2.88  			UPGRADE="$upgrade_version"
    2.89  		else
    2.90  			cur_md5="$(awk "/ $PACKAGE-$VERSION/ { print \$1 }" \
    2.91 -				/var/lib/tazpkg/installed.md5)"
    2.92 +				$ROOT/installed.md5)"
    2.93  			new_md5="$(cat /var/lib/tazpkg/packages.md5 \
    2.94  				/var/lib/tazpkg/undigest/*/packages.md5 \
    2.95  				2> /dev/null | awk "/ $PACKAGE-$VERSION/ { print \$1 }")"
    2.96 @@ -226,24 +233,25 @@
    2.97  		<item icon=\"tazpkg\">Tags: | $TAGS</item>"
    2.98  [ -n "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
    2.99  		<item icon=\"tazpkg\">Config files: | $CONFIG_FILES</item>"
   2.100 -[ -f /var/lib/tazpkg/installed/$PKG/modifiers ] && 
   2.101 +[ -f $ROOT/installed/$PKG/modifiers ] && 
   2.102  PACKAGE_INFOS="$PACKAGE_INFOS
   2.103 -		<item icon=\"tazpkg\">Modified by: | $(xargs echo < /var/lib/tazpkg/installed/$PKG/modifiers)</item>"
   2.104 +		<item icon=\"tazpkg\">Modified by: | $(xargs echo < $ROOT/installed/$PKG/modifiers)</item>"
   2.105  PACKAGE_INFOS="$PACKAGE_INFOS
   2.106  		<item icon=\"applications-internet\">Web site: | $WEB_SITE</item>
   2.107  		<action> $0 info \"\$FIELD\" $PKG </action>
   2.108  	</tree>
   2.109  
   2.110  	<hbox>"
   2.111 -[ -s /var/lib/tazpkg/installed/$PACKAGE/description.txt ] &&
   2.112 +[ -s $ROOT/installed/$PACKAGE/description.txt ] &&
   2.113  	PACKAGE_INFOS="$PACKAGE_INFOS
   2.114  		<button>
   2.115  			<label>Description</label>
   2.116  			<input file icon=\"help\"></input>
   2.117  			<action>xterm -T \"$PKG description (q to quit)\" $XTERM_OPTS \
   2.118 -			-e \"less /var/lib/tazpkg/installed/$PKG/description.txt\"</action>
   2.119 +			-e \"less $ROOT/installed/$PKG/description.txt\"</action>
   2.120  		</button>"
   2.121 -[ ${PKG%%-*} = get -a ! -d /var/lib/tazpkg/installed/${PKG#get-} ] && PACKAGE_INFOS="$PACKAGE_INFOS
   2.122 +if [ ! -d /var/lib/tazpkg/fslink ]; then
   2.123 +	[ ${PKG%%-*} = get -a ! -d $ROOT/installed/${PKG#get-} ] && PACKAGE_INFOS="$PACKAGE_INFOS
   2.124  		<button>
   2.125  			<label>Install</label>
   2.126  			<input file icon=\"go-next\"></input>
   2.127 @@ -251,7 +259,7 @@
   2.128  			$PKG; sleep 5\"</action>
   2.129  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.130  		</button>"
   2.131 -[ -n "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS
   2.132 +	[ -n "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS
   2.133  		<button>
   2.134  			<label>Upgrade</label>
   2.135  			<input file icon=\"go-next\"></input>
   2.136 @@ -259,7 +267,7 @@
   2.137  			tazpkg get-install $PKG --forced ; sleep 5\"</action>
   2.138  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.139  		</button>"
   2.140 -grep -q post_install /var/lib/tazpkg/installed/$PKG/receipt && PACKAGE_INFOS="$PACKAGE_INFOS
   2.141 +	grep -q post_install $ROOT/installed/$PKG/receipt && PACKAGE_INFOS="$PACKAGE_INFOS
   2.142  		<button>
   2.143  			<label>Reconfigure</label>
   2.144  			<input file icon=\"reload\"></input>
   2.145 @@ -267,8 +275,8 @@
   2.146  			tazpkg reconfigure $PACKAGE; sleep 2\"</action>
   2.147  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.148  		</button>"
   2.149 -if grep -qs ^$PKG$ /var/lib/tazpkg/blocked-packages.list; then
   2.150 -	PACKAGE_INFOS="$PACKAGE_INFOS
   2.151 +	if grep -qs ^$PKG$ /var/lib/tazpkg/blocked-packages.list; then
   2.152 +		PACKAGE_INFOS="$PACKAGE_INFOS
   2.153  		<button>
   2.154  			<label>Unblock</label>
   2.155  			<input file icon=\"up\"></input>
   2.156 @@ -276,8 +284,8 @@
   2.157  			tazpkg unblock $PACKAGE; sleep 2\"</action>
   2.158  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.159  		</button>"
   2.160 -else
   2.161 -	PACKAGE_INFOS="$PACKAGE_INFOS
   2.162 +	else
   2.163 +		PACKAGE_INFOS="$PACKAGE_INFOS
   2.164  		<button>
   2.165  			<label>Block</label>
   2.166  			<input file icon=\"down\"></input>
   2.167 @@ -285,10 +293,20 @@
   2.168  			tazpkg block $PACKAGE; sleep 2\"</action>
   2.169  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.170  		</button>"
   2.171 +	fi
   2.172  fi
   2.173 -if [ ! -s /var/lib/tazpkg/installed/$PKG/modifiers ]; then
   2.174 +if [ "$(cat /tmp/tazpkgbox/status)" = "linkable" ]; then
   2.175  	PACKAGE_INFOS="$PACKAGE_INFOS
   2.176  		<button>
   2.177 +			<label>Link</label>
   2.178 +			<input file icon=\"edit-redo\"></input>
   2.179 +			<action>xterm -T \"Link $PACKAGE\" $XTERM_OPTS -e \"\
   2.180 +			tazpkg link $PACKAGE $(readlink /var/lib/tazpkg/fslink); sleep 2\"</action>
   2.181 +			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.182 +		</button>"
   2.183 +elif [ ! -s $ROOT/installed/$PKG/modifiers ]; then
   2.184 +	[ -L $ROOT/installed/$PKG ] || PACKAGE_INFOS="$PACKAGE_INFOS
   2.185 +		<button>
   2.186  			<label>Repack</label>
   2.187  			<input file icon=\"edit-redo\"></input>
   2.188  			<action>xterm -T \"Repack $PACKAGE\" $XTERM_OPTS -e \"\
   2.189 @@ -297,6 +315,15 @@
   2.190  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.191  		</button>
   2.192  "
   2.193 +	PACKAGE_INFOS="$PACKAGE_INFOS
   2.194 +		<button>
   2.195 +			<label>Remove</label>
   2.196 +			<input file icon=\"edit-delete\"></input>
   2.197 +			<action>xterm -T \"Remove $PACKAGE\" $XTERM_OPTS -e \"\
   2.198 +			tazpkg remove $PACKAGE; sleep 2\"</action>
   2.199 +			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.200 +		</button>
   2.201 +"
   2.202  else
   2.203  	PACKAGE_INFOS="$PACKAGE_INFOS
   2.204  		<button>
   2.205 @@ -306,9 +333,6 @@
   2.206  			tazpkg get-install $PACKAGE --forced; sleep 2\"</action>
   2.207  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.208  		</button>
   2.209 -"
   2.210 -fi
   2.211 -PACKAGE_INFOS="$PACKAGE_INFOS
   2.212  		<button>
   2.213  			<label>Remove</label>
   2.214  			<input file icon=\"edit-delete\"></input>
   2.215 @@ -316,6 +340,9 @@
   2.216  			tazpkg remove $PACKAGE; sleep 2\"</action>
   2.217  			<action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
   2.218  		</button>
   2.219 +"
   2.220 +fi
   2.221 +PACKAGE_INFOS="$PACKAGE_INFOS
   2.222  		<button>
   2.223  			<label>Files</label>
   2.224  			<input file icon=\"tazpkg\"></input>
     3.1 --- a/tazpkgbox	Fri Feb 26 12:48:18 2010 +0000
     3.2 +++ b/tazpkgbox	Wed Mar 03 15:19:29 2010 +0100
     3.3 @@ -296,6 +296,7 @@
     3.4  				<item>installable</item>
     3.5  				<item>blocked</item>
     3.6  				<item>upgradeable</item>
     3.7 +				<item>linkable</item>
     3.8  			</combobox>
     3.9  			<text>
    3.10  				<label>"Category:"</label>
    3.11 @@ -465,6 +466,26 @@
    3.12  				</button>
    3.13  			</hbox>
    3.14  		</frame>
    3.15 +		<frame Filesystem link (to install packages as soft link from another mounted Slitaz)>
    3.16 +			<hbox>
    3.17 +				<entry>
    3.18 +					<input>readlink /var/lib/tazpkg/fslink</input>
    3.19 +					<variable>FSLINK</variable>
    3.20 +				</entry>
    3.21 +				<button>
    3.22 +					<label>Setup</label>
    3.23 +					<input file icon="go-next"></input>
    3.24 +					<action>rm -f /var/lib/tazpkg/fslink ; [ "$FSLINK" != "/" -a -d $FSLINK/var/lib/tazpkg ] && ln -s $FSLINK /var/lib/tazpkg/fslink</action>
    3.25 +					<action>clear:FSLINK</action>
    3.26 +					<action>refresh:FSLINK</action>
    3.27 +				</button>
    3.28 +				<button>
    3.29 +					<label>Mountbox</label>
    3.30 +					<input file icon="media-flash"></input>
    3.31 +					<action>mountbox</action>
    3.32 +				</button>
    3.33 +			</hbox>
    3.34 +		</frame>
    3.35  		<frame Mirror URL>
    3.36  			<hbox>
    3.37  				<entry>
    3.38 @@ -510,7 +531,7 @@
    3.39  					<action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -T "Repack configs" -geometry 80x25+120+120 -e "tazpkg repack-config ; sleep 5" 2> /dev/null</action>
    3.40  				</button>
    3.41  				<button>
    3.42 -					<label>Config Files</label>
    3.43 +					<label>Show Files</label>
    3.44  					<input file icon="tazpkg"></input>
    3.45  					<action type="launch">LIST_CONFIG_FILES</action>
    3.46  				</button>
    3.47 @@ -520,12 +541,12 @@
    3.48  			<hbox>
    3.49  				<button>
    3.50  					<label>Quick check</label>
    3.51 -					<input file icon="go-next"></input>
    3.52 +					<input file icon="system-search"></input>
    3.53  					<action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -T "Check packages (q to quit)" -geometry 80x25+120+120 -e "tazpkg check | less " 2> /dev/null</action>
    3.54  				</button>
    3.55  				<button>
    3.56  					<label>Full check</label>
    3.57 -					<input file icon="go-next"></input>
    3.58 +					<input file icon="system-search"></input>
    3.59  					<action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -T "Check packages (q to quit)" -geometry 80x25+120+120 -e "tazpkg check --full | less " 2> /dev/null</action>
    3.60  				</button>
    3.61  				</hbox>