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)