wok annotate tazbb/stuff/tazbb @ rev 5881

tazbb: fix date overflow
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Jul 21 09:48:32 2010 +0200 (2010-07-21)
parents 93b7952261f9
children 4423738b3530
rev   line source
pankso@3512 1 #!/bin/sh
pankso@3512 2 # Tazbb - SliTaz Build Bot.
pankso@3512 3 # System wide config file: /etc/slitaz/tazbb.conf
pankso@3512 4 #
pankso@3512 5 # Tazbb is a tool to automate package building, it can be run manually
pankso@3512 6 # or via a cron job. On SliTaz build host, tazbb is run in a chroot env.
pankso@3512 7 #
pankso@3512 8 # (c) 2009 SliTaz GNU/Linux project - GNU gpl v3
pankso@3512 9 #
pankso@3512 10
pankso@3512 11 # Include config file or exit if no file found.
pankso@3512 12 if [ -f "./tazbb.conf" ]; then
pankso@3512 13 . ./tazbb.conf
pankso@3512 14 elif [ -f "/etc/slitaz/tazbb.conf" ]; then
pankso@3512 15 . /etc/slitaz/tazbb.conf
pankso@3512 16 else
pankso@3512 17 echo -e "\nNo config file found: tazbb.conf...\n" && exit 0
pankso@3512 18 fi
pascal@5823 19 LOG_SUFFIX=""
pascal@5823 20 case "$HG_WOK" in
pascal@5823 21 *stable) LOG_SUFFIX="&stable=1";;
pascal@5823 22 esac
pankso@3512 23
pankso@3512 24 # Tazbb is only for root.
pankso@3512 25 if test $(id -u) != 0 ; then
pankso@3512 26 echo -e "\nYou must be root to run: `basename $0`.\n" && exit 0
pankso@3512 27 fi
pankso@3512 28
pankso@3537 29 # Let tazbb finish is work and make sure needed files exist.
pankso@3512 30 if [ -f $LOCK_FILE ]; then
pankso@3512 31 case $1 in
pankso@3512 32 usage|list-*|*block)
pankso@3512 33 continue ;;
pankso@3512 34 *)
pankso@3512 35 echo -e "\nTazbb is already running and locked...\n"
pankso@3512 36 exit 0 ;;
pankso@3512 37 esac
pankso@3512 38 else
pankso@3512 39 mkdir -p $DB_DIR $LOG_DIR
pankso@3512 40 touch $LOCK_FILE $DB_DIR/blocked
pankso@3512 41 fi
pankso@3512 42
pascal@4236 43 # Set KERNEL variable
pascal@4236 44 if [ -s $BUILD_WOK/linux/receipt ]; then
pascal@4236 45 . $BUILD_WOK/linux/receipt
pascal@4236 46 KERNEL=$VERSION
pascal@4236 47 fi
pascal@4236 48
pankso@3512 49 usage()
pankso@3512 50 {
pankso@3512 51 echo -e "\nSliTaz developers and build host tool\n
pankso@3512 52 \033[1mUsage: \033[0m `basename $0` [command] [--option]
pankso@3512 53 \033[1mCommands: \033[0m\n
pascal@4996 54 usage Print this short usage and command list.
pascal@4996 55 list-pkgs List last cooked packages with date.
pascal@4996 56 report Run in report mode and dont cook anything [--verbose].
pascal@4996 57 cook Cook, install and log a single package build.
pascal@4996 58 cook-all Cook all missing, modified or unbuilt packages.
pascal@4996 59 cook-commit Cook all packages affected by a commit in the last update.
pascal@4996 60 test-pkgs Execute a test suite on all packages [--verbose].
pascal@4996 61 [un]block Block or unblock a package to skip or enable building.
pascal@4996 62 mail Send mail to package maintainer with tazbbmail.
pascal@4996 63 check-depends Verify DEPENDS value with library needs [--verbose].
pascal@4996 64 clean-up Remove old packages [--verbose|--dry-run].
pascal@4996 65 clean-log Remove all generated build log files.\n"
pankso@3512 66 }
pankso@3512 67
pankso@3512 68 status()
pankso@3512 69 {
pankso@3512 70 local CHECK=$?
pankso@3512 71 echo -en "\033[70G"
pankso@3512 72 if [ $CHECK = 0 ]; then
pankso@3512 73 echo "Done"
pankso@3512 74 else
pankso@3512 75 echo "Failed"
pankso@3512 76 fi
pankso@3512 77 return $CHECK
pankso@3512 78 }
pankso@3512 79
pankso@3512 80 top_summary()
pankso@3512 81 {
pankso@3512 82 cat > $DB_DIR/summary << _EOT_
pankso@3512 83 Update : `date`
pankso@3512 84 Revision : $NEW_REV (<a href="$HG_URL/log/$NEW_REV">changelog</a>)
pankso@3512 85 _EOT_
pankso@3512 86 }
pankso@3512 87
pankso@3512 88 packages_summary()
pankso@3512 89 {
pankso@3512 90 if ! grep -q "^Packages" $DB_DIR/summary; then
pankso@3512 91 cat >> $DB_DIR/summary << _EOT_
pankso@3512 92 Packages : `ls $BUILD_WOK | wc -l` in the wok, `cat $DB_DIR/cooklist | wc -l` to cook, \
pankso@3512 93 `cat $DB_DIR/blocked | wc -l` blocked, `cat $DB_DIR/corrupted | wc -l` corrupted
pankso@3512 94 _EOT_
pankso@3512 95 fi
pankso@3512 96 }
pankso@3512 97
pascal@4996 98 VERBOSE=""
pascal@4996 99
pankso@3512 100 packages_summary_update()
pankso@3512 101 {
pankso@3512 102 sed -i s/"[0-9]* in the wok"/"`ls $BUILD_WOK | wc -l` in the wok"/ \
pankso@3512 103 $DB_DIR/summary
pankso@3512 104 sed -i s/"[0-9]* to cook"/"`cat $DB_DIR/cooklist | wc -l` to cook"/ \
pankso@3512 105 $DB_DIR/summary
pankso@3512 106 sed -i s/"[0-9]* blocked"/"`cat $DB_DIR/blocked | wc -l` blocked"/ \
pankso@3512 107 $DB_DIR/summary
pankso@3512 108 sed -i s/"[0-9]* corrupted"/"`cat $DB_DIR/corrupted | wc -l` corrupted"/ \
pankso@3512 109 $DB_DIR/summary
pankso@3512 110 }
pankso@3512 111
pankso@3512 112 list_packages()
pankso@3512 113 {
pankso@3512 114 cd $PACKAGES_REPOSITORY
pankso@3512 115 ls -1t *.tazpkg | head -20 | \
pankso@3512 116 while read file
pankso@3512 117 do
pankso@3512 118 echo -n $(stat -c '%y' $PACKAGES_REPOSITORY/$file | cut -d. -f1)
pankso@3512 119 echo " $file"
pankso@3512 120 done
pankso@3512 121 }
pankso@3512 122
pankso@3512 123 show_report()
pankso@3512 124 {
pankso@3512 125 echo "Cooklist"
pankso@3512 126 echo "================================================================================"
pankso@3512 127 cat $DB_DIR/cooklist && echo ""
pascal@4447 128 echo "Packlist"
pascal@4447 129 echo "================================================================================"
pascal@4447 130 cat $DB_DIR/packlist && echo ""
pankso@3512 131 echo "Blocked"
pankso@3512 132 echo "================================================================================"
pankso@3512 133 cat $DB_DIR/blocked && echo ""
pankso@3512 134 echo ""
pankso@3512 135 }
pankso@3512 136
pascal@4163 137 # URL encoding
pascal@4163 138 escape()
pascal@4163 139 {
pascal@4163 140 echo $1 | sed -e 's/+/%2B/g' -e 's|/|%2F|g' -e 's/:/%3A/g'
pascal@4163 141 }
pascal@4163 142
pankso@3512 143 update_wok()
pankso@3512 144 {
pascal@4447 145 local forced
pascal@4447 146 forced=""
pankso@3512 147 echo ""
pascal@4447 148 echo "(updating flavors)" > $DB_DIR/running
pascal@4447 149 cd $HG_FLAVORS
pascal@4447 150 LAST_REV=`hg head --template '{rev}\n'`
pascal@4447 151 hg pull && hg update
pascal@4447 152 NEW_REV=`hg head --template '{rev}\n'`
pascal@4447 153 if [ "$NEW_REV" != "$LAST_REV" ]; then
pascal@4447 154 size=`du -sh $HG_FLAVORS | awk '{ print $1 }'`
pascal@4447 155 echo -n "Copying Hg flavors to the build flavors ($size)... "
pascal@4447 156 cp -a $HG_FLAVORS/* $BUILD_FLAVORS
pascal@4447 157 cp -a $HG_FLAVORS/.hg $BUILD_FLAVORS
pascal@4447 158 echo -e "Done\n"
pascal@4447 159 forced="yes"
pascal@4447 160 fi
pankso@3512 161 echo "(updating wok)" > $DB_DIR/running
pankso@3512 162 cd $HG_WOK
pankso@3512 163 LAST_REV=`hg head --template '{rev}\n'`
pankso@3512 164 hg pull && hg update
pankso@3512 165 NEW_REV=`hg head --template '{rev}\n'`
pankso@3512 166 # Gen a new summary and link last revision for the web interface.
pankso@3512 167 echo -e "\nHg wok : $HG_WOK ($NEW_REV)"
pankso@3512 168 echo -e "Build wok : $BUILD_WOK ($LAST_REV)\n"
pankso@3512 169 top_summary
pankso@3512 170 # Copy Hg wok if new revision or exit to stop process since nothing
pankso@3537 171 # have change (--forced can be used).
pankso@3512 172 if [ "$NEW_REV" != "$LAST_REV" ]; then
pankso@3512 173 size=`du -sh $HG_WOK | awk '{ print $1 }'`
pankso@3512 174 echo -n "Copying Hg wok to the build wok ($size)... "
pankso@3537 175 #rsync -r -n -t $HG_WOK/ $BUILD_WOK/
pankso@3512 176 cp -a $HG_WOK/* $BUILD_WOK
pankso@3512 177 cp -a $HG_WOK/.hg $BUILD_WOK
pankso@3512 178 echo -e "Done\n"
pankso@3512 179 else
pankso@3512 180 if [ "$1" = "cook-all" ] || [ "$1" = "cook-commit" ]; then
pascal@4447 181 if [ "$2" != "--forced" -a -z "$forced" ]; then
pankso@3512 182 echo -e "Nothing to cook...\n"
pankso@3512 183 packages_summary
pankso@3512 184 rm -f $LOCK_FILE && exit 0
pankso@3512 185 fi
pankso@3512 186 fi
pankso@3512 187 fi
pankso@3512 188 }
pankso@3512 189
pascal@4447 190 # Running 'tazbb report' should not pack anything and --verbose option
pascal@4447 191 # can be used to display more messages.
pascal@4447 192 check_flavors()
pascal@4447 193 {
pascal@4447 194 # Clean up last results.
pascal@4447 195 rm -f $DB_DIR/packlist && touch $DB_DIR/packlist
pascal@4447 196 echo ""
pascal@4447 197 echo "Checking all files in: $HG_FLAVORS"
pascal@4447 198 echo "================================================================================"
pascal@4447 199 echo "(checking flavors)" > $DB_DIR/running
pascal@4447 200 for flavor in $(cd $HG_FLAVORS ; ls)
pascal@4447 201 do
pascal@4447 202 [ "$2" = "--verbose" ] && echo "Flavor : $flavor"
pascal@4447 203 if [ ! -s $PACKAGES_REPOSITORY/$flavor.flavor ]; then
pascal@4447 204 echo $flavor >> $DB_DIR/packlist
pascal@4447 205 [ "$1" = "report" ] && echo "Missing : $flavor"
pascal@4447 206 echo "Missing flavor : $flavor" >> $DB_DIR/report
pascal@4447 207 continue
pascal@4447 208 fi
pascal@4452 209 for i in $(find $HG_FLAVORS/$flavor -type f); do
pascal@4447 210 [ $PACKAGES_REPOSITORY/$flavor.flavor -nt \
pascal@4447 211 $i ] && continue
pascal@4447 212 echo $flavor >> $DB_DIR/packlist
pascal@4900 213 [ "$1" = "report" ] && echo "Refresh : $flavor for $i"
pascal@4447 214 echo "Refresh flavor : $flavor" >> $DB_DIR/report
pascal@4447 215 continue 2
pascal@4447 216 done
pascal@4447 217 [ -s $HG_FLAVORS/$flavor/packages.list ] &&
pascal@4447 218 for i in $(cat $HG_FLAVORS/$flavor/packages.list); do
pascal@4902 219 if [ ! -d $BUILD_WOK/$i ]; then
pascal@4901 220 [ "$1" = "report" ] &&
pascal@4901 221 echo "Fix flavor for $i: $flavor"
pascal@4901 222 echo "Fix flavor for $i: $flavor" >> $DB_DIR/report
pascal@4901 223 continue
pascal@4901 224 fi
pascal@4447 225 [ $PACKAGES_REPOSITORY/$flavor.flavor -nt \
pascal@4447 226 $BUILD_WOK/$i/taz ] && continue
pascal@4447 227 echo $flavor >> $DB_DIR/packlist
pascal@4900 228 [ "$1" = "report" ] && echo "Repack : $flavor for $i"
pascal@4447 229 echo "Repack flavor : $flavor" >> $DB_DIR/report
pascal@4447 230 continue 2
pascal@4447 231 done
pascal@4447 232 done
pascal@4963 233
pascal@4963 234 # Check for meta flavors
pascal@4963 235 for flavor in $(cd $HG_FLAVORS ; ls)
pascal@4963 236 do
pascal@4963 237 grep -q ^ROOTFS_SELECTION $HG_FLAVORS/$flavor/receipt || continue
pascal@4963 238 . $HG_FLAVORS/$flavor/receipt
pascal@4963 239 set -- $ROOTFS_SELECTION
pascal@4963 240 if [ $PACKAGES_REPOSITORY/$2.flavor -nt \
pascal@4963 241 $PACKAGES_REPOSITORY/$flavor.flavor ]; then
pascal@4963 242 echo $flavor >> $DB_DIR/packlist
pascal@4963 243 [ "$1" = "report" ] && echo "Refresh : $flavor for $2"
pascal@4963 244 echo "Refresh meta flavor : $flavor" >> $DB_DIR/report
pascal@4963 245 continue
pascal@4963 246 fi
pascal@4963 247 if grep -q ^$2$ $DB_DIR/packlist ; then
pascal@4963 248 echo $flavor >> $DB_DIR/packlist
pascal@4963 249 [ "$1" = "report" ] && echo "Repack : $flavor for $2"
pascal@4963 250 echo "Repack meta flavor : $flavor" >> $DB_DIR/report
pascal@4963 251 continue
pascal@4963 252 fi
pascal@4963 253 done
pascal@4447 254 }
pascal@4447 255
pascal@4447 256 # Here we pack all flavors found in the packlist.
pascal@4447 257 pack_flavors()
pascal@4447 258 {
pascal@4447 259 [ -s $DB_DIR/packlist ] || return
pascal@4447 260 [ $PACKAGES_REPOSITORY/packages.list -nt /var/lib/tazpkg/packages.list ] &&
pascal@4447 261 cp -a $PACKAGES_REPOSITORY/packages.list /var/lib/tazpkg/packages.list
pascal@4447 262 cd $PACKAGES_REPOSITORY
pascal@4447 263 for flavor in $(cat $DB_DIR/packlist)
pascal@4447 264 do
pascal@4447 265 tazlito pack-flavor $flavor
pascal@4447 266 # Remove flavor from the packlist and empty lines for HTML <pre>.
pascal@4447 267 sed -i /"^$flavor$"/d $DB_DIR/packlist
pascal@4447 268 sed -i '/^$/d' $DB_DIR/packlist
pascal@4447 269 done
pascal@4447 270 cd - > /dev/null
pascal@4447 271 }
pascal@4447 272
pankso@3512 273 # Running 'tazbb report' should not cook anything and --verbose option
pankso@3512 274 # can be used to display more messages.
pankso@3512 275 check_wok()
pankso@3512 276 {
pankso@3512 277 # Clean up last results.
pankso@3512 278 rm -f $DB_DIR/cooklist && touch $DB_DIR/cooklist
pankso@3512 279 rm -f $DB_DIR/report && touch $DB_DIR/report
pankso@3512 280 rm -f $DB_DIR/unbuilt && touch $DB_DIR/unbuilt
pankso@3512 281 echo "Checking all files in: $HG_WOK"
pankso@3512 282 echo "================================================================================"
pankso@3512 283 echo "(checking wok)" > $DB_DIR/running
pankso@3512 284 for pkg in $HG_WOK/*
pankso@3512 285 do
pankso@3512 286 EXTRAVERSION=""
pankso@3512 287 WANTED=""
pankso@3512 288 . $pkg/receipt
pankso@3512 289 [ "$2" = "--verbose" ] && echo "Package : $PACKAGE"
pankso@3512 290 # Skip blocked packages.
pankso@3512 291 if grep -qs "^$PACKAGE$" $DB_DIR/blocked; then
pankso@3512 292 echo "Blocked : $PACKAGE ($VERSION)" && continue
pankso@3512 293 fi
pankso@3512 294
pascal@4447 295 # Some packages may compute VERSION at cook time (bristuff)
pascal@4447 296 if grep -q ^get_version $pkg/receipt; then
pankso@3512 297 . $BUILD_WOK/$PACKAGE/taz/*/receipt
pankso@3512 298 fi
pankso@3512 299
pankso@3537 300 # First check if package exit. Package naming _must_ be in the form of:
pankso@3512 301 # $PACKAGE-$VERSION or $PACKAGE-${VERSION}$EXTRAVERSION (Kernel string).
pankso@3512 302 if [ ! -f $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg ]; then
pankso@3512 303 [ -z "$EXTRAVERSION" ] && EXTRAVERSION="_$KERNEL"
pankso@3512 304 if [ ! -f $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg ]; then
pankso@3512 305 [ "$1" = "report" ] && echo "Missing : $PACKAGE ($VERSION)"
pankso@3512 306 echo "Missing : $PACKAGE ($VERSION)" >> $DB_DIR/report
pankso@3512 307 echo "$PACKAGE" >> $DB_DIR/cooklist
pankso@3512 308 fi
pankso@3512 309 else
pankso@3512 310 # Check if package is up-to-date.
pascal@5881 311 PKG_YEAR=`date -u -r $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}${EXTRAVERSION}.tazpkg '+%Y'`
pascal@5881 312 PKG_DATE=`date -u -r $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}${EXTRAVERSION}.tazpkg '+%m%d%H%M'`
pankso@3512 313 for file in `find $pkg -type f`
pankso@3512 314 do
pascal@5881 315 FILE_YEAR=`date -u -r $file '+%Y'`
pascal@5881 316 FILE_DATE=`date -u -r $file '+%m%d%H%M'`
pankso@3512 317 [ "$2" = "--verbose" ] && echo " -> Checking: $file"
pascal@5881 318 if [ "$FILE_YEAR" -ge "$PKG_YEAR" -a "$FILE_DATE" -gt "$PKG_DATE" ] && ! grep -q $PACKAGE $DB_DIR/cooklist; then
pankso@3512 319 [ "$1" = "report" ] && echo "Refresh : $PACKAGE ($VERSION)"
pankso@3512 320 echo "Refresh : $PACKAGE ($VERSION)" >> $DB_DIR/report
pankso@3512 321 echo "$PACKAGE" >> $DB_DIR/cooklist
pankso@3512 322 fi
pankso@3512 323 done
pankso@3512 324 fi
pankso@3537 325 # Now check if package is built and not already in the list.
pankso@3512 326 if [ ! -d $BUILD_WOK/$PACKAGE/taz ] && ! grep -q $PACKAGE $DB_DIR/cooklist; then
pankso@3512 327 [ "$1" = "report" ] && echo "Unbuilt : $PACKAGE ($VERSION)"
pankso@3512 328 echo "Unbuilt : $PACKAGE ($VERSION)" >> $DB_DIR/report
pankso@3512 329 echo "$PACKAGE" >> $DB_DIR/cooklist
pankso@3512 330 fi
pankso@3512 331 # Rebuild unbuilt packages list with link to log file. This list
pankso@3537 332 # is also generated by cook_inslall to have real time stats.
pankso@3512 333 if [ ! -d $BUILD_WOK/$PACKAGE/taz ]; then
pascal@5823 334 echo "<a href=\"log.php?package=$(escape $PACKAGE)$LOG_SUFFIX\">$PACKAGE</a>" \
pankso@3512 335 >> $DB_DIR/unbuilt
pankso@3512 336 fi
pankso@3512 337 done
pankso@3512 338 packages_summary
pankso@3512 339 }
pankso@3512 340
pankso@3537 341 # Create a new cooklist and summary (dont modify report) so 'tazbb cook-commit'
pankso@3512 342 # can cook last changes.
pankso@3512 343 check_commit()
pankso@3512 344 {
pankso@3512 345 echo "(checking commit)" > $DB_DIR/running
pankso@3512 346 cd $HG_WOK
pankso@3512 347 # Clean up last results.
pankso@3512 348 rm -f $DB_DIR/cooklist && touch $DB_DIR/cooklist
pankso@3512 349 # Get the name of modified packages by the revision range. +1 last
pankso@3537 350 # commit was build by the previous build.
pankso@3512 351 LAST_REV=$(($LAST_REV+1))
pankso@3512 352 echo -e "Will cook from revision $LAST_REV to $NEW_REV\n"
pankso@3512 353 for file in `hg log --rev=$LAST_REV:$NEW_REV --template '{files}\n'`
pankso@3512 354 do
pankso@3512 355 pkg=`echo $file | cut -d "/" -f 1`
pankso@3512 356 if ! grep -q ^$pkg$ $DB_DIR/cooklist; then
pankso@3512 357 . $pkg/receipt
pankso@3512 358 echo "Commit : $PACKAGE ($VERSION)" >> $DB_DIR/report
pankso@3512 359 echo "$PACKAGE" >> $DB_DIR/cooklist
pankso@3512 360 fi
pankso@3512 361 done
pankso@3512 362 packages_summary
pankso@3512 363 }
pankso@3512 364
pascal@4174 365 # Cook one package
pascal@4174 366 cook_package()
pascal@4174 367 {
pascal@4174 368 EXTRAVERSION=""
pascal@4174 369 DEPENDS=""
pascal@4174 370 BUILD_DEPENDS=""
pascal@4174 371 SOURCE=""
pascal@4174 372 WANTED=""
pascal@5823 373 echo "(cooking <a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>)" > $DB_DIR/running
pascal@4174 374 tazwok clean $pkg
pascal@4174 375 script -c "echo 'install' | tazwok cook $pkg" $LOG_DIR/$pkg.log
pascal@4174 376 # Install new package (important for new shared libs). Note
pascal@4174 377 # that tests are done separatly with 'test_packages' and should
pascal@4174 378 # be done by tazwok.
pascal@4174 379 if [ -f $BUILD_WOK/$pkg/taz/*/receipt ]; then
pascal@5013 380 TAZBB_NO_INSTALL=""
pascal@4174 381 . $BUILD_WOK/$pkg/taz/*/receipt
pascal@5013 382 [ -n "$TAZBB_NO_INSTALL" ] && return 0
pascal@4174 383 echo "(installing $PACKAGE-${VERSION}$EXTRAVERSION.tazpkg)" \
pascal@4174 384 > $DB_DIR/running
pascal@4174 385 yes | tazpkg install \
pascal@4174 386 $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg \
pascal@4174 387 --forced
pascal@4174 388 return 0
pascal@4174 389 fi
pascal@4174 390 return 1
pascal@4174 391 }
pascal@4174 392
pascal@4174 393 # Sort list according WANTED and BUILD_DEPENDS
pascal@4174 394 sort_cook_list()
pascal@4174 395 {
pascal@4174 396 sort | while read pkg; do
pascal@4174 397 echo -n "$pkg"
pascal@4174 398 WANTED=""
pascal@4174 399 BUILD_DEPENDS=""
pascal@4174 400 . $BUILD_WOK/$pkg/receipt
pascal@4185 401 MISSING=""
pascal@4174 402 for i in $WANTED $BUILD_DEPENDS ; do
pascal@4174 403 if [ ! -f $BUILD_WOK/$i/taz/*/receipt ]; then
pascal@4185 404 case " $MISSING " in
pascal@4185 405 *\ $i\ *);;
pascal@4185 406 *) echo -n " $i";;
pascal@4185 407 esac
pascal@4185 408 MISSING="$MISSING $i"
pascal@4174 409 fi
pascal@4174 410 done
pascal@4174 411 echo ""
pascal@4185 412 done | awk '
pascal@4185 413 function show(name)
pascal@4185 414 {
pascal@4185 415 print name;
pascal@4185 416 got[name]++;
pascal@4185 417 if (revdepcnt[name] > 0)
pascal@4185 418 for (i = split(revdep[name], pkg, " "); i > 0; i--)
pascal@4185 419 if (--depcnt[pkg[i]] == 0) show(pkg[i]);
pascal@4185 420 }
pascal@4185 421
pascal@4185 422 {
pascal@4185 423 if ($2 == "") show($1);
pascal@4185 424 else {
pascal@4185 425 depcnt[$1] = NF - 1;
pascal@4185 426 unres = unres " " $1;
pascal@4185 427 for (i = 2; i <= NF; i++) {
pascal@4185 428 if (got[$i] > 0) continue;
pascal@4185 429 revdepcnt[$i]++;
pascal@4185 430 revdep[$i] = revdep[$i] " " $1;
pascal@4174 431 }
pascal@4174 432 }
pascal@4185 433 }
pascal@4185 434 END {
pascal@4185 435 for (i = split(unres, pkg, " "); i > 0; i--)
pascal@4185 436 if (depcnt[pkg[i]] > 0) print pkg[i];
pascal@4185 437 }
pascal@4174 438 '
pascal@4174 439 }
pascal@4174 440
pankso@3512 441 # Here we cook all packages found in the cooklist.
pankso@3512 442 cook_install()
pankso@3512 443 {
pankso@3512 444 echo "" > $DB_DIR/unbuilt
pascal@4174 445 for pkg in `cat $DB_DIR/cooklist | sort_cook_list`
pankso@3512 446 do
pascal@4174 447 if ! cook_package $pkg; then
pankso@3512 448 # Link to build log.
pascal@5823 449 echo "<a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>" >> \
pankso@3512 450 $DB_DIR/unbuilt
pankso@3512 451 fi
pascal@4996 452 missing_depends="$(check_depends_pkg $pkg)"
pascal@4996 453 if [ -n "$missing_depends" ]; then
pascal@4996 454 cat >> $LOG_DIR/$pkg.log <<EOT
pascal@4996 455
pascal@4996 456 Update $pkg receipt for DEPENDS :
pascal@4996 457 The package $pkg depends on packages $missing_depends
pascal@4996 458
pascal@4996 459 EOT
pascal@4996 460 # Unbuild package
pascal@4996 461 rm -rf $BUILD_WOK/$pkg/taz
pascal@4996 462 # Link to build log.
pascal@5823 463 echo "<a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>" >> \
pascal@4996 464 $DB_DIR/unbuilt
pascal@4996 465 fi
pankso@3512 466 # Remove package from the cooklist and empty lines for HTML <pre>.
pankso@3512 467 sed -i /"^$pkg$"/d $DB_DIR/cooklist
pankso@3512 468 sed -i '/^$/d' $DB_DIR/cooklist
pankso@3537 469 packages_summary_update
pankso@3512 470 done
pankso@3512 471 }
pankso@3512 472
pascal@4996 473 # Build depends_to_skip list with packages to remove from depends_to_add list
pascal@4996 474 # These packages are already present in depends_to_add trees
pascal@4996 475 scan_depends_to_skip()
pascal@4996 476 {
pascal@4996 477 local i
pascal@4996 478 case " $depends_to_skip " in
pascal@4996 479 *\ $1\ *) return;;
pascal@4996 480 esac
pascal@4996 481 [ -d $BUILD_WOK/$1 ] || return
pascal@4996 482 DEPENDS=""
pascal@4996 483 . $BUILD_WOK/$1/receipt
pascal@4996 484 for i in $DEPENDS ; do
pascal@4996 485 case " $depends_to_add " in
pascal@4996 486 *\ $i\ *) depends_to_skip="$depends_to_skip $i";;
pascal@4996 487 esac
pascal@4996 488 done
pascal@4996 489 for i in $DEPENDS ; do
pascal@4996 490 scan_depends_to_skip $i
pascal@4996 491 done
pascal@4996 492 }
pascal@4996 493
pascal@4996 494 # Reduce depends list by scanning nested depends
pascal@4996 495 show_missing_depends()
pascal@4996 496 {
pascal@4996 497 local i
pascal@4996 498 depends_to_add=""
pascal@4996 499 depends_to_skip="$2"
pascal@4996 500 for i in $1 ; do
pascal@4996 501 case " $depends_to_add " in
pascal@4996 502 *\ $i\ *) continue;;
pascal@4996 503 esac
pascal@4996 504 depends_to_add="$depends_to_add$i "
pascal@4996 505 done
pascal@4996 506 for i in $depends_to_add ; do
pascal@4996 507 scan_depends_to_skip $i
pascal@4996 508 done
pascal@4996 509 for i in $depends_to_add ; do
pascal@4996 510 case " $depends_to_skip " in
pascal@4996 511 *\ $i\ *) continue;;
pascal@4996 512 esac
pascal@4996 513 echo -n "$i "
pascal@4996 514 done
pascal@4996 515 }
pascal@4996 516
pascal@4996 517 # Build all_depends variable
pascal@4996 518 scan_dep()
pascal@4996 519 {
pascal@4996 520 local i
pascal@4996 521 all_depends="$all_depends$PACKAGE "
pascal@4996 522 for i in $DEPENDS $SUGGESTED ; do
pascal@4996 523 case " $all_depends " in
pascal@4996 524 *\ $i\ *) continue;;
pascal@4996 525 esac
pascal@4996 526 [ -d $BUILD_WOK/$i ] || {
pascal@4996 527 all_depends="$all_depends$i "
pascal@4996 528 continue
pascal@4996 529 }
pascal@4996 530 DEPENDS=""
pascal@4996 531 SUGGESTED=""
pascal@4996 532 . $BUILD_WOK/$i/receipt
pascal@4996 533 scan_dep
pascal@4996 534 done
pascal@4996 535 }
pascal@4996 536
pascal@4996 537 # Check for ELF file
pascal@4996 538 is_elf()
pascal@4996 539 {
pascal@4996 540 [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ]
pascal@4996 541 }
pascal@4996 542
pascal@4996 543 # Print shared library dependencies
pascal@4996 544 ldd()
pascal@4996 545 {
pascal@4996 546 LD_PRELOAD="" LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
pascal@4996 547 }
pascal@4996 548
pascal@4996 549 # scan a file for shared libraries and display according package names
pascal@4996 550 check_depends_file()
pascal@4996 551 {
pascal@4996 552 file=$1
pascal@4996 553 is_elf $file || continue
pascal@4996 554 case "$file" in
pascal@4996 555 *.o|*.ko|*.ko.gz) continue;;
pascal@4996 556 esac
pascal@4996 557 [ -s /tmp/files.list.tazbb$$ ] ||
pascal@4996 558 unlzma -c $PACKAGES_REPOSITORY/files.list.lzma >/tmp/files.list.tazbb$$
pascal@4996 559 ldd $file | while read lib rem; do
pascal@4996 560 case "$lib" in
pascal@4996 561 statically|linux-gate.so*|ld-*.so|*/ld-*.so)
pascal@4996 562 continue;;
pascal@4996 563 esac
pascal@4996 564 for dep in $(grep $lib /tmp/files.list.tazbb$$ | cut -d: -f1); do
pascal@4996 565 case " $all_depends " in
pascal@4996 566 *\ $dep\ *) continue 2;;
pascal@4996 567 esac
pascal@4996 568 for vdep in $(grep $dep $PACKAGES_REPOSITORY/packages.equiv | cut -d= -f1); do
pascal@4996 569 case " $all_depends " in
pascal@4996 570 *\ $vdep\ *) continue 3;;
pascal@4996 571 esac
pascal@4996 572 done
pascal@4996 573 done
pascal@4996 574 [ -n "$dep" ] || dep="UNKNOWN"
pascal@4996 575 all_depends="$all_depends $dep"
pascal@4996 576 if [ -n "$VERBOSE" ]; then
pascal@4996 577 echo "${file#*fs} depends on package $dep for the shared library $lib" 1>&2
pascal@4996 578 fi
pascal@4996 579 echo -n "$dep "
pascal@4996 580 done
pascal@4996 581 }
pascal@4996 582
pascal@4996 583 DEFAULT_DEPENDS="glibc-base"
pascal@4996 584
pascal@4996 585 # scan a package for shared libraries and display missing package in DEPENDS
pascal@4996 586 check_depends_pkg()
pascal@4996 587 {
pascal@4996 588 pkg=$1
pascal@4996 589 echo "(checking depends for $pkg)" > $DB_DIR/running
pascal@4996 590 tmp=/tmp/tazbb$$
pascal@4996 591 mkdir $tmp
pascal@4996 592 package=$(basename $pkg)
pascal@4996 593 if ! cd ${package%%-*}*/taz/${package%.tazpkg}/.. 2> /dev/null; then
pascal@4996 594 cd $tmp
pascal@4996 595 tazpkg extract $pkg > /dev/null 2>&1
pascal@4996 596 fi
pascal@4996 597 . */receipt
pascal@4996 598 all_depends="$DEFAULT_DEPENDS "
pascal@4996 599 scan_dep
pascal@4996 600 toadd=$(find */fs -type f | while read file ; do
pascal@4996 601 check_depends_file $file
pascal@4996 602 done)
pascal@4996 603 . */receipt
pascal@4996 604 rm -rf */
pascal@4996 605 cd - > /dev/null
pascal@4996 606 rm -rf $tmp
pascal@4996 607 show_missing_depends "$toadd" "$DEPENDS $SUGGESTED"
pascal@4996 608 }
pascal@4996 609
pascal@4996 610 check_depends_this_file()
pascal@4996 611 {
pascal@4996 612 file=$1
pascal@4996 613 all_depends="$DEFAULT_DEPENDS "
pascal@4996 614 scan_dep
pascal@4996 615 check_depends_file $file
pascal@4996 616 }
pascal@4996 617
pankso@3512 618 # Remove old packages in the build wok and clean pkgs repository. The
pankso@3512 619 # Hg wok is copied into the build wok so packages removed by hg must be
pankso@3512 620 # removed. To remove old packages in the repository we look into the
pankso@3537 621 # build wok and dont remove unbuilt packages. Clean-up will also remove
pankso@3512 622 # all corrupted packages.
pankso@3512 623 clean_up()
pankso@3512 624 {
pankso@3512 625 touch $DB_DIR/removed
pankso@3512 626 echo -e "\nCleaning the build wok, old and corrupted packages...\n"
pankso@3512 627 echo "(cleaning)" > $DB_DIR/running
pankso@4208 628 for pkg in `ls $BUILD_WOK`
pankso@3512 629 do
pankso@4208 630 if [ ! -d $HG_WOK/$pkg ]; then
pankso@3512 631 case $2 in
pankso@3512 632 --dry-run)
pankso@3512 633 echo "Removing directory : $pkg" ;;
pankso@3512 634 --verbose)
pankso@3512 635 echo "Removing directory : $pkg"
pankso@3512 636 rm -rf $BUILD_WOK/$pkg ;;
pankso@3512 637 *)
pankso@3512 638 rm -rf $BUILD_WOK/$pkg ;;
pankso@3512 639 esac
pankso@3512 640 fi
pankso@3512 641 done
pankso@3512 642 # Build a packages list with EXTRAVERSION so we can grep into it.
pankso@3512 643 rm -f $DB_DIR/packaged && touch $DB_DIR/packaged
pankso@3512 644 for receipt in $BUILD_WOK/*/taz/*/receipt
pankso@3512 645 do
pankso@3512 646 EXTRAVERSION=""
pankso@3512 647 . $receipt
pankso@3512 648 echo "$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg" >> $DB_DIR/packaged
pankso@3512 649 done
pankso@3512 650 for pkg in `cd $PACKAGES_REPOSITORY && ls *.tazpkg`
pankso@3512 651 do
pankso@3512 652 if ! grep -q "^$pkg$" $DB_DIR/packaged; then
pankso@3512 653 case $2 in
pankso@3512 654 --dry-run)
pankso@3512 655 echo "Removing package : $pkg" ;;
pankso@3512 656 --verbose)
pankso@3512 657 echo "Removing package : $pkg"
pankso@3512 658 echo "$pkg" >> $DB_DIR/removed
pankso@3512 659 rm -f $PACKAGES_REPOSITORY/$pkg ;;
pankso@3512 660 *)
pankso@3512 661 echo "$pkg" >> $DB_DIR/removed
pankso@3512 662 rm -f $PACKAGES_REPOSITORY/$pkg ;;
pankso@3512 663 esac
pankso@3512 664 fi
pankso@3512 665 done
pankso@3512 666 # Remove all corrupted packages
pankso@3512 667 for pkg in `cat $DB_DIR/corrupted | awk '{ print $3 }'`
pankso@3512 668 do
pankso@3512 669 case $2 in
pankso@3512 670 --dry-run)
pankso@3512 671 echo "Removing corrupted: $pkg" ;;
pankso@3512 672 --verbose)
pankso@3512 673 echo "Removing corrupted: $pkg"
pankso@3512 674 echo "$pkg" >> $DB_DIR/removed
pankso@3512 675 rm -rf $PACKAGES_REPOSITORY/$pkg ;;
pankso@3512 676 *)
pankso@3512 677 echo "$pkg" >> $DB_DIR/removed
pankso@3512 678 rm -rf $PACKAGES_REPOSITORY/$pkg ;;
pankso@3512 679 esac
pankso@3512 680 done
pankso@3512 681 echo ""
pankso@3512 682 # Keep the 20 last removed packages list.
pankso@3512 683 cat $DB_DIR/removed | tail -n 20 > /tmp/removed.tail
pankso@3512 684 mv -f /tmp/removed.tail $DB_DIR/removed
pankso@5132 685 # Clean packages stuff/ directory
pankso@5132 686 echo -e "\nCleaning the build wok stuff/ directories...\n"
pankso@5132 687 for pkg in `ls $BUILD_WOK`
pankso@5132 688 do
pankso@5132 689 if [ -d "$BUILD_WOK/$pkg/stuff" ]; then
pankso@5132 690 cd $BUILD_WOK/$pkg
pankso@5132 691 for file in `find stuff -type f`
pankso@5132 692 do
pankso@5132 693 if [ ! -f "$HG_WOK/$pkg/$file" ]; then
pankso@5132 694 echo "Removing: $pkg/$file"
pankso@5132 695 rm $file
pankso@5132 696 fi
pankso@5132 697 done
pankso@5132 698 fi
pankso@5132 699 done
pankso@3512 700 }
pankso@3512 701
pankso@3512 702 blocked_urls()
pankso@3512 703 {
pankso@3512 704 rm -f $DB_DIR/blocked.urls
pankso@3512 705 for pkg in `cat $DB_DIR/blocked`
pankso@3512 706 do
pankso@3512 707 if [ -f $LOG_DIR/$pkg.log ]; then
pascal@5823 708 echo "<a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>" >> \
pankso@3512 709 $DB_DIR/blocked.urls
pankso@3512 710 else
pankso@3512 711 echo "$pkg" >> $DB_DIR/blocked.urls
pankso@3512 712 fi
pankso@3512 713 done
pankso@3512 714 }
pankso@3512 715
pankso@3512 716 # 4k, not a meta or a get-* package and no files = buggy package
pankso@3512 717 test_packages()
pankso@3512 718 {
pankso@3512 719 echo -e "\nTesting all packages in: $PACKAGES_REPOSITORY"
pankso@3512 720 echo "================================================================================"
pankso@3512 721 echo "(testing packages)" > $DB_DIR/running
pankso@3512 722 rm -f $DB_DIR/corrupted && touch $DB_DIR/corrupted
pankso@3512 723 for pkg in $PACKAGES_REPOSITORY/*.tazpkg
pankso@3512 724 do
pankso@3512 725 tmp=/tmp/bb-test.$$
pankso@3512 726 CATEGORY=""
pankso@3512 727 if du $pkg | grep -qw '^4' && ! echo `basename $pkg` | grep -q '^get-'; then
pankso@3512 728 mkdir -p $tmp && cd $tmp
pascal@4700 729 cpio -i receipt >/dev/null 2>&1 < $pkg
pankso@3512 730 . ./receipt
pankso@3512 731 if [ "$CATEGORY" != "meta" ]; then
pankso@3512 732 [ "$2" = "--verbose" ] && echo "Testing: $PACKAGE"
pascal@4850 733 cpio -i fs.cpio.gz fs.cpio.lzma >/dev/null 2>&1 < $pkg
pascal@4850 734 if [ ! -f fs.cpio.gz -a ! -f fs.cpio.lzma ]; then
pankso@3516 735 echo "Missing filesystem `basename $pkg`"
pankso@3512 736 if [ -f $LOG_DIR/$PACKAGE.log ];then
pascal@5823 737 echo "Missing filesystem `basename $pkg` <a href=\"log.php?package=$(escape $PACKAGE)$LOG_SUFFIX\">Log</a>" \
pankso@3512 738 >> $DB_DIR/corrupted
pankso@3512 739 else
pankso@3516 740 echo "Missing filesystem `basename $pkg`" \
pankso@3512 741 >> $DB_DIR/corrupted
pankso@3512 742 fi
pankso@3512 743 else
pascal@4850 744 ( zcat fs.cpio.gz 2> /dev/null || \
pascal@4850 745 unlzma -c fs.cpio.lzma ) | \
pascal@4850 746 cpio -id >/dev/null 2>&1
pascal@4395 747 files=`find fs -type f -o -type l`
pankso@3512 748 if [ -z "$files" ]; then
pankso@3516 749 echo "Empty filesystem `basename $pkg`"
pankso@3512 750 if [ -f $LOG_DIR/$PACKAGE.log ]; then
pascal@5823 751 echo "Empty filesystem `basename $pkg` <a href=\"log.php?package=$(escape $PACKAGE)$LOG_SUFFIX\">Log</a>" \
pankso@3512 752 >> $DB_DIR/corrupted
pankso@3512 753 else
pankso@3516 754 echo "Empty filesystem `basename $pkg`" \
pankso@3512 755 >> $DB_DIR/corrupted
pankso@3512 756 fi
pankso@3512 757 fi
pankso@3512 758 fi
pankso@3512 759 fi
pankso@3512 760 cd .. && rm -rf $tmp
pankso@3512 761 fi
pankso@3512 762 done
pankso@3512 763 packages_summary_update
pankso@3512 764 echo ""
pankso@3512 765 }
pankso@3512 766
pascal@4447 767 # Generate flavor list
pascal@4447 768 gen_flavor_list()
pascal@4447 769 {
pascal@4447 770 cd $PACKAGES_REPOSITORY
pascal@4447 771 noheader=""
pascal@4447 772 for i in *.flavor; do
pascal@4447 773 tazlito show-flavor $i --brief $noheader
pascal@4447 774 noheader="--noheader"
pascal@4447 775 done > flavors.list
pascal@4447 776 cd - > /dev/null
pascal@4447 777 }
pascal@4447 778
pankso@3512 779 case "$1" in
pankso@3512 780 list-pkgs)
pankso@3512 781 # List last cooked packages.
pankso@3512 782 list_packages ;;
pankso@3512 783 report)
pankso@3512 784 # Run in report mode. If an update is done we must cook-all to
pankso@3512 785 # rebuild all updated packages.
pankso@3512 786 [ "$2" == "--update" ] && update_wok $@ || echo ""
pankso@3512 787 check_wok $@
pascal@4447 788 check_flavors $@
pankso@3512 789 test_packages $@
pankso@3512 790 show_report ;;
pankso@4110 791 cook)
pankso@4110 792 # Cook, install and log a single package build.
pankso@4110 793 if [ -z $2 ]; then
pankso@4110 794 echo "Please specify a package on the command line."
pankso@4110 795 rm -f $LOCK_FILE && exit 0
pankso@4110 796 fi
pankso@4110 797 pkg=$2
pankso@4110 798 echo "Starting to cook and install: $pkg"
pascal@4174 799 if ! cook_package $pkg; then
pankso@4110 800 echo "Unable to install: $pkg"
pankso@4110 801 fi ;;
pankso@3512 802 cook-all)
pankso@3512 803 # Update wok, gen report (with cooklist), cook all packages, test,
pankso@3512 804 # clean, gen new report and lists.
pankso@3512 805 update_wok $@
pankso@3512 806 check_wok $@
pankso@3512 807 cook_install
pankso@3512 808 test_packages $@
pascal@5034 809 check_flavors $@
pascal@5034 810 pack_flavors
pankso@3512 811 clean_up $@
pankso@3512 812 check_wok $@
pankso@3512 813 echo "(generating lists)" > $DB_DIR/running
pankso@3512 814 tazwok gen-list --text
pascal@4447 815 check_flavors $@
pascal@4447 816 gen_flavor_list
pankso@3512 817 echo "" ;;
pankso@3512 818 cook-commit)
pankso@3512 819 # Cook all packages affected by the last commits in the wok.
pankso@3529 820 # Clean up is done only by cook-all to avoid rebuild of corrupted
pankso@3529 821 # packages on each commit.
pankso@3512 822 update_wok $@
pankso@3512 823 check_commit
pankso@3512 824 cook_install
pankso@3512 825 test_packages $@
pascal@5034 826 check_flavors $@
pascal@5034 827 pack_flavors
pankso@3512 828 check_wok $@
pascal@5034 829 check_flavors $@
pankso@3512 830 echo "(generating lists)" > $DB_DIR/running
pankso@3512 831 tazwok gen-list --text
pascal@4447 832 gen_flavor_list
pankso@3512 833 echo "" ;;
pankso@3512 834 block)
pankso@3512 835 # Add a pkg name to the list of blocked packages.
pankso@3512 836 echo ""
pankso@3512 837 if grep -qs "^$2$" $DB_DIR/blocked; then
pankso@3512 838 echo -e "$2 is already in the blocked packages list."
pankso@3512 839 else
pankso@3512 840 echo -n "Adding $2 to : $DB_DIR/blocked... "
pankso@3512 841 echo "$2" >> $DB_DIR/blocked && echo "Done"
pankso@3512 842 if grep -q "^$2$" $DB_DIR/cooklist; then
pankso@3512 843 echo -n "Removing $2 from : $DB_DIR/cooklist... "
pankso@3512 844 sed -i /"^$2$"/d $DB_DIR/cooklist && echo "Done"
pankso@3512 845 packages_summary_update
pankso@3512 846 fi
pankso@3512 847 fi
pankso@3512 848 blocked_urls
pankso@3512 849 echo "" ;;
pankso@3512 850 unblock)
pankso@3512 851 # Remove a pkg name from the list of blocked packages.
pankso@3512 852 echo ""
pankso@3512 853 if grep -qs "^$2$" $DB_DIR/blocked; then
pankso@3512 854 echo -n "Removing $2 from : $DB_DIR/blocked... "
pankso@3512 855 sed -i /"^$2$"/d $DB_DIR/blocked
pankso@3512 856 sed -i '/^$/d' $DB_DIR/blocked && echo "Done"
pankso@3512 857 echo -n "Adding $2 to : $DB_DIR/cooklist... "
pankso@3512 858 echo "$2" >> $DB_DIR/cooklist && echo "Done"
pankso@3512 859 packages_summary_update
pankso@3512 860 else
pankso@3512 861 echo -e "$2 is not in the blocked packages list."
pankso@3512 862 fi
pankso@3512 863 blocked_urls
pankso@3512 864 echo "" ;;
pankso@3512 865 test-pkgs)
pankso@3537 866 # Start a test suite on all builded packages.
pankso@3512 867 test_packages $@ ;;
pankso@3512 868 test-suite)
pankso@3537 869 # Start a test suite on all builded package and the wok using
pankso@3512 870 # the great 'tazwok check'.
pankso@3512 871 #
pankso@3512 872 # test_packages > $LOG_DIR/test-suite.log
pankso@3512 873 # tazwok check >> $LOG_DIR/test-suite.log
pankso@3512 874 #
pankso@3512 875 test_packages $@
pankso@3512 876 script -c "tazwok check" $LOG_DIR/test-suite.log ;;
pankso@3590 877 mail)
pankso@3590 878 # Tazbbmail Pythom script wrapper.
pankso@3590 879 PACKAGE=$2
pankso@3590 880 tazbbmail $PACKAGE ;;
pankso@3512 881 clean-up)
pankso@3512 882 # Remove old packages and generate new packages lists.
pankso@3512 883 update_wok $@
pankso@3512 884 clean_up $@
pankso@3512 885 packages_summary_update
pankso@3512 886 [ "$2" != "--dry-run" ] && tazwok gen-list --text ;;
pankso@3512 887 clean-log)
pankso@3512 888 logs=`ls $LOG_DIR | wc -l`
pankso@3512 889 echo -n "Cleaning: $LOG_DIR... "
pankso@3512 890 rm -rf $LOG_DIR/*
pankso@3512 891 echo "$logs log removed" ;;
pascal@4996 892 check-depends)
pascal@4996 893 case "$2" in
pascal@4996 894 wok)
pascal@4996 895 for pkg in $PACKAGES_REPOSITORY/*.tazpkg ; do
pascal@4996 896 missing_depends="$(check_depends_pkg $pkg)"
pascal@4996 897 [ -n "$missing_depends" ] &&
pascal@4996 898 echo "The package $pkg depends on $missing_depends."
pascal@4996 899 done ;;
pascal@4996 900 package)
pascal@4996 901 pkg=$3
pascal@4996 902 VERBOSE=$4
pascal@4996 903 missing_depends="$(check_depends_pkg $pkg)"
pascal@4996 904 [ -n "$missing_depends" ] &&
pascal@4996 905 echo "The package $pkg depends on $missing_depends."
pascal@4996 906 ;;
pascal@4996 907 file)
pascal@4996 908 file=3
pascal@4996 909 VERBOSE=$4
pascal@4996 910 missing_depends="$(check_depends_this_file $file)"
pascal@4996 911 [ -n "$missing_depends" ] &&
pascal@4996 912 echo "The file $file depends on $missing_depends."
pascal@4996 913 ;;
pascal@4996 914 *) cat <<EOT
pascal@4996 915 check-depends wok check every package in wok.
pascal@4996 916 check-depends package <pkg> check one package.
pascal@4996 917 check-depends file <filename> check one file only.
pascal@4996 918 EOT
pascal@4996 919 ;;
pascal@4996 920 esac ;;
pankso@3512 921 *)
pankso@3512 922 usage ;;
pankso@3512 923 esac
pankso@3512 924
pankso@3512 925 echo "" > $DB_DIR/running
pascal@4996 926 rm -f $LOCK_FILE /tmp/files.list.tazbb$$
pankso@3512 927
pankso@3512 928 exit 0