tazpkg rev 121

tazpkg: fix root for package-list
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Jul 14 23:44:32 2008 +0000 (2008-07-14)
parents 60b6743c7eca
children 48a4a8c62924
files tazpkg
line diff
     1.1 --- a/tazpkg	Mon Jul 14 21:33:59 2008 +0000
     1.2 +++ b/tazpkg	Mon Jul 14 23:44:32 2008 +0000
     1.3 @@ -59,7 +59,6 @@
     1.4  BLOCKED=$LOCALSTATE/blocked-packages.list
     1.5  DEFAULT_MIRROR="http://mirror.slitaz.org/packages/`cat /etc/slitaz-release`/"
     1.6  INSTALL_LIST=""
     1.7 -PROCESSED_LIST="${TMP_DIR}_processed"
     1.8  
     1.9  # Bold red warning for upgrade.
    1.10  WARNING="\\033[1;31mWARNING\\033[0;39m"
    1.11 @@ -175,16 +174,16 @@
    1.12  package_fullname_in_dir()
    1.13  {
    1.14  	EXTRAVERSION=""
    1.15 -	. $1/receipt
    1.16 +	. $2$1/receipt
    1.17  	echo $PACKAGE-$VERSION$EXTRAVERSION
    1.18  }
    1.19  
    1.20  # Get package name that is already installed.
    1.21  get_installed_package_pathname()
    1.22  {
    1.23 -	for i in $INSTALLED/${1%%-*}*; do
    1.24 +	for i in $2$INSTALLED/${1%%-*}*; do
    1.25  		[ -d $i ] || continue
    1.26 -		if [ "$1" = "$(package_fullname_in_dir $i)" ]; then
    1.27 +		if [ "$1" = "$(package_fullname_in_dir $i $2)" ]; then
    1.28  			echo $i
    1.29  			return
    1.30  		fi
    1.31 @@ -194,7 +193,7 @@
    1.32  # Check if a package is already installed.
    1.33  check_for_installed_package()
    1.34  {
    1.35 -	if [ -n "$(get_installed_package_pathname $PACKAGE)" ]; then
    1.36 +	if [ -n "$(get_installed_package_pathname $PACKAGE $1)" ]; then
    1.37  		echo -e "
    1.38  $PACKAGE is already installed. You can use the --forced option to force
    1.39  installation or remove it and reinstall.\n"
    1.40 @@ -265,7 +264,7 @@
    1.41  		install_deps $ROOT
    1.42  	fi
    1.43  	mkdir -p $TMP_DIR
    1.44 -	[ -n "$INSTALL_LIST" ] && echo "$PACKAGE_FILE" >> $PROCESSED_LIST
    1.45 +	[ -n "$INSTALL_LIST" ] && echo "$PACKAGE_FILE" >> $INSTALL_LIST-processed
    1.46  	echo ""
    1.47  	echo -e "\033[1mInstallation of :\033[0m $PACKAGE"
    1.48  	echo "================================================================================"
    1.49 @@ -365,30 +364,34 @@
    1.50  {
    1.51  	local root
    1.52  	root=""
    1.53 -	[ -n "$1" ] && root="--root $1"
    1.54 +	[ -n "$1" ] && root="--root=$1"
    1.55  	echo ""
    1.56  	echo -n "Install all missing dependencies (y/N) ? "; read anser
    1.57 +	echo ""
    1.58  	if [ "$anser" = "y" ]; then
    1.59  		for pkg in $DEPENDS
    1.60  		do
    1.61  			if [ ! -d "$1$INSTALLED/$pkg" ]; then
    1.62 +				local list
    1.63 +				list="$INSTALL_LIST"
    1.64 +				[ -n "$list" ] || list="$TOP_DIR/packages.list"
    1.65  				# We can install packages from a local dir by greping
    1.66  				# the TAZPKG_BASENAME in the local packages.list.
    1.67 -				if [ -f "$TOP_DIR/packages.list" ]; then
    1.68 +				if [ -f "$list" ]; then
    1.69  					echo "Checking if $pkg exist in local list... "
    1.70  					mkdir $TMP_DIR
    1.71  					for i in $pkg-*.tazpkg; do
    1.72 -						( cd $TMP_DIR ; cpio -i receipt ) < $i
    1.73 -						if grep -q ^$(package_fullname_in_dir $TMP_DIR)$ $TOP_DIR/packages.list
    1.74 +						( cd $TMP_DIR ; cpio -i receipt > /dev/null) < $i
    1.75 +						if grep -q ^$(package_fullname_in_dir $TMP_DIR).tazpkg$ $list
    1.76  						then
    1.77 -							tazpkg install $i $root
    1.78 +							tazpkg install $i $root --list=$list
    1.79  							break
    1.80  						fi
    1.81  					done
    1.82  					rm -rf $TMP_DIR
    1.83  				# Install deps from the mirror.
    1.84  				else
    1.85 -					if [ ! -f "$1$LOCALSTATE/packages.list" ]; then
    1.86 +					if [ ! -f "$LOCALSTATE/packages.list" ]; then
    1.87  						tazpkg recharge
    1.88  					fi
    1.89  					tazpkg get-install $pkg $root
    1.90 @@ -888,6 +891,9 @@
    1.91  			--root=*)
    1.92  				ROOT="${3#--root=}"
    1.93  				;;
    1.94 +			--list=*)
    1.95 +				INSTALL_LIST="${3#--list=}"
    1.96 +				;;
    1.97  			*)	shift 2
    1.98  				echo -e "\nUnknown option $*.\n"
    1.99  				exit 1
   1.100 @@ -896,7 +902,7 @@
   1.101  			shift
   1.102  		done
   1.103  		if [ "$DO_CHECK" = "yes" ]; then
   1.104 -			check_for_installed_package
   1.105 +			check_for_installed_package $ROOT
   1.106  		fi
   1.107  		install_package $ROOT
   1.108  		;;
   1.109 @@ -919,7 +925,7 @@
   1.110  		fi
   1.111  		
   1.112  		# Remember processed list
   1.113 -		INSTALL_LIST="$2"
   1.114 +		export INSTALL_LIST="$2"
   1.115  
   1.116  		# Set $COMMAND and install all packages.
   1.117  		if [ "$1" = "get-install-list" ]; then
   1.118 @@ -927,13 +933,13 @@
   1.119  		else
   1.120  			COMMAND=install
   1.121  		fi
   1.122 -		touch $PROCESSED_LIST
   1.123 +		touch $2-processed
   1.124  		for pkg in $LIST
   1.125  		do
   1.126 -			grep -qs ^$pkg$ $PROCESSED_LIST && continue
   1.127 -			tazpkg $COMMAND $pkg "$3" "$4" "$5"
   1.128 +			grep -qs ^$pkg$ $2-processed && continue
   1.129 +			tazpkg $COMMAND $pkg --list=$2 "$3" "$4" "$5"
   1.130  		done
   1.131 -		rm -f $PROCESSED_LIST
   1.132 +		rm -f $2-processed
   1.133  		;;
   1.134  	add-flavor)
   1.135  		# Install a set of packages from a flavor.
   1.136 @@ -1203,7 +1209,7 @@
   1.137  		echo "================================================================================"
   1.138  		echo ""
   1.139  		# Some packages must be installed first
   1.140 -		FIRST_CLASS_PACKAGE=" glibc-base slitaz-base-files slitaz-boot-scripts
   1.141 +		FIRST_CLASS_PACKAGE=" glibc-base slitaz-base-files slitaz-boot-scripts "
   1.142  		for pkg in $INSTALLED/*
   1.143  		do
   1.144  			EXTRAVERSION=""
   1.145 @@ -1430,11 +1436,30 @@
   1.146  		check_for_package_on_cmdline
   1.147  		check_for_packages_list
   1.148  		check_for_package_in_list
   1.149 +		DO_CHECK=""
   1.150 +		while [ -n "$3" ]; do
   1.151 +			case "$3" in
   1.152 +			--forced)
   1.153 +				DO_CHECK="no"
   1.154 +				;;
   1.155 +			--root=*)
   1.156 +				ROOT="${3#--root=}"
   1.157 +				;;
   1.158 +			--list=*)
   1.159 +				INSTALL_LIST="${3#--list=}"
   1.160 +				;;
   1.161 +			*)	shift 2
   1.162 +				echo -e "\nUnknown option $*.\n"
   1.163 +				exit 1
   1.164 +				;;
   1.165 +			esac
   1.166 +			shift
   1.167 +		done
   1.168  		# Check if forced install.
   1.169 -		if [ "$3" = "--forced" ]; then
   1.170 +		if [ "$DO_CHECK" = "no" ]; then
   1.171  			rm -f $CACHE_DIR/$PACKAGE.tazpkg
   1.172  		else
   1.173 -			check_for_installed_package
   1.174 +			check_for_installed_package $ROOT
   1.175  		fi
   1.176  		cd $CACHE_DIR
   1.177  		if [ -f "$PACKAGE.tazpkg" ]; then
   1.178 @@ -1449,7 +1474,7 @@
   1.179  			download $PACKAGE.tazpkg
   1.180  		fi
   1.181  		PACKAGE_FILE=$CACHE_DIR/$PACKAGE.tazpkg
   1.182 -		install_package
   1.183 +		install_package $ROOT
   1.184  		;;
   1.185  	clean-cache)
   1.186  		# Remove all downloaded packages.