# HG changeset patch # User Christophe Lincoln # Date 1245465713 -7200 # Node ID 60003751479d92bc63acd614f7303b4986d4471b # Parent fa109a7618aa5cd45baed28d7fc13783646cb139 Add Tazbb (SliTaz Build Bot) diff -r fa109a7618aa -r 60003751479d tazbb/description.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazbb/description.txt Sat Jun 20 04:41:53 2009 +0200 @@ -0,0 +1,10 @@ + +SliTaz Build Bot. Tazbb is a tool to automate and test SliTaz building. +Please read the Cookbook documentation for more information and put your +on Tazz Wiki page on the Labs. The package provide tazbb script, config +file and the web interface. + +Tank Build Bot : http://bb.slitaz.org/ +Tazbb Wiki : http://labs.slitaz.org/wiki/distro/Tazbb +Cookbook page : http://www.slitaz.org/en/doc/cookbook/build-bot.html + diff -r fa109a7618aa -r 60003751479d tazbb/receipt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazbb/receipt Sat Jun 20 04:41:53 2009 +0200 @@ -0,0 +1,53 @@ +# SliTaz package receipt. + +PACKAGE="tazbb" +VERSION="1.0" +CATEGORY="development" +SHORT_DESC="SliTaz Build bot." +MAINTAINER="pankso@slitaz.org" +DEPENDS="tazpkg tazwok mercurial slitaz-toolchain" +WEB_SITE="http://labs.slitaz.org/wiki/distro/Bb" + +# Rules to gen a SliTaz package suitable for Tazpkg. +genpkg_rules() +{ + mkdir -p \ + $fs/usr/bin \ + $fs/etc/slitaz \ + $fs/var/lib/tazbb \ + $fs/var/lib/tazbb + cp stuff/tazbb $fs/usr/bin + cp stuff/tazbb.conf $fs/etc/slitaz + cp -a stuff/web $fs/var/lib/tazbb + chmod 755 $fs/usr/bin/* + chown -R root.root $fs +} + +post_install() +{ + # On Tank we have bb.slitaz.org virtual host in: /home/slitaz/www + if [ -d $1/home/slitaz/www/bb ]; then + cp -a $1/var/lib/tazbb/web $1/home/slitaz/www + chown www.www $1/home/slitaz/www + else + mkdir -p $1/var/www/vhosts + ln -s $1/var/lib/tazbb/web $1/var/www/vhosts/bb +cat << _EOT_ + +To have Tazbb web interface on your local system you can add a vhost +to Lighttp (or Apache) and the hostname to /etc/hosts. Example for Lighty: + +$HTTP["host"] =~ "bb" { + server.document-root = "/var/www/vhost/bb" +} + +Or run: browser http://localhost/vhosts/bb + +_EOT_ + fi +} + +post_remove() +{ + rm -rf /var/www/vhost/bb +} diff -r fa109a7618aa -r 60003751479d tazbb/stuff/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazbb/stuff/README Sat Jun 20 04:41:53 2009 +0200 @@ -0,0 +1,15 @@ +Tazbb Build Bot +=============================================================================== + + +Check the description.txt for a brief overview of Tazbb, read the Cookbook doc +and collaborate on the Labs. + + +Tank Build Bot : http://bb.slitaz.org/ +Tazbb Wiki : http://labs.slitaz.org/wiki/distro/Tazbb +Cookbook page : http://www.slitaz.org/en/doc/cookbook/build-bot.html + + +=============================================================================== + diff -r fa109a7618aa -r 60003751479d tazbb/stuff/tazbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazbb/stuff/tazbb Sat Jun 20 04:41:53 2009 +0200 @@ -0,0 +1,504 @@ +#!/bin/sh +# Tazbb - SliTaz Build Bot. +# System wide config file: /etc/slitaz/tazbb.conf +# +# Tazbb is a tool to automate package building, it can be run manually +# or via a cron job. On SliTaz build host, tazbb is run in a chroot env. +# +# (c) 2009 SliTaz GNU/Linux project - GNU gpl v3 +# + +# Include config file or exit if no file found. +if [ -f "./tazbb.conf" ]; then + . ./tazbb.conf +elif [ -f "/etc/slitaz/tazbb.conf" ]; then + . /etc/slitaz/tazbb.conf +else + echo -e "\nNo config file found: tazbb.conf...\n" && exit 0 +fi + +# Tazbb is only for root. +if test $(id -u) != 0 ; then + echo -e "\nYou must be root to run: `basename $0`.\n" && exit 0 +fi + +# Let tazbb finish is work and make sure needed files exist. +if [ -f $LOCK_FILE ]; then + case $1 in + usage|list-*|*block) + continue ;; + *) + echo -e "\nTazbb is already running and locked...\n" + exit 0 ;; + esac +else + mkdir -p $DB_DIR $LOG_DIR + touch $LOCK_FILE $DB_DIR/blocked +fi + +usage() +{ + echo -e "\nSliTaz developers and build host tool\n +\033[1mUsage: \033[0m `basename $0` [command] [--option] +\033[1mCommands: \033[0m\n + usage Print this short usage and command list. + list-pkgs List last cooked packages with date. + report Run in report mode and dont cook anything [--verbose]. + cook-all Cook all missing, modified or unbuilt packages. + cook-commit Cook all packages affected by a commit in the last update. + test-pkgs Execute a test suite on all packages [--verbose]. + [un]block Block or unblock a package to skip or enable building. + clean-up Remove old packages [--verbose|--dry-run]. + clean-log Remove all generated build log files.\n" +} + +status() +{ + local CHECK=$? + echo -en "\033[70G" + if [ $CHECK = 0 ]; then + echo "Done" + else + echo "Failed" + fi + return $CHECK +} + +top_summary() +{ + cat > $DB_DIR/summary << _EOT_ +Update : `date` +Revision : $NEW_REV (changelog) +_EOT_ +} + +packages_summary() +{ + if ! grep -q "^Packages" $DB_DIR/summary; then + cat >> $DB_DIR/summary << _EOT_ +Packages : `ls $BUILD_WOK | wc -l` in the wok, `cat $DB_DIR/cooklist | wc -l` to cook, \ +`cat $DB_DIR/blocked | wc -l` blocked, `cat $DB_DIR/corrupted | wc -l` corrupted +_EOT_ + fi +} + +packages_summary_update() +{ + sed -i s/"[0-9]* in the wok"/"`ls $BUILD_WOK | wc -l` in the wok"/ \ + $DB_DIR/summary + sed -i s/"[0-9]* to cook"/"`cat $DB_DIR/cooklist | wc -l` to cook"/ \ + $DB_DIR/summary + sed -i s/"[0-9]* blocked"/"`cat $DB_DIR/blocked | wc -l` blocked"/ \ + $DB_DIR/summary + sed -i s/"[0-9]* corrupted"/"`cat $DB_DIR/corrupted | wc -l` corrupted"/ \ + $DB_DIR/summary +} + +list_packages() +{ + cd $PACKAGES_REPOSITORY + ls -1t *.tazpkg | head -20 | \ + while read file + do + echo -n $(stat -c '%y' $PACKAGES_REPOSITORY/$file | cut -d. -f1) + echo " $file" + done +} + +show_report() +{ + echo "Cooklist" + echo "================================================================================" + cat $DB_DIR/cooklist && echo "" + echo "Blocked" + echo "================================================================================" + cat $DB_DIR/blocked && echo "" + echo "Corrupted" + echo "" +} + +update_wok() +{ + echo "" + echo "(updating wok)" > $DB_DIR/running + cd $HG_WOK + LAST_REV=`hg head --template '{rev}\n'` + hg pull && hg update + NEW_REV=`hg head --template '{rev}\n'` + # Gen a new summary and link last revision for the web interface. + echo -e "\nHg wok : $HG_WOK ($NEW_REV)" + echo -e "Build wok : $BUILD_WOK ($LAST_REV)\n" + top_summary + # Copy Hg wok if new revision or exit to stop process since nothing + # have change (--forced can be used). + if [ "$NEW_REV" != "$LAST_REV" ]; then + size=`du -sh $HG_WOK | awk '{ print $1 }'` + echo -n "Copying Hg wok to the build wok ($size)... " + cp -a $HG_WOK/* $BUILD_WOK + cp -a $HG_WOK/.hg $BUILD_WOK + echo -e "Done\n" + else + if [ "$1" = "cook-all" ] || [ "$1" = "cook-commit" ]; then + if [ "$2" != "--forced" ]; then + echo -e "Nothing to cook...\n" + packages_summary + rm -f $LOCK_FILE && exit 0 + fi + fi + fi +} + +# Running 'tazbb report' should not cook anything and --verbose option +# can be used to display more messages. +check_wok() +{ + # Clean up last results. + rm -f $DB_DIR/cooklist && touch $DB_DIR/cooklist + rm -f $DB_DIR/report && touch $DB_DIR/report + rm -f $DB_DIR/unbuilt && touch $DB_DIR/unbuilt + echo "Checking all files in: $HG_WOK" + echo "================================================================================" + echo "(checking wok)" > $DB_DIR/running + for pkg in $HG_WOK/* + do + EXTRAVERSION="" + WANTED="" + . $pkg/receipt + [ "$2" = "--verbose" ] && echo "Package : $PACKAGE" + # Skip blocked packages. + if grep -qs "^$PACKAGE$" $DB_DIR/blocked; then + echo "Blocked : $PACKAGE ($VERSION)" && continue + fi + + # Bristuff hack until the receipt are improved... + #[ "$VERSION" = "bristuff" ] && VERSION=`get_version` + if [ "$VERSION" = "bristuff" ]; then + . $BUILD_WOK/$PACKAGE/taz/*/receipt + fi + + # First check if package exit. Package naming _must_ be in the form of: + # $PACKAGE-$VERSION or $PACKAGE-${VERSION}$EXTRAVERSION (Kernel string). + if [ ! -f $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg ]; then + [ -z "$EXTRAVERSION" ] && EXTRAVERSION="_$KERNEL" + if [ ! -f $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg ]; then + [ "$1" = "report" ] && echo "Missing : $PACKAGE ($VERSION)" + echo "Missing : $PACKAGE ($VERSION)" >> $DB_DIR/report + echo "$PACKAGE" >> $DB_DIR/cooklist + fi + else + # Check if package is up-to-date. + PKG_DATE=`date -u -r $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}${EXTRAVERSION}.tazpkg '+%m%d%H%M%Y'` + for file in `find $pkg -type f` + do + FILE_DATE=`date -u -r $file '+%m%d%H%M%Y'` + [ "$2" = "--verbose" ] && echo " -> Checking: $file" + if [ "$FILE_DATE" -gt "$PKG_DATE" ] && ! grep -q $PACKAGE $DB_DIR/cooklist; then + [ "$1" = "report" ] && echo "Refresh : $PACKAGE ($VERSION)" + echo "Refresh : $PACKAGE ($VERSION)" >> $DB_DIR/report + echo "$PACKAGE" >> $DB_DIR/cooklist + fi + done + fi + # Now check if package is built and not already in the list. + if [ ! -d $BUILD_WOK/$PACKAGE/taz ] && ! grep -q $PACKAGE $DB_DIR/cooklist; then + [ "$1" = "report" ] && echo "Unbuilt : $PACKAGE ($VERSION)" + echo "Unbuilt : $PACKAGE ($VERSION)" >> $DB_DIR/report + echo "$PACKAGE" >> $DB_DIR/cooklist + fi + # Rebuild unbuilt packages list with link to log file. This list + # is also generated by cook_inslall to have real time stats. + if [ ! -d $BUILD_WOK/$PACKAGE/taz ]; then + echo "$PACKAGE" \ + >> $DB_DIR/unbuilt + fi + done + packages_summary +} + +# Create a new cooklist and summary (dont modify report) so 'tazbb cook-commit' +# can cook last changes. +check_commit() +{ + echo "(checking commit)" > $DB_DIR/running + cd $HG_WOK + # Clean up last results. + rm -f $DB_DIR/cooklist && touch $DB_DIR/cooklist + # Get the name of modified packages by the revision range. +1 last + # commit was build by the previous build. + LAST_REV=$(($LAST_REV+1)) + echo -e "Will cook from revision $LAST_REV to $NEW_REV\n" + for file in `hg log --rev=$LAST_REV:$NEW_REV --template '{files}\n'` + do + pkg=`echo $file | cut -d "/" -f 1` + if ! grep -q ^$pkg$ $DB_DIR/cooklist; then + . $pkg/receipt + echo "Commit : $PACKAGE ($VERSION)" >> $DB_DIR/report + echo "$PACKAGE" >> $DB_DIR/cooklist + fi + done + packages_summary +} + +# Here we cook all packages found in the cooklist. +cook_install() +{ + echo "" > $DB_DIR/unbuilt + for pkg in `cat $DB_DIR/cooklist | sort` + do + EXTRAVERSION="" + DEPENDS="" + BUILD_DEPENDS="" + SOURCE="" + WANTED="" + echo "(cooking $pkg)" > $DB_DIR/running + tazwok clean $pkg + script -c "echo 'install' | tazwok cook $pkg" $LOG_DIR/$pkg.log + # Install new package (important for new shared libs). Note + # that tests are done separatly with 'test_packages' and should + # be done by tazwok. + if [ -f $BUILD_WOK/$pkg/taz/*/receipt ]; then + . $BUILD_WOK/$pkg/taz/*/receipt + echo "(installing $PACKAGE-${VERSION}$EXTRAVERSION.tazpkg)" \ + > $DB_DIR/running + yes | tazpkg install \ + $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg \ + --forced + else + # Link to build log. + echo "$pkg" >> \ + $DB_DIR/unbuilt + fi + # Remove package from the cooklist and empty lines for HTML
.
+		sed -i /"^$pkg$"/d $DB_DIR/cooklist
+		sed -i '/^$/d' $DB_DIR/cooklist
+	done
+}
+
+# Remove old packages in the build wok and clean pkgs repository. The
+# Hg wok is copied into the build wok so packages removed by hg must be
+# removed. To remove old packages in the repository we look into the
+# build wok and dont remove unbuilt packages. Clean-up will also remove
+# all corrupted packages.
+clean_up()
+{
+	touch $DB_DIR/removed
+	echo -e "\nCleaning the build wok, old and corrupted packages...\n"
+	echo "(cleaning)" > $DB_DIR/running
+	for pkg in `ls $HG_WOK`
+	do
+		if [ ! -d $BUILD_WOK/$pkg ]; then
+			case $2 in
+				--dry-run)
+					echo "Removing directory : $pkg" ;;
+				--verbose)
+					echo "Removing directory : $pkg"
+					rm -rf $BUILD_WOK/$pkg ;;
+				*)
+					rm -rf $BUILD_WOK/$pkg ;;
+			esac
+		fi
+	done
+	# Build a packages list with EXTRAVERSION so we can grep into it.
+	rm -f $DB_DIR/packaged && touch $DB_DIR/packaged
+	for receipt in $BUILD_WOK/*/taz/*/receipt
+	do
+		EXTRAVERSION=""
+		. $receipt
+		echo "$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg" >> $DB_DIR/packaged
+	done
+	for pkg in `cd $PACKAGES_REPOSITORY && ls *.tazpkg`
+	do
+		if ! grep -q "^$pkg$" $DB_DIR/packaged; then
+			case $2 in
+				--dry-run)
+					echo "Removing package : $pkg" ;;
+				--verbose)
+					echo "Removing package : $pkg"
+					echo "$pkg" >> $DB_DIR/removed
+					rm -f $PACKAGES_REPOSITORY/$pkg ;;
+				*)
+					echo "$pkg" >> $DB_DIR/removed
+					rm -f $PACKAGES_REPOSITORY/$pkg ;;
+			esac
+		fi
+	done
+	# Remove all corrupted packages
+	for pkg in `cat $DB_DIR/corrupted | awk '{ print $3 }'`
+	do
+		case $2 in
+			--dry-run)
+				echo "Removing corrupted: $pkg" ;;
+			--verbose)
+				echo "Removing corrupted: $pkg"
+				echo "$pkg" >> $DB_DIR/removed
+				rm -rf $PACKAGES_REPOSITORY/$pkg ;;
+			*)
+				echo "$pkg" >> $DB_DIR/removed
+				rm -rf $PACKAGES_REPOSITORY/$pkg ;;
+		esac
+	done
+	echo ""
+	# Keep the 20 last removed packages list.
+	cat $DB_DIR/removed | tail -n 20 > /tmp/removed.tail
+	mv -f /tmp/removed.tail $DB_DIR/removed
+}
+
+blocked_urls()
+{
+	rm -f $DB_DIR/blocked.urls
+	for pkg in `cat $DB_DIR/blocked`
+	do
+		if [ -f $LOG_DIR/$pkg.log ]; then
+			echo "$pkg" >> \
+				$DB_DIR/blocked.urls
+		else
+			echo "$pkg" >> $DB_DIR/blocked.urls
+		fi
+	done
+}
+
+# 4k, not a meta or a get-* package and no files = buggy package
+test_packages()
+{
+	echo -e "\nTesting all packages in: $PACKAGES_REPOSITORY"
+	echo "================================================================================"
+	echo "(testing packages)" > $DB_DIR/running
+	rm -f $DB_DIR/corrupted && touch $DB_DIR/corrupted
+	for pkg in $PACKAGES_REPOSITORY/*.tazpkg
+	do
+		tmp=/tmp/bb-test.$$
+		CATEGORY=""
+		if du $pkg | grep -qw '^4' && ! echo `basename $pkg` | grep -q '^get-'; then
+			mkdir -p $tmp && cd $tmp
+			cpio -i receipt 2>/dev/null < $pkg
+			. ./receipt
+			if [ "$CATEGORY" != "meta" ]; then
+				[ "$2" = "--verbose" ] && echo "Testing: $PACKAGE"
+				cpio -i fs.cpio.gz 2>/dev/null < $pkg
+				if [ ! -f fs.cpio.gz ]; then
+					echo "No fs : `basename $pkg`"
+					if [ -f $LOG_DIR/$PACKAGE.log ];then
+						echo "No fs : `basename $pkg` Log" \
+							>> $DB_DIR/corrupted
+					else
+						echo "No fs : `basename $pkg`" \
+							>> $DB_DIR/corrupted
+					fi
+				else
+					zcat fs.cpio.gz | cpio -id 2>/dev/null
+					files=`find fs -type f`
+					if [ -z "$files" ]; then
+						echo "Empty : `basename $pkg`"
+						if [ -f $LOG_DIR/$PACKAGE.log ]; then
+							echo "Empty : `basename $pkg` Log" \
+								>> $DB_DIR/corrupted
+						else
+							echo "No fs : `basename $pkg`" \
+							>> $DB_DIR/corrupted
+						fi
+					fi
+				fi
+			fi
+			cd .. && rm -rf $tmp
+		fi
+	done
+	packages_summary_update
+	echo ""
+}
+
+case "$1" in
+	list-pkgs)
+		# List last cooked packages.
+		list_packages ;;
+	report)
+		# Run in report mode. If an update is done we must cook-all to
+		# rebuild all updated packages.
+		[ "$2" == "--update" ] && update_wok $@ || echo ""
+		check_wok $@
+		test_packages $@
+		show_report ;;
+	cook-all)
+		# Update wok, gen report (with cooklist), cook all packages, test,
+		# clean, gen new report and lists.
+		update_wok $@
+		check_wok $@
+		cook_install
+		test_packages $@
+		clean_up $@
+		check_wok $@
+		echo "(generating lists)" > $DB_DIR/running
+		tazwok gen-list --text
+		echo "" ;;
+	cook-commit)
+		# Cook all packages affected by the last commits in the wok.
+		update_wok $@
+		check_commit
+		cook_install
+		test_packages $@
+		clean_up $@
+		check_wok $@
+		echo "(generating lists)" > $DB_DIR/running
+		tazwok gen-list --text
+		echo "" ;;
+	block)
+		# Add a pkg name to the list of blocked packages.
+		echo ""
+		if grep -qs "^$2$" $DB_DIR/blocked; then
+			echo -e "$2 is already in the blocked packages list."
+		else
+			echo -n "Adding $2 to     : $DB_DIR/blocked... "
+			echo "$2" >> $DB_DIR/blocked && echo "Done"
+			if grep -q "^$2$" $DB_DIR/cooklist; then
+				echo -n "Removing $2 from : $DB_DIR/cooklist... "
+				sed -i /"^$2$"/d $DB_DIR/cooklist && echo "Done"
+				packages_summary_update
+			fi
+		fi
+		blocked_urls
+		echo "" ;;
+	unblock)
+		# Remove a pkg name from the list of blocked packages.
+		echo ""
+		if grep -qs "^$2$" $DB_DIR/blocked; then
+			echo -n "Removing $2 from : $DB_DIR/blocked... "
+			sed -i /"^$2$"/d $DB_DIR/blocked
+			sed -i '/^$/d' $DB_DIR/blocked && echo "Done"
+			echo -n "Adding $2 to     : $DB_DIR/cooklist... "
+			echo "$2" >> $DB_DIR/cooklist && echo "Done"
+			packages_summary_update
+		else
+			echo -e "$2 is not in the blocked packages list."
+		fi
+		blocked_urls
+		echo "" ;;
+	test-pkgs)
+		# Start a test suite on all builded packages.
+		test_packages $@ ;;
+	test-suite)
+		# Start a test suite on all builded package and the wok using
+		# the great 'tazwok check'.
+		#
+		# test_packages > $LOG_DIR/test-suite.log
+		# tazwok check >> $LOG_DIR/test-suite.log
+		#
+		test_packages $@
+		script -c "tazwok check" $LOG_DIR/test-suite.log ;;
+	clean-up)
+		# Remove old packages and generate new packages lists.
+		update_wok $@
+		clean_up $@
+		packages_summary_update
+		[ "$2" != "--dry-run" ] && tazwok gen-list --text ;;
+	clean-log)
+		logs=`ls $LOG_DIR | wc -l`
+		echo -n "Cleaning: $LOG_DIR... "
+		rm -rf $LOG_DIR/*
+		echo "$logs log removed" ;;
+	*)
+		usage ;;
+esac
+
+echo "" > $DB_DIR/running
+rm -f $LOCK_FILE
+
+exit 0
diff -r fa109a7618aa -r 60003751479d tazbb/stuff/tazbb.conf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tazbb/stuff/tazbb.conf	Sat Jun 20 04:41:53 2009 +0200
@@ -0,0 +1,19 @@
+# tazbb.conf - SliTaz Build Bot configuration file.
+#
+
+# Wok's and packages path.
+HG_WOK="/home/slitaz/undigest/bb/hg/wok"
+BUILD_WOK="/home/slitaz/undigest/bb/wok"
+PACKAGES_REPOSITORY="/home/slitaz/undigest/bb/packages"
+
+# Log files, database and lock file.
+LOG_DIR="/home/slitaz/undigest/bb/log"
+DB_DIR="/var/lib/tazbb"
+LOCK_FILE="/var/lock/tazbb.lock"
+
+# Path to Hg repo and the web interface.
+HG_URL="http://hg.slitaz.org/wok"
+WEB_INTERFACE="/home/slitaz/www/bb"
+
+# Kernel for EXTRAVERSION.
+KERNEL="2.6.29.3"
diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/conf.php
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tazbb/stuff/web/conf.php	Sat Jun 20 04:41:53 2009 +0200
@@ -0,0 +1,12 @@
+
diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/favicon.ico
Binary file tazbb/stuff/web/favicon.ico has changed
diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/index.php
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tazbb/stuff/web/index.php	Sat Jun 20 04:41:53 2009 +0200
@@ -0,0 +1,159 @@
+
+
+
+
+    SliTaz Build Bot
+    
+    
+    
+    
+    
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ +

Build Bot

+

/usr/bin/tazbb

+ +

+Tazbb is SliTaz GNU/Linux Build Bot, +it automaticaly cook and test packages commited in the wok. SliTaz +packages are cooked on the project +main server: code name Tank. This +web interface give the current status of the build bot and the last report +about all packages modified by SliTaz contributors in the Mercurial +repository, aka Hg repos. +

+ +

+

+ Show cooklog: + +
+

+ +

Summary

+
+
+
+ +

Report

+
+
+
+ +

Cooklist

+
+
+
+ +

Unbuilt

+
+
+
+ +

Blocked

+
+
+
+ +

Corrupted

+
+
+
+ +

Last cooked packages

+
+
+
+ +

Last removed packages

+
+
+
+ + +
+
+
+
+
+ + +
+

+Copyright © 2009 SliTaz - +GNU General Public License +

+ +
+ + +
+

+Valid XHTML 1.0 +

+
+ + + diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/log.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazbb/stuff/web/log.php Sat Jun 20 04:41:53 2009 +0200 @@ -0,0 +1,101 @@ + + + + + Tazbb cooklog <?php echo $_GET['package']; ?> + + + + + + + + + + + + +
+
+
+
+ + +
+ +

Build Bot

+

Cooklog

+ +

+

+ Show cooklog: + +Raw log ' . "\n"; + echo '

'; + echo '
' . "\n";
+		include("$log_dir/$pkg.log");
+		echo '
'; + } + else { + echo " No log file found for: $pkg"; + echo '

'; + } +} +else { + echo '

'; +} + +?> + + +
+
+
+
+
+ + +
+

+Copyright © 2009 SliTaz - +GNU General Public License +

+ +
+ + +
+

+Valid XHTML 1.0 +

+
+ + + diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/pics/website/content-bl.png Binary file tazbb/stuff/web/pics/website/content-bl.png has changed diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/pics/website/content-br.png Binary file tazbb/stuff/web/pics/website/content-br.png has changed diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/pics/website/content-tl.png Binary file tazbb/stuff/web/pics/website/content-tl.png has changed diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/pics/website/content-tr.png Binary file tazbb/stuff/web/pics/website/content-tr.png has changed diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/pics/website/header.png Binary file tazbb/stuff/web/pics/website/header.png has changed diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/pics/website/logo.png Binary file tazbb/stuff/web/pics/website/logo.png has changed diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/pics/website/xhtml10.png Binary file tazbb/stuff/web/pics/website/xhtml10.png has changed diff -r fa109a7618aa -r 60003751479d tazbb/stuff/web/slitaz.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazbb/stuff/web/slitaz.css Sat Jun 20 04:41:53 2009 +0200 @@ -0,0 +1,340 @@ +/* + CSS style for SliTaz GNU/Linux website + www.slitaz.org - (c) 2007 Pankso +*/ + +body { + background: #222222; + color: black; + font: 13px sans-serif, vernada, arial; + margin: 0; + padding-bottom: 100%; +} + +/* Accessibility */ + +#access { + position: absolute; + top: 1px; + right: 6px; + text-align: right; + width: 100%; + margin: 0; + font-size: 12px; + font-weight: bold; +} + +#access a { + background: inherit; + color: white; + text-decoration: none; + padding-left: 2px; +} + +#access a:hover { + background: inherit; + color: #222222; +} + +/* Header and title */ + +#header { + background: #f0ba08 url(pics/website/header.png) repeat-x top; + color: black; + width: 100%; + height: 50px ; + border-top: 1px solid black; + border-bottom: 1px solid black; + margin-bottom: 30px; +} + +#header form { + position: absolute; + top: 22px; + right: 6px; + background: transparent; + +} + +#header input { + border: 1px solid #eeeeee; +} + +#titre { + font-size: 16px; + font-weight: bolder ; + margin-left: 232px; + margin-top: 4px; + padding-top: 25px ; +} + +#logo { + position: absolute; + float: left; + margin-left: 32px; + margin-right: 20px; + margin-top: 0px; +} + +/* Navigation */ + +#nav { + position: absolute; + top: 100px; + right: 6px; + background: #eaeaea url(pics/website/nav-tr.png) no-repeat top right; + color: black; + float: right; + width: 152px; + line-height: 1.3em; + text-align: left; + font-size: 12px; + font-weight: bold; +} + +#nav_top { + background: transparent url(pics/website/nav-tl.png) no-repeat top left; + height: 12px; +} + +#nav_bottom { + background: transparent url(pics/website/nav-bl.png) no-repeat bottom left; + height: 12px; +} + +#nav_bottom_img { + background: transparent url(pics/website/nav-br.png) no-repeat bottom right; + height: 12px; +} + +#nav ul{ + list-style-type: none; + margin: 0px 0px 0px 6px; + padding: 3px 2px 3px 2px; +} + +#nav li { + display: inline; +} + +#nav a { + color: #3E1220; + background: inherit; + display: block; + padding: 0.5px; + text-decoration: none; +} + +#nav a:hover { + color: #DF8F06; + text-decoration: none; + display: block; +} + +#nav hr { + margin: 2px 0px 1px 0px; + border: 0px; + border-top: 1px solid #BDBDBD; + +} +/* Page content */ + +#content, #content_bottom, #content_top { + background: white; + color: black; + text-align: justify; +} + +#content_top { + height: 14px; + margin: 0px 100px 0px 100px; +} + +#content { + height: auto; + margin: -6px 100px 0px 100px; + padding: 0px 72px 72px 72px; + /*background: white; + color: #333333;*/ +} + +#content_bottom { + height: 14px; + margin: 0px 100px 0px 100px; + /*clear: both;*/ +} + +#content li { + line-height: 1.5em; + text-align: left; +} + +/* Legal informations */ + +#copy { + font-size: 11px ; + text-align: center ; + background: transparent; + color: #a8a8a8; + padding-top: 10px; +} + +#copy a { + background: inherit; + color: #a8a8a8; +} + +#copy a:hover { + background: inherit; + color: #EDEDED; +} + +/* Footer */ + +#bottom { + float: none; + background: inherit; + color: black; + width: auto; + clear: both; + padding: 0; + margin: 0; + text-align: center; + vertical-align: middle; +} + +/* CSS class. */ + +.top_left, .top_right, .bottom_left, .bottom_right { + height: 14px; + width: 14px; + color: white; + background-color: #333333; + background-repeat: no-repeat; +} + +.top_left { + background-image: url(pics/website/content-tl.png); + background-position: left top; + position: absolute; +} + +.top_right { + background-image: url(pics/website/content-tr.png); + float: right; +} + +.bottom_left { + background-image: url(pics/website/content-bl.png); + position: absolute; +} + +.bottom_right { + background-image: url(pics/website/content-br.png); + float: right; +} + +/* HTML styles */ + +h1 { + color: #3E1220; + background: inherit; + text-align: left; + margin: 0px 0px 16px -58px; +} + +h2 { + color: #DF8F06; + border-left: 10px solid #F3F3F3; + padding: 4px 0px 4px 4px; + margin: 0; +} + +h3 { + font-weight: bold; + color: #6c0023; + background: inherit; +} + +a { + text-decoration: underline; + color: #0F314E; + background: inherit; +} + +a:hover { + text-decoration: none; + color: blue; + background: inherit; +} + +code { + font-size: 12px; + color: #669900; + background: inherit; +} + +tt { + color: #15EE15; + background: inherit; +} + +img { + border: 0pt none; +} + +fieldset { + background: #eeeeee; + color: black; + margin-top: 25px; + border: 1px solid black; +} + +legend { + border: 1px solid black; + color: #6c0023; + background: #eaeaea; + font-weight: bold; +} + +pre { + padding: 5px; + color: black; + background: #E1E0B0; +} + +pre.script { + padding: 10px; + color: black; + background: #E8E8E8; + border: 1px inset #606060; +} + +/* Packages pages */ + +.pkg_nav { + border-top: 1px solid black; + margin-top: 10px; + padding-top: 10px; +} + +pre.package { + padding: 0px; + color: black; + background: white; +} + +p.get { + text-align: center; + padding: 10px; + color: black; + background: #F3F3F3; + border: 1px solid #DEDEDE; +} + +pre.log { + padding: 10px; + color: black; + background: #eeeeee; + border: 1px solid black; +}