tazwok rev 415 4.3
Various code optimization
author | Antoine Bodin <gokhlayeh@slitaz.org> |
---|---|
date | Sat Mar 05 01:04:25 2011 +0100 (2011-03-05) |
parents | 7b60ce65b63f |
children | bedddc4f90f4 |
files | tazwok |
line diff
1.1 --- a/tazwok Sat Mar 05 00:25:38 2011 +0100 1.2 +++ b/tazwok Sat Mar 05 01:04:25 2011 +0100 1.3 @@ -208,9 +208,6 @@ 1.4 check_dir $SOURCES_REPOSITORY 1.5 check_dir $INCOMING_REPOSITORY 1.6 check_dir $LOCAL_REPOSITORY/log 1.7 - [ -f $dep_db ] || touch $dep_db 1.8 - [ -f $wan_db ] || touch $wan_db 1.9 - [ -f $cookorder ] || touch $cookorder 1.10 for file in $dep_db $wan_db $cookorder $commit $cooklist \ 1.11 $broken $blocked $SOURCES_REPOSITORY/sources.list 1.12 do 1.13 @@ -284,14 +281,6 @@ 1.14 fi 1.15 } 1.16 1.17 -check_for_pkg_in_wok() 1.18 -{ 1.19 - [ -f $WOK/$PACKAGE/receipt ] && return 1.20 - [ "$undigest" ] grep -q ^$PACKAGE'$\t' $ref_dep_db && return 1 1.21 - echo "Can't find $PACKAGE in wok or mirror" >&2 1.22 - return 2 1.23 -} 1.24 - 1.25 ######################################################################## 1.26 # TAZWOK CORE FUNCTIONS 1.27 ######################## 1.28 @@ -1250,7 +1239,7 @@ 1.29 report step "Removing old files" 1.30 for file in files.list.lzma packages.list packages.txt \ 1.31 packages.desc packages.equiv packages.md5; do 1.32 - [ -f $file ] && rm $file 1.33 + rm -rf $file 1.34 done 1.35 touch files.list 1.36 1.37 @@ -1297,19 +1286,19 @@ 1.38 elif [ ! -f $WOK/$PACKAGE/receipt ] && \ 1.39 [ "$COMMAND" = check-incoming -o "$pkg_repository" = "$INCOMING_REPOSITORY" ]; then 1.40 erase_package_info 1.41 - echo "Removing $PACKAGE from $pkg_repository." 1.42 + echo "Removing $PACKAGE from $pkg_repository." 1.43 rm $pkg 1.44 - [ -d $WOK/$PACKAGE ] && rm -r $WOK/$PACKAGE 1.45 + rm -rf $WOK/$PACKAGE 1.46 sed "/^$PACKAGE\t/d" -i $wan_db $dep_db $cookorder 1.47 sed "/^$PACKAGE$/d" -i $cooklist $commit $blocked $broken 1.48 - rm -f $LOCAL_REPOSITORY/log/$PACKAGE.html 1.49 + rm -f $LOCAL_REPOSITORY/log/$PACKAGE.html 1.50 if [ "$pkg_repository" = "$INCOMING_REPOSITORY" ] && \ 1.51 [ "$(sed 1!d $cookorder)" != "#PlanSort" ] ; then 1.52 sed 1i"#PlanSort" -i $cookorder 1.53 regen_cooklist=yes 1.54 else 1.55 - echo "$PACKAGE" >> $PACKAGES_REPOSITORY/removed 1.56 - sed -n '1,10p' -i $PACKAGES_REPOSITORY/removed 1.57 + echo "$PACKAGE" >> removed 1.58 + sed -n '1,10p' -i removed 1.59 fi 1.60 fi 1.61 fi 1.62 @@ -1322,10 +1311,8 @@ 1.63 unset updated_pkg 1.64 1.65 # Look for new packages. 1.66 - for pkg in $(echo $pkg_repository/*.tazpkg | fgrep -v '*'); do 1.67 - if ! fgrep -q " ${pkg##*/}" $pkg_repository/packages.md5; then 1.68 - get_packages_info 1.69 - fi 1.70 + for pkg in $pkg_repository/*.tazpkg; do 1.71 + fgrep -q " ${pkg##*/}" packages.md5 || get_packages_info 1.72 done 1.73 report end-step 1.74 packages_db_end 1.75 @@ -1333,17 +1320,17 @@ 1.76 1.77 packages_db_start() 1.78 { 1.79 - if [ ! -s packages.txt ]; then 1.80 + if [ -s packages.txt ]; then 1.81 + sed -e 's/^# Packages :.*/# Packages : unknow/' \ 1.82 + -e "s/# Date :.*/# Date : $(date +%Y-%m-%d\ \%H:%M:%S)/" \ 1.83 + -i packages.txt 1.84 + else 1.85 echo "# SliTaz GNU/Linux - Packages list 1.86 # 1.87 # Packages : unknow 1.88 # Date : $(date +%Y-%m-%d\ \%H:%M:%S) 1.89 # 1.90 " > packages.txt 1.91 - else 1.92 - sed -e 's/^# Packages :.*/# Packages : unknow/' \ 1.93 - -e "s/# Date :.*/# Date : $(date +%Y-%m-%d\ \%H:%M:%S)/" \ 1.94 - -i packages.txt 1.95 fi 1.96 1.97 # Needed in some case as tazwok define RECEIPT at configuration time 1.98 @@ -1456,7 +1443,7 @@ 1.99 if ! sort -c packages.list 2> /dev/null; then 1.100 report step "Sorting packages lists" 1.101 files_list="packages.list packages.desc packages.equiv" 1.102 - [ "$pkg_repository" = "$PACKAGES_REPOSITORY" ] && \ 1.103 + [ "${pkg_repository##*/}" = packages ] && \ 1.104 files_list="$files_list wanted.txt depends.txt" 1.105 for file in $files_list; do 1.106 [ -f $file ] || continue 1.107 @@ -1545,22 +1532,13 @@ 1.108 sort_db() 1.109 { 1.110 report step "Generating cookorder.txt" 1.111 - cat $dep_db | sed 's/ \t / /' | while read PACKAGE BUILD_DEPENDS; do 1.112 + sed 's/ \t / /' $dep_db | while read PACKAGE BUILD_DEPENDS; do 1.113 grep -q ^$PACKAGE$'\t' $wan_db && continue 1.114 1.115 # Replace each BUILD_DEPENDS with a WANTED package by it's 1.116 # WANTED package. 1.117 - replace_by_wanted() 1.118 - { 1.119 - for p in $BUILD_DEPENDS; do 1.120 - if grep -q ^$p$'\t' $wan_db; then 1.121 - echo -n $(grep ^$p$'\t' $wan_db | cut -f 2)' ' 1.122 - else 1.123 - echo -n $p' ' 1.124 - fi 1.125 - done | tr ' ' '\n' | sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' ' 1.126 - } 1.127 - echo -e $PACKAGE"\t $(replace_by_wanted) " 1.128 + echo -e $PACKAGE"\t $(echo $BUILD_DEPENDS | use_wanted | \ 1.129 + sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' ') " 1.130 done > $tmp/db 1.131 while [ -s "$tmp/db" ]; do 1.132 status=start 1.133 @@ -1574,8 +1552,8 @@ 1.134 if [ "$status" = start ]; then 1.135 cp -f $tmp/db /tmp/remain-depends.txt 1.136 echo "Can't go further because there's depency(ies) loop(s). The remaining packages will be commentend in the cookorder and will be unbuild in case of major update until the problem is solved." >&2 1.137 - for blocked in $(cut -f 1 $tmp/db); do 1.138 - echo "$blocked" >> $PACKAGES_REPOSITORY/blocked 1.139 + for remaining in $(cut -f 1 $tmp/db); do 1.140 + echo "$remaining" >> $blocked 1.141 done 1.142 break 1.143 fi 1.144 @@ -1667,8 +1645,15 @@ 1.145 { 1.146 for input in $(cat); do 1.147 { grep ^$input$'\t' $wan_db || echo $input 1.148 - } | sed 's/.*\t//' 1.149 - done 1.150 + } 1.151 + done | sed 's/.*\t//' 1.152 +} 1.153 + 1.154 +check_for_pkg_in_wok() 1.155 +{ 1.156 + [ -f $WOK/$PACKAGE/receipt ] && return 1.157 + echo "Can't find $PACKAGE in wok or mirror" >&2 1.158 + return 2 1.159 } 1.160 1.161 # Define how theses functions should act when using --undigest. 1.162 @@ -1742,6 +1727,14 @@ 1.163 grep -q ^$PACKAGE-dev$'\t' $ref_dep_db && echo $PACKAGE-dev 1.164 fi 1.165 } 1.166 + 1.167 + check_for_pkg_in_wok() 1.168 + { 1.169 + [ -f $WOK/$PACKAGE/receipt ] && return 1.170 + grep -q ^$PACKAGE'$\t' $ref_dep_db && return 1 1.171 + echo "Can't find $PACKAGE in wok or mirror" >&2 1.172 + return 2 1.173 + } 1.174 } 1.175 1.176 ######################################################################## 1.177 @@ -1783,10 +1776,10 @@ 1.178 done 1.179 append_to_dep() 1.180 { 1.181 - if ! grep -q ^$PACKAGE$'\t' $dep_db; then 1.182 + if grep -q ^$PACKAGE$'\t' $dep_db; then 1.183 + echo $PACKAGE >> $tmp/dep 1.184 + else 1.185 check_for_missing && echo $PACKAGE >> $tmp/dep 1.186 - else 1.187 - echo $PACKAGE >> $tmp/dep 1.188 fi 1.189 } 1.190 else 1.191 @@ -1810,10 +1803,10 @@ 1.192 if [ "$plan_check_for_missing" ]; then 1.193 append_to_dep() 1.194 { 1.195 - if ! grep -q ^$PACKAGE$'\t' $dep_db; then 1.196 + if grep -q ^$PACKAGE$'\t' $dep_db; then 1.197 + echo $PACKAGE >> $tmp/dep 1.198 + else 1.199 check_for_missing && echo $PACKAGE >> $tmp/dep 1.200 - else 1.201 - echo $PACKAGE >> $tmp/dep 1.202 fi 1.203 } 1.204 check_db_status=yes 1.205 @@ -1846,9 +1839,7 @@ 1.206 sed 1d -i $tmp/list 1.207 append_to_dep 1.208 for pkg in $(scan_pkg); do 1.209 - if ! grep -q ^$pkg$ $tmp/list $tmp/dep; then 1.210 - echo $pkg >> $tmp/list 1.211 - fi 1.212 + grep -q ^$pkg$ $tmp/list $tmp/dep || echo $pkg >> $tmp/list 1.213 done 1.214 done 1.215 if [ "$cooklist" ]; then 1.216 @@ -2113,7 +2104,7 @@ 1.217 echo "Moving $PACKAGE..." 1.218 mv -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION.tazpkg $PACKAGES_REPOSITORY 1.219 touch $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg 1.220 - previous_tarball=$(grep ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2) 1.221 + previous_tarball=$(grep -m1 ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2) 1.222 sed -e "/^$PACKAGE:main/d" \ 1.223 -e "s/^$PACKAGE:incoming/$PACKAGE:main/" \ 1.224 -i $SOURCES_REPOSITORY/sources.list 1.225 @@ -2130,7 +2121,7 @@ 1.226 done 1.227 1.228 if [ "$GEN_SAFE_WOK_TARBALL" ]; then 1.229 - rm -rf $PACKAGES_REPOSITORY/wok.tar.lzma 1.230 + rm -f $PACKAGES_REPOSITORY/wok.tar.lzma 1.231 cd $PACKAGES_REPOSITORY/wok 1.232 report step "Generating safe-wok tarball" 1.233 tar -c * | lzma e $PACKAGES_REPOSITORY/wok.tar.lzma 1.234 @@ -2189,7 +2180,7 @@ 1.235 if grep -q ^clean_wok $RECEIPT; then 1.236 clean_wok 1.237 fi 1.238 - # Clean should only have a receipt, stuff and optional desc. 1.239 + # Clean should only have a receipt, stuff and optionals desc/md5. 1.240 for f in `ls .` 1.241 do 1.242 case $f in 1.243 @@ -2234,7 +2225,9 @@ 1.244 source_receipt 1.245 1.246 # Define log path and start report. 1.247 - [ -f $LOCAL_REPOSITORY/log/$PACKAGE.html ] && rm $LOCAL_REPOSITORY/log/$PACKAGE.html 1.248 + for i in $(look_for_rwanted) $PACKAGE; do 1.249 + rm -f $LOCAL_REPOSITORY/log/$i.html 1.250 + done 1.251 report sublog $LOCAL_REPOSITORY/log/$PACKAGE.html 1.252 echo "$PACKAGE" > $LOCAL_REPOSITORY/log/package 1.253 report step "Cooking $PACKAGE" 1.254 @@ -2259,7 +2252,7 @@ 1.255 # Upgrade to cooked packages if it was previously installed. 1.256 report step "Look for package(s) to upgrade" 1.257 for pkg in $(look_for_rwanted) $PACKAGE; do 1.258 - if [ -d $INSTALLED/$pkg ]; then 1.259 + if [ -f $INSTALLED/$pkg/receipt ]; then 1.260 tazpkg get-install $pkg --forced 1.261 fi 1.262 done