tazpkg rev 120

tazpkg: install deps in packages list
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Jul 14 21:33:59 2008 +0000 (2008-07-14)
parents bf45d2de0300
children ec1d2bbce343
files tazpkg
line diff
     1.1 --- a/tazpkg	Sun Jul 13 21:27:54 2008 +0000
     1.2 +++ b/tazpkg	Mon Jul 14 21:33:59 2008 +0000
     1.3 @@ -58,6 +58,8 @@
     1.4  PACKAGES_LIST=$LOCALSTATE/packages.list
     1.5  BLOCKED=$LOCALSTATE/blocked-packages.list
     1.6  DEFAULT_MIRROR="http://mirror.slitaz.org/packages/`cat /etc/slitaz-release`/"
     1.7 +INSTALL_LIST=""
     1.8 +PROCESSED_LIST="${TMP_DIR}_processed"
     1.9  
    1.10  # Bold red warning for upgrade.
    1.11  WARNING="\\033[1;31mWARNING\\033[0;39m"
    1.12 @@ -257,7 +259,13 @@
    1.13  		 # get absolute path
    1.14  		 ROOT=$(cd $ROOT; pwd)
    1.15  	fi
    1.16 +	# Resolv package deps.
    1.17 +	check_for_deps $ROOT
    1.18 +	if [ ! "$MISSING_PACKAGE" = "" ]; then
    1.19 +		install_deps $ROOT
    1.20 +	fi
    1.21  	mkdir -p $TMP_DIR
    1.22 +	[ -n "$INSTALL_LIST" ] && echo "$PACKAGE_FILE" >> $PROCESSED_LIST
    1.23  	echo ""
    1.24  	echo -e "\033[1mInstallation of :\033[0m $PACKAGE"
    1.25  	echo "================================================================================"
    1.26 @@ -330,7 +338,7 @@
    1.27  	rm -rf $TMP_DIR
    1.28  	for i in $DEPENDS
    1.29  	do
    1.30 -		if [ ! -d "$INSTALLED/$i" ]; then
    1.31 +		if [ ! -d "$1$INSTALLED/$i" ]; then
    1.32  			MISSING_PACKAGE=$i
    1.33  			deps=$(($deps+1))
    1.34  		fi
    1.35 @@ -340,7 +348,7 @@
    1.36  		echo "================================================================================"
    1.37  		for i in $DEPENDS
    1.38  		do
    1.39 -			if [ ! -d "$INSTALLED/$i" ]; then
    1.40 +			if [ ! -d "$1$INSTALLED/$i" ]; then
    1.41  				MISSING_PACKAGE=$i
    1.42  				echo "Missing : $MISSING_PACKAGE"
    1.43  			fi
    1.44 @@ -355,12 +363,15 @@
    1.45  # install packages from local, we need a packages.list to find the version.
    1.46  install_deps()
    1.47  {
    1.48 +	local root
    1.49 +	root=""
    1.50 +	[ -n "$1" ] && root="--root $1"
    1.51  	echo ""
    1.52  	echo -n "Install all missing dependencies (y/N) ? "; read anser
    1.53  	if [ "$anser" = "y" ]; then
    1.54  		for pkg in $DEPENDS
    1.55  		do
    1.56 -			if [ ! -d "$INSTALLED/$pkg" ]; then
    1.57 +			if [ ! -d "$1$INSTALLED/$pkg" ]; then
    1.58  				# We can install packages from a local dir by greping
    1.59  				# the TAZPKG_BASENAME in the local packages.list.
    1.60  				if [ -f "$TOP_DIR/packages.list" ]; then
    1.61 @@ -370,17 +381,17 @@
    1.62  						( cd $TMP_DIR ; cpio -i receipt ) < $i
    1.63  						if grep -q ^$(package_fullname_in_dir $TMP_DIR)$ $TOP_DIR/packages.list
    1.64  						then
    1.65 -							tazpkg install $i
    1.66 +							tazpkg install $i $root
    1.67  							break
    1.68  						fi
    1.69  					done
    1.70  					rm -rf $TMP_DIR
    1.71  				# Install deps from the mirror.
    1.72  				else
    1.73 -					if [ ! -f "$LOCALSTATE/packages.list" ]; then
    1.74 +					if [ ! -f "$1$LOCALSTATE/packages.list" ]; then
    1.75  						tazpkg recharge
    1.76  					fi
    1.77 -					tazpkg get-install $pkg
    1.78 +					tazpkg get-install $pkg $root
    1.79  				fi
    1.80  			fi
    1.81  		done
    1.82 @@ -868,14 +879,14 @@
    1.83  		check_for_package_file
    1.84  		# Check if forced install.
    1.85  		DO_CHECK="yes"
    1.86 +		ROOT=""
    1.87  		while [ -n "$3" ]; do
    1.88  			case "$3" in
    1.89  			--forced)
    1.90  				DO_CHECK="no"
    1.91  				;;
    1.92  			--root=*)
    1.93 -				install_package ${3#--root=}
    1.94 -				exit $?
    1.95 +				ROOT="${3#--root=}"
    1.96  				;;
    1.97  			*)	shift 2
    1.98  				echo -e "\nUnknown option $*.\n"
    1.99 @@ -887,12 +898,7 @@
   1.100  		if [ "$DO_CHECK" = "yes" ]; then
   1.101  			check_for_installed_package
   1.102  		fi
   1.103 -		# Resolv package deps.
   1.104 -		check_for_deps
   1.105 -		if [ ! "$MISSING_PACKAGE" = "" ]; then
   1.106 -			install_deps
   1.107 -		fi
   1.108 -		install_package
   1.109 +		install_package $ROOT
   1.110  		;;
   1.111  	install-list|get-install-list)
   1.112  		# Install a set of packages from a list.
   1.113 @@ -911,20 +917,23 @@
   1.114  		else
   1.115  			LIST=`cat $2`
   1.116  		fi
   1.117 +		
   1.118 +		# Remember processed list
   1.119 +		INSTALL_LIST="$2"
   1.120 +
   1.121  		# Set $COMMAND and install all packages.
   1.122  		if [ "$1" = "get-install-list" ]; then
   1.123  			COMMAND=get-install
   1.124  		else
   1.125  			COMMAND=install
   1.126  		fi
   1.127 +		touch $PROCESSED_LIST
   1.128  		for pkg in $LIST
   1.129  		do
   1.130 -			if [ "$3" = "--forced" ]; then
   1.131 -				tazpkg $COMMAND $pkg --forced
   1.132 -			else
   1.133 -				tazpkg $COMMAND $pkg
   1.134 -			fi
   1.135 +			grep -qs ^$pkg$ $PROCESSED_LIST && continue
   1.136 +			tazpkg $COMMAND $pkg "$3" "$4" "$5"
   1.137  		done
   1.138 +		rm -f $PROCESSED_LIST
   1.139  		;;
   1.140  	add-flavor)
   1.141  		# Install a set of packages from a flavor.
   1.142 @@ -1194,8 +1203,7 @@
   1.143  		echo "================================================================================"
   1.144  		echo ""
   1.145  		# Some packages must be installed first
   1.146 -		FIRST_CLASS_PACKAGE=" glibc-base "
   1.147 -		FIRST_CLASS=""
   1.148 +		FIRST_CLASS_PACKAGE=" glibc-base slitaz-base-files slitaz-boot-scripts
   1.149  		for pkg in $INSTALLED/*
   1.150  		do
   1.151  			EXTRAVERSION=""
   1.152 @@ -1262,7 +1270,7 @@
   1.153  						up=$(($up+1))
   1.154  						echo "$PACKAGE" >> upradable-packages.list
   1.155  						case "$FIRST_CLASS_PACKAGE" in
   1.156 -						*\ $PACKAGE\ *) FIRST_CLASS="$FIRST_CLASS $PACKAGE";;
   1.157 +						*\ $PACKAGE\ *) echo "$PACKAGE" >> upradable-packages.list$$;;
   1.158  						esac
   1.159  						unset RELEASE
   1.160  					fi
   1.161 @@ -1301,10 +1309,10 @@
   1.162  			exit 0
   1.163  		fi
   1.164  		# If anser is yes (y). Install all new version.
   1.165 -		for pkg in $FIRST_CLASS `cat upradable-packages.list`
   1.166 -		do
   1.167 -			tazpkg get-install $pkg --forced
   1.168 -		done
   1.169 +		cat upradable-packages.list >> upradable-packages.list$$
   1.170 +		mv -f upradable-packages.list$$ upradable-packages.list
   1.171 +		yes y | tazpkg get-install-list upradable-packages.list
   1.172 +		#rm -f upradable-packages.list
   1.173  		;;
   1.174  	check)
   1.175  		# check installed packages set.
   1.176 @@ -1441,10 +1449,6 @@
   1.177  			download $PACKAGE.tazpkg
   1.178  		fi
   1.179  		PACKAGE_FILE=$CACHE_DIR/$PACKAGE.tazpkg
   1.180 -		check_for_deps
   1.181 -		if [ ! "$MISSING_PACKAGE" = "" ]; then
   1.182 -			install_deps
   1.183 -		fi
   1.184  		install_package
   1.185  		;;
   1.186  	clean-cache)