wok rev 9858

removed old tazbb (will keep a copy in slitaz-dev-tools
author Christophe Lincoln <pankso@slitaz.org>
date Mon May 16 15:38:06 2011 +0200 (2011-05-16)
parents 6c5c55855491
children 94543eb9b7dc
files tazbb/description.txt tazbb/receipt tazbb/stuff/README tazbb/stuff/tazbb tazbb/stuff/tazbb.conf tazbb/stuff/tazbbmail tazbb/stuff/web/conf.php tazbb/stuff/web/favicon.ico tazbb/stuff/web/index.php tazbb/stuff/web/log.php tazbb/stuff/web/pics/website/development.png tazbb/stuff/web/pics/website/header-img.png tazbb/stuff/web/pics/website/logo.png tazbb/stuff/web/pics/website/xhtml10.png tazbb/stuff/web/slitaz.css
line diff
     1.1 --- a/tazbb/description.txt	Mon May 16 15:34:53 2011 +0200
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,10 +0,0 @@
     1.4 -
     1.5 -SliTaz Build Bot. Tazbb is a tool to automate and test SliTaz package 
     1.6 -building. Please read the Cookbook documentation for more information 
     1.7 -and put your ideas on the Tazbb Wiki page on the Labs. The package 
     1.8 -provides the tazbb script, a config file and a web interface.
     1.9 -
    1.10 -Tank Build Bot : http://bb.slitaz.org/
    1.11 -Tazbb Wiki     : http://labs.slitaz.org/wiki/distro/Tazbb
    1.12 -Cookbook page  : http://doc.slitaz.org/en:cookbook:buildbot
    1.13 -
     2.1 --- a/tazbb/receipt	Mon May 16 15:34:53 2011 +0200
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,56 +0,0 @@
     2.4 -# SliTaz package receipt.
     2.5 -
     2.6 -PACKAGE="tazbb"
     2.7 -VERSION="2.0"
     2.8 -CATEGORY="development"
     2.9 -SHORT_DESC="SliTaz Build Bot."
    2.10 -MAINTAINER="pankso@slitaz.org"
    2.11 -DEPENDS="tazpkg tazwok python mercurial"
    2.12 -SUGGESTED="slitaz-toolchain postfix"
    2.13 -WEB_SITE="http://labs.slitaz.org/wiki/distro/Bb"
    2.14 -TAGS="slitaz"
    2.15 -
    2.16 -# Rules to gen a SliTaz package suitable for Tazpkg.
    2.17 -genpkg_rules()
    2.18 -{
    2.19 -	mkdir -p \
    2.20 -		$fs/usr/bin \
    2.21 -		$fs/etc/slitaz \
    2.22 -		$fs/var/lib/tazbb \
    2.23 -		$fs/var/log/tazbb
    2.24 -	cp stuff/tazbb $fs/usr/bin
    2.25 -	cp stuff/tazbbmail $fs/usr/bin
    2.26 -	cp stuff/tazbb.conf $fs/etc/slitaz
    2.27 -	cp -a stuff/web $fs/var/lib/tazbb
    2.28 -	chmod 755 $fs/usr/bin/*
    2.29 -	chown -R root.root $fs
    2.30 -}
    2.31 -
    2.32 -post_install()
    2.33 -{
    2.34 -	# On Tank we have bb.slitaz.org virtual host in: /home/slitaz/www
    2.35 -	if [ -d $1/home/slitaz/www/bb ]; then
    2.36 -		cp -a $1/var/lib/tazbb/web/* $1/home/slitaz/www/bb
    2.37 -		chown www.www $1/home/slitaz/www/bb
    2.38 -	else
    2.39 -		mkdir -p $1/var/www/vhosts
    2.40 -		ln -s $1/var/lib/tazbb/web $1/var/www/vhosts/bb
    2.41 -		cat << _EOT_
    2.42 -
    2.43 -To have a Tazbb web interface on your local system, you can add a vhost
    2.44 -to Lighttpd (or Apache) and the hostname to /etc/hosts. Example for Lighty:
    2.45 -
    2.46 -$HTTP["host"] =~ "bb" {
    2.47 -  server.document-root = "/var/www/vhost/bb"
    2.48 -}
    2.49 -
    2.50 -Or run: browser http://localhost/vhosts/bb
    2.51 -
    2.52 -_EOT_
    2.53 -	fi
    2.54 -}
    2.55 -
    2.56 -post_remove()
    2.57 -{
    2.58 -	rm -rf /var/www/vhost/bb
    2.59 -}
     3.1 --- a/tazbb/stuff/README	Mon May 16 15:34:53 2011 +0200
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,15 +0,0 @@
     3.4 -Tazbb Build Bot
     3.5 -===============================================================================
     3.6 -
     3.7 -
     3.8 -Check the description.txt for a brief overview of Tazbb, read the Cookbook docs
     3.9 -and collaborate on the Labs.
    3.10 -
    3.11 -
    3.12 -Tank Build Bot : http://bb.slitaz.org/
    3.13 -Tazbb Wiki     : http://labs.slitaz.org/wiki/distro/Tazbb
    3.14 -Cookbook page  : http://www.slitaz.org/en/doc/cookbook/build-bot.html
    3.15 -
    3.16 -
    3.17 -===============================================================================
    3.18 -
     4.1 --- a/tazbb/stuff/tazbb	Mon May 16 15:34:53 2011 +0200
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,1104 +0,0 @@
     4.4 -#!/bin/sh
     4.5 -# Tazbb - SliTaz Build Bot.
     4.6 -# System wide config file: /etc/slitaz/tazbb.conf
     4.7 -#
     4.8 -# Tazbb is a tool to automate package building, it can be run manually
     4.9 -# or via a cron job. On SliTaz build host, tazbb is run in a chroot env.
    4.10 -#
    4.11 -# (c) 2009 SliTaz GNU/Linux project - GNU gpl v3
    4.12 -#
    4.13 -
    4.14 -# Include config file or exit if no file found.
    4.15 -if [ -f "./tazbb.conf" ]; then
    4.16 -	. ./tazbb.conf
    4.17 -elif [ -f "/etc/slitaz/tazbb.conf" ]; then
    4.18 -	. /etc/slitaz/tazbb.conf
    4.19 -else
    4.20 -	echo -e "\nNo config file found: tazbb.conf...\n" && exit 0
    4.21 -fi
    4.22 -LOG_SUFFIX=""
    4.23 -case "$HG_WOK" in
    4.24 -*stable) LOG_SUFFIX="&stable=1";;
    4.25 -esac
    4.26 -
    4.27 -# Tazbb is only for root.
    4.28 -if test $(id -u) != 0 ; then
    4.29 -   echo -e "\nYou must be root to run: `basename $0`.\n" && exit 0
    4.30 -fi
    4.31 -
    4.32 -# Let tazbb finish is work and make sure needed files exist.
    4.33 -if [ -f $LOCK_FILE ]; then
    4.34 -	case $1 in
    4.35 -		usage|list-*|*block|check-receipt)
    4.36 -			continue ;;
    4.37 -		*)
    4.38 -			echo -e "\nTazbb is already running and locked...\n"
    4.39 -			exit 0 ;;
    4.40 -	esac
    4.41 -else
    4.42 -	mkdir -p $DB_DIR $LOG_DIR
    4.43 -	touch $LOCK_FILE $DB_DIR/blocked
    4.44 -fi
    4.45 -
    4.46 -# Set KERNEL variable
    4.47 -if [ -s $BUILD_WOK/linux/receipt ]; then
    4.48 -	. $BUILD_WOK/linux/receipt
    4.49 -	KERNEL=$VERSION
    4.50 -fi
    4.51 -
    4.52 -# Get revision
    4.53 -cd $HG_WOK
    4.54 -NEW_REV=`hg head --template '{rev}\n'`
    4.55 -cd - > /dev/null
    4.56 -
    4.57 -usage()
    4.58 -{
    4.59 -	echo -e "\nSliTaz developers and build host tool\n
    4.60 -\033[1mUsage: \033[0m `basename $0` [command] [--option]
    4.61 -\033[1mCommands: \033[0m\n
    4.62 -  usage           Print this short usage and command list.
    4.63 -  list-pkgs       List last cooked packages with date.
    4.64 -  report          Run in report mode and dont cook anything [--verbose].
    4.65 -  cook            Cook, install and log a single package build.
    4.66 -  cook-all        Cook all missing, modified or unbuilt packages.
    4.67 -  cook-commit     Cook all packages affected by a commit in the last update.
    4.68 -  test-pkgs       Execute a test suite on all packages [--verbose].
    4.69 -  [un]block       Block or unblock a package to skip or enable building.
    4.70 -  mail            Send mail to package maintainer with tazbbmail.
    4.71 -  check-depends   Verify DEPENDS value with library needs [--verbose].
    4.72 -  clean-up        Remove old packages [--verbose|--dry-run].
    4.73 -  clean-log       Remove all generated build log files.\n"
    4.74 -}
    4.75 -
    4.76 -status()
    4.77 -{
    4.78 -	local CHECK=$?
    4.79 -	echo -en "\033[70G"
    4.80 -	if [ $CHECK = 0 ]; then
    4.81 -		echo "Done"
    4.82 -	else
    4.83 -		echo "Failed"
    4.84 -	fi
    4.85 -	return $CHECK
    4.86 -}
    4.87 -
    4.88 -top_summary()
    4.89 -{
    4.90 -	cat > $DB_DIR/summary << _EOT_
    4.91 -Update   : `date`
    4.92 -Revision : $NEW_REV (<a href="$HG_URL/log/$NEW_REV">changelog</a>)
    4.93 -_EOT_
    4.94 -}
    4.95 -
    4.96 -packages_summary()
    4.97 -{
    4.98 -	if ! grep -q "^Packages" $DB_DIR/summary; then
    4.99 -		cat >> $DB_DIR/summary << _EOT_
   4.100 -Packages : `ls $BUILD_WOK | wc -l` in the wok, `cat $DB_DIR/cooklist | wc -l` to cook, \
   4.101 -`cat $DB_DIR/genpkglist | wc -l` to repack, `cat $DB_DIR/blocked | wc -l` blocked, \
   4.102 -`cat $DB_DIR/corrupted | wc -l` corrupted
   4.103 -_EOT_
   4.104 -	fi
   4.105 -}
   4.106 -
   4.107 -VERBOSE=""
   4.108 -
   4.109 -packages_summary_update()
   4.110 -{
   4.111 -	sed -i s/"[0-9]* in the wok"/"`ls $BUILD_WOK | wc -l` in the wok"/ \
   4.112 -		$DB_DIR/summary
   4.113 -	sed -i s/"[0-9]* to cook"/"`cat $DB_DIR/cooklist | wc -l` to cook"/ \
   4.114 -		$DB_DIR/summary
   4.115 -	sed -i s/"[0-9]* to repack"/"`cat $DB_DIR/genpkglist | wc -l` to repack"/ \
   4.116 -		$DB_DIR/summary
   4.117 -	sed -i s/"[0-9]* blocked"/"`cat $DB_DIR/blocked | wc -l` blocked"/ \
   4.118 -		$DB_DIR/summary
   4.119 -	sed -i s/"[0-9]* corrupted"/"`cat $DB_DIR/corrupted | wc -l` corrupted"/ \
   4.120 -		$DB_DIR/summary
   4.121 -}
   4.122 -
   4.123 -list_packages()
   4.124 -{
   4.125 -	cd $PACKAGES_REPOSITORY
   4.126 -	ls -1t *.tazpkg | head -20 | \
   4.127 -	while read file
   4.128 -	do
   4.129 -		echo -n $(stat -c '%y' $PACKAGES_REPOSITORY/$file | cut -d. -f1)
   4.130 -		echo "   $file"
   4.131 -	done
   4.132 -}
   4.133 -
   4.134 -show_report()
   4.135 -{
   4.136 -	echo "Cooklist"
   4.137 -	echo "================================================================================"
   4.138 -	cat $DB_DIR/cooklist && echo ""
   4.139 -	echo "Genpkglist"
   4.140 -	echo "================================================================================"
   4.141 -	cat $DB_DIR/genpkglist && echo ""
   4.142 -	echo "Packlist"
   4.143 -	echo "================================================================================"
   4.144 -	cat $DB_DIR/packlist && echo ""
   4.145 -	echo "Blocked"
   4.146 -	echo "================================================================================"
   4.147 -	cat $DB_DIR/blocked && echo ""
   4.148 -	echo ""
   4.149 -}
   4.150 -
   4.151 -# URL encoding
   4.152 -escape()
   4.153 -{
   4.154 -	echo $1 | sed -e 's/+/%2B/g' -e 's|/|%2F|g' -e 's/:/%3A/g'
   4.155 -}
   4.156 -
   4.157 -update_wok()
   4.158 -{
   4.159 -	local forced
   4.160 -	forced=""
   4.161 -	echo ""
   4.162 -	echo "(updating flavors)" > $DB_DIR/running
   4.163 -	cd $HG_FLAVORS
   4.164 -	LAST_REV=`hg head --template '{rev}\n'`
   4.165 -	hg pull && hg update
   4.166 -	NEW_REV=`hg head --template '{rev}\n'`
   4.167 -	if [ "$NEW_REV" != "$LAST_REV" ]; then
   4.168 -		size=`du -sh $HG_FLAVORS | awk '{ print $1 }'`
   4.169 -		echo -n "Copying Hg flavors to the build flavors ($size)... "
   4.170 -		cp -a $HG_FLAVORS/* $BUILD_FLAVORS
   4.171 -		cp -a $HG_FLAVORS/.hg $BUILD_FLAVORS
   4.172 -		echo -e "Done\n"
   4.173 -		forced="yes"
   4.174 -	fi
   4.175 -	echo "(updating wok)" > $DB_DIR/running
   4.176 -	cd $HG_WOK
   4.177 -	LAST_REV=`hg head --template '{rev}\n'`
   4.178 -	hg pull && hg update
   4.179 -	NEW_REV=`hg head --template '{rev}\n'`
   4.180 -	# Gen a new summary and link last revision for the web interface.
   4.181 -	echo -e "\nHg wok    : $HG_WOK ($NEW_REV)"
   4.182 -	echo -e "Build wok : $BUILD_WOK ($LAST_REV)\n"
   4.183 -	top_summary
   4.184 -	# Copy Hg wok if new revision or exit to stop process since nothing
   4.185 -	# have change (--forced can be used).
   4.186 -	if [ "$NEW_REV" != "$LAST_REV" ]; then
   4.187 -		size=`du -sh $HG_WOK | awk '{ print $1 }'`
   4.188 -		echo -n "Copying Hg wok to the build wok ($size)... "
   4.189 -		#rsync -r -n -t $HG_WOK/ $BUILD_WOK/
   4.190 -		cp -a $HG_WOK/* $BUILD_WOK
   4.191 -		cp -a $HG_WOK/.hg $BUILD_WOK
   4.192 -		echo -e "Done\n"
   4.193 -	else
   4.194 -		if [ "$1" = "cook-all" ] || [ "$1" = "cook-commit" ]; then
   4.195 -			if [ "$2" != "--forced" -a -z "$forced" ]; then
   4.196 -				echo -e "Nothing to cook...\n"
   4.197 -				packages_summary
   4.198 -				rm -f $LOCK_FILE && exit 0
   4.199 -			fi
   4.200 -		fi
   4.201 -	fi
   4.202 -}
   4.203 -
   4.204 -# Running 'tazbb report' should not pack anything and --verbose option
   4.205 -# can be used to display more messages.
   4.206 -check_flavors()
   4.207 -{
   4.208 -	# Clean up last results.
   4.209 -	rm -f $DB_DIR/packlist && touch $DB_DIR/packlist
   4.210 -	echo ""
   4.211 -	echo "Checking all files in: $HG_FLAVORS"
   4.212 -	echo "================================================================================"
   4.213 -	echo "(checking flavors)" > $DB_DIR/running
   4.214 -	for flavor in $(cd $HG_FLAVORS ; ls)
   4.215 -	do
   4.216 -		[ "$2" = "--verbose" ] && echo "Flavor : $flavor"
   4.217 -		if [ ! -s $PACKAGES_REPOSITORY/$flavor.flavor ]; then
   4.218 -			echo $flavor >> $DB_DIR/packlist
   4.219 -			[ "$1" = "report" ] && echo "Missing : $flavor"
   4.220 -			echo "Missing flavor : $flavor" >> $DB_DIR/report
   4.221 -			continue
   4.222 -		fi
   4.223 -		for i in $(find $HG_FLAVORS/$flavor -type f); do
   4.224 -			[ $PACKAGES_REPOSITORY/$flavor.flavor -nt \
   4.225 -			  $i ] && continue
   4.226 -			echo $flavor >> $DB_DIR/packlist
   4.227 -			[ "$1" = "report" ] && echo "Refresh : $flavor for $i"
   4.228 -			echo "Refresh flavor : $flavor" >> $DB_DIR/report
   4.229 -			continue 2
   4.230 -		done
   4.231 -		[ -s $HG_FLAVORS/$flavor/packages.list ] &&
   4.232 -		for i in $(cat $HG_FLAVORS/$flavor/packages.list); do
   4.233 -			if [ ! -d $BUILD_WOK/$i ]; then
   4.234 -				[ "$1" = "report" ] && 
   4.235 -				echo "Fix flavor for $i: $flavor"
   4.236 -				echo "Fix flavor for $i: $flavor" >> $DB_DIR/report
   4.237 -				continue
   4.238 -			fi
   4.239 -			[ $PACKAGES_REPOSITORY/$flavor.flavor -nt \
   4.240 -			  $BUILD_WOK/$i/taz ] && continue
   4.241 -			echo $flavor >> $DB_DIR/packlist
   4.242 -			[ "$1" = "report" ] && echo "Repack : $flavor for $i"
   4.243 -			echo "Repack flavor : $flavor" >> $DB_DIR/report
   4.244 -			continue 2
   4.245 -		done
   4.246 -	done
   4.247 -
   4.248 -	# Check for meta flavors
   4.249 -	for flavor in $(cd $HG_FLAVORS ; ls)
   4.250 -	do
   4.251 -		grep -q ^ROOTFS_SELECTION $HG_FLAVORS/$flavor/receipt || continue
   4.252 -		. $HG_FLAVORS/$flavor/receipt
   4.253 -		set -- $ROOTFS_SELECTION
   4.254 -		if [ $PACKAGES_REPOSITORY/$2.flavor -nt \
   4.255 -		     $PACKAGES_REPOSITORY/$flavor.flavor ]; then
   4.256 -			echo $flavor >> $DB_DIR/packlist
   4.257 -			[ "$1" = "report" ] && echo "Refresh : $flavor for $2"
   4.258 -			echo "Refresh meta flavor : $flavor" >> $DB_DIR/report
   4.259 -			continue
   4.260 -		fi
   4.261 -		if grep -q ^$2$ $DB_DIR/packlist ; then
   4.262 -			echo $flavor >> $DB_DIR/packlist
   4.263 -			[ "$1" = "report" ] && echo "Repack : $flavor for $2"
   4.264 -			echo "Repack meta flavor : $flavor" >> $DB_DIR/report
   4.265 -			continue
   4.266 -		fi
   4.267 -	done
   4.268 -}
   4.269 -
   4.270 -# Here we pack all flavors found in the packlist.
   4.271 -pack_flavors()
   4.272 -{
   4.273 -	[ -s $DB_DIR/packlist ] || return
   4.274 -	[ $PACKAGES_REPOSITORY/packages.list -nt /var/lib/tazpkg/packages.list ] &&
   4.275 -	cp -a $PACKAGES_REPOSITORY/packages.list /var/lib/tazpkg/packages.list
   4.276 -	cd $PACKAGES_REPOSITORY
   4.277 -	for flavor in $(cat $DB_DIR/packlist)
   4.278 -	do
   4.279 -		tazlito pack-flavor $flavor
   4.280 -		# Remove flavor from the packlist and empty lines for HTML <pre>.
   4.281 -		sed -i /"^$flavor$"/d $DB_DIR/packlist
   4.282 -		sed -i '/^$/d' $DB_DIR/packlist
   4.283 -	done
   4.284 -	cd - > /dev/null
   4.285 -}
   4.286 -
   4.287 -# Running 'tazbb report' should not cook anything and --verbose option
   4.288 -# can be used to display more messages.
   4.289 -check_wok()
   4.290 -{
   4.291 -	# Clean up last results.
   4.292 -	rm -f $DB_DIR/cooklist && touch $DB_DIR/cooklist
   4.293 -	rm -f $DB_DIR/genpkglist && touch $DB_DIR/genpkglist
   4.294 -	rm -f $DB_DIR/report && touch $DB_DIR/report
   4.295 -	rm -f $DB_DIR/unbuilt && touch $DB_DIR/unbuilt
   4.296 -	echo "Checking all files in: $HG_WOK"
   4.297 -	echo "================================================================================"
   4.298 -	echo "(checking wok)" > $DB_DIR/running
   4.299 -	TOOLCHAIN="$(. $HG_WOK/slitaz-toolchain/receipt ; echo $DEPENDS)"
   4.300 -	TOOLCHAIN="$TOOLCHAIN glibc linux" # break cook loop
   4.301 -	for pkg in $HG_WOK/*
   4.302 -	do
   4.303 -		EXTRAVERSION=""
   4.304 -		WANTED=""
   4.305 -		BUILD_DEPENDS=""
   4.306 -		[ -s $pkg/receipt ] || continue
   4.307 -		. $pkg/receipt
   4.308 -		[ "$2" = "--verbose" ] && echo "Package : $PACKAGE"
   4.309 -		# Skip blocked packages.
   4.310 -		if grep -qs "^$PACKAGE$" $DB_DIR/blocked; then
   4.311 -			echo "Blocked : $PACKAGE ($VERSION)" && continue
   4.312 -		fi
   4.313 -
   4.314 -		# Some packages may compute VERSION at cook time (bristuff)
   4.315 -		if grep -q ^get_version $pkg/receipt; then
   4.316 -			. $BUILD_WOK/$PACKAGE/taz/*/receipt
   4.317 -		fi
   4.318 -
   4.319 -		# First check if package exit. Package naming _must_ be in the form of:
   4.320 -		# $PACKAGE-$VERSION or $PACKAGE-${VERSION}$EXTRAVERSION (Kernel string).
   4.321 -		if [ ! -f $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg ]; then
   4.322 -			[ -z "$EXTRAVERSION" ] && EXTRAVERSION="_$KERNEL"
   4.323 -			if [ ! -f $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg ]; then
   4.324 -				[ "$1" = "report" ] && echo "Missing : $PACKAGE ($VERSION)"
   4.325 -				echo "Missing : $PACKAGE ($VERSION)" >> $DB_DIR/report
   4.326 -				echo "$PACKAGE" >> $DB_DIR/cooklist
   4.327 -			fi
   4.328 -		else
   4.329 -			# Check if package is up-to-date.
   4.330 -			PKG_YEAR=`date -u -r $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}${EXTRAVERSION}.tazpkg '+%Y'`
   4.331 -			PKG_DATE=`date -u -r $PACKAGES_REPOSITORY/$PACKAGE-${VERSION}${EXTRAVERSION}.tazpkg '+%m%d%H%M'`
   4.332 -			for file in `find $pkg -type f`
   4.333 -			do
   4.334 -				FILE_YEAR=`date -u -r $file '+%Y'`
   4.335 -				FILE_DATE=`date -u -r $file '+%m%d%H%M'`
   4.336 -				[ "$2" = "--verbose" ] && echo " -> Checking: $file"
   4.337 -				if [ "$FILE_YEAR" -ge "$PKG_YEAR" -a "$FILE_DATE" -gt "$PKG_DATE" ] && ! grep -q $PACKAGE $DB_DIR/cooklist && ! grep -q $PACKAGE $DB_DIR/genpkglist; then
   4.338 -					[ "$1" = "report" ] && echo "Refresh : $PACKAGE ($VERSION)"
   4.339 -					echo "Refresh : $PACKAGE ($VERSION)" >> $DB_DIR/report
   4.340 -					echo "$PACKAGE" >> $DB_DIR/cooklist
   4.341 -				fi
   4.342 -			done
   4.343 -		fi
   4.344 -		
   4.345 -		# Desactivate this feature because it create infinite cooking loops.
   4.346 -		#if ! grep -q $PACKAGE $DB_DIR/cooklist; then
   4.347 -		#	case " $TOOLCHAIN " in
   4.348 -		#	*\ $PACKAGE\ *) continue;;
   4.349 -		#	esac
   4.350 -		#	case "$PACKAGE" in
   4.351 -		#	tazbb|tazwok|tazpkg) continue;;
   4.352 -		#	esac
   4.353 -		#	for dep in $BUILD_DEPENDS $TOOLCHAIN ; do
   4.354 -		#		[ $BUILD_WOK/$PACKAGE/taz -nt $BUILD_WOK/$dep/taz ] && continue
   4.355 -		#		[ "$1" = "report" ] && echo "Refresh : $PACKAGE (older than $dep)"
   4.356 -		#		echo "Refresh : $PACKAGE (older than $dep)" >> $DB_DIR/report
   4.357 -		#		echo "$PACKAGE" >> $DB_DIR/cooklist
   4.358 -		#		break
   4.359 -		#	done
   4.360 -		#fi
   4.361 -		# Rebuild unbuilt packages list with link to log file. This list
   4.362 -		# is also generated by cook_inslall to have real time stats.
   4.363 -		if [ ! -d $BUILD_WOK/$PACKAGE/taz ]; then
   4.364 -			echo "<a href=\"log.php?package=$(escape $PACKAGE)$LOG_SUFFIX\">$PACKAGE</a>" \
   4.365 -				>> $DB_DIR/unbuilt
   4.366 -		fi
   4.367 -	done
   4.368 -	packages_summary
   4.369 -}
   4.370 -
   4.371 -# Create a new cooklist and summary (dont modify report) so 'tazbb cook-commit'
   4.372 -# can cook last changes.
   4.373 -check_commit()
   4.374 -{
   4.375 -	echo "(checking commit)" > $DB_DIR/running
   4.376 -	cd $HG_WOK
   4.377 -	# Clean up last results.
   4.378 -	rm -f $DB_DIR/cooklist && touch $DB_DIR/cooklist
   4.379 -	# Get the name of modified packages by the revision range. +1 last
   4.380 -	# commit was build by the previous build.
   4.381 -	LAST_REV=$(($LAST_REV+1))
   4.382 -	echo -e "Will cook from revision $LAST_REV to $NEW_REV\n"
   4.383 -	for rev in $(seq $LAST_REV $NEW_REV); do
   4.384 -		hg_log=$(hg log --rev=$rev --template "{files}\t{desc}\n")
   4.385 -		for file in $(echo "$hg_log" | cut -f 1); do
   4.386 -			pkg=`echo $file | cut -d "/" -f 1`
   4.387 -			if [ "$(echo $hg_log | grep -i '+build')" ]; then
   4.388 -				if ! grep -q ^$pkg$ $DB_DIR/genpkglist && ! grep -q ^$pkg$ $DB_DIR/cooklist; then
   4.389 -					if [ -f $pkg/receipt ]; then
   4.390 -						. $pkg/receipt
   4.391 -						echo "Commit  : $PACKAGE ($VERSION) - genpkg only" >> $DB_DIR/report
   4.392 -						echo "$PACKAGE" >> $DB_DIR/genpkglist
   4.393 -					fi
   4.394 -				fi
   4.395 -			else
   4.396 -				if ! grep -q ^$pkg$ $DB_DIR/cooklist; then
   4.397 -					if [ -f $pkg/receipt ]; then
   4.398 -						. $pkg/receipt
   4.399 -						echo "Commit  : $PACKAGE ($VERSION)" >> $DB_DIR/report
   4.400 -						sed "/^$PACKAGE$/d" -i $DB_DIR/genpkglist
   4.401 -						echo "$PACKAGE" >> $DB_DIR/cooklist
   4.402 -					fi
   4.403 -				fi
   4.404 -			fi
   4.405 -		done
   4.406 -	done
   4.407 -	packages_summary
   4.408 -}
   4.409 -
   4.410 -# Genpkg : don't regen the package if source _pkg is missing, this
   4.411 -# function re-generate the package only if all is fine, else it
   4.412 -# does nothing and forget the package.
   4.413 -genpkg_package()
   4.414 -{
   4.415 -	EXTRAVERSION=""
   4.416 -	DEPENDS=""
   4.417 -	BUILD_DEPENDS=""
   4.418 -	SOURCE=""
   4.419 -	WANTED=""
   4.420 -	echo "(Repack <a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>)" > $DB_DIR/running
   4.421 -	tazwok check-receipt $pkg && echo 'N' | tazwok genpkg $pkg
   4.422 -}
   4.423 -
   4.424 -# Cook one package
   4.425 -cook_package()
   4.426 -{
   4.427 -	EXTRAVERSION=""
   4.428 -	DEPENDS=""
   4.429 -	BUILD_DEPENDS=""
   4.430 -	SOURCE=""
   4.431 -	WANTED=""
   4.432 -	echo "(cooking <a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>)" > $DB_DIR/running
   4.433 -	tazwok clean $pkg
   4.434 -	script -c "tazbb check-receipt $pkg && echo 'install' | tazwok cook $pkg" $LOG_DIR/$pkg.log
   4.435 -	# Install new package (important for new shared libs). Note
   4.436 -	# that tests are done separatly with 'test_packages' and should
   4.437 -	# be done by tazwok.
   4.438 -	if [ -f $BUILD_WOK/$pkg/taz/*/receipt ]; then
   4.439 -		TAZBB_NO_INSTALL=""
   4.440 -		. $BUILD_WOK/$pkg/taz/*/receipt
   4.441 -		[ -n "$TAZBB_NO_INSTALL" ] && return 0
   4.442 -		echo "(installing $PACKAGE-${VERSION}$EXTRAVERSION.tazpkg)" \
   4.443 -			> $DB_DIR/running
   4.444 -		script -ac "yes | tazpkg install \
   4.445 -$PACKAGES_REPOSITORY/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg --forced" \
   4.446 -			$LOG_DIR/$pkg.log
   4.447 -		return 0
   4.448 -	fi
   4.449 -	return 1
   4.450 -}
   4.451 -
   4.452 -# Sort list according WANTED and BUILD_DEPENDS
   4.453 -sort_cook_list()
   4.454 -{
   4.455 -	sort | while read pkg; do
   4.456 -		echo -n "$pkg"
   4.457 -		WANTED=""
   4.458 -		BUILD_DEPENDS=""
   4.459 -		. $BUILD_WOK/$pkg/receipt
   4.460 -		MISSING=""
   4.461 -		for i in $WANTED $BUILD_DEPENDS ; do
   4.462 -			# Verify that the dependancy exists and is older
   4.463 -			[ -f $BUILD_WOK/$i/taz/*/receipt ] &&
   4.464 -			[ $BUILD_WOK/$pkg/taz/*/receipt \
   4.465 -			  -nt $BUILD_WOK/$i/taz/*/receipt ] && continue
   4.466 -			WANTED=""
   4.467 -			[ -f $BUILD_WOK/$i/receipt ] &&
   4.468 -			. $BUILD_WOK/$i/receipt
   4.469 -			# This dependancy may be cooked 
   4.470 -			# by another package
   4.471 -			[ -n "$WANTED" ] && i=$WANTED
   4.472 -			case " $MISSING " in
   4.473 -			*\ $i\ *);;
   4.474 -			*) echo -n " $i";;
   4.475 -			esac
   4.476 -			MISSING="$MISSING $i"
   4.477 -		done
   4.478 -		echo ""
   4.479 -	done | awk '{ deps[$1] = $0; }
   4.480 -END {
   4.481 -	k=0;
   4.482 -	while (1) {
   4.483 -		skipped = 0;
   4.484 -		done = 0;
   4.485 -		for (entry in deps) {
   4.486 -			for (i = split(deps[entry], pkg, " "); i > 1; i--)
   4.487 -				if (deps[pkg[i]] != "") break;
   4.488 -			if (i == 1) {
   4.489 -				cook[k++] = pkg[1];
   4.490 -				deps[pkg[1]] = "";
   4.491 -				done++;
   4.492 -			}
   4.493 -			else if (i > 1) skipped++;
   4.494 -		}
   4.495 -		if (skipped == 0) break;
   4.496 -		if (done == 0) { # cross deps !!
   4.497 -			for (entry in deps) {
   4.498 -				if (split(deps[entry], pkg, " ") > 1)
   4.499 -					print pkg[1];
   4.500 -			}
   4.501 -			break;
   4.502 -		}
   4.503 -	}
   4.504 -	while (k > 0) print cook[--k];
   4.505 -}
   4.506 -'
   4.507 -}
   4.508 -
   4.509 -# Here we cook all packages found in the cooklist.
   4.510 -cook_install()
   4.511 -{
   4.512 -	# First repack packages in genpkglist
   4.513 -	for pkg in `cat $DB_DIR/genpkglist`; do
   4.514 -		genpkg_package $pkg
   4.515 -		
   4.516 -		# Remove package from the genpkglist and empty lines for HTML <pre>.
   4.517 -		sed -i /"^$pkg$"/d $DB_DIR/genpkglist
   4.518 -		sed -i '/^$/d' $DB_DIR/genpkglist
   4.519 -		packages_summary_update
   4.520 -	done		
   4.521 -	
   4.522 -	echo "" > $DB_DIR/unbuilt
   4.523 -	for pkg in `cat $DB_DIR/cooklist | sort_cook_list`
   4.524 -	do
   4.525 -		if ! cook_package $pkg; then
   4.526 -			# Link to build log.
   4.527 -			echo "<a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>" >> \
   4.528 -				$DB_DIR/unbuilt
   4.529 -		fi
   4.530 -		missing_depends="$(check_depends_pkg $pkg)"
   4.531 -		if [ -n "$missing_depends" ]; then
   4.532 -			cat >> $LOG_DIR/$pkg.log <<EOT
   4.533 -
   4.534 -Update $pkg receipt for DEPENDS :
   4.535 -The package $pkg depends on packages $missing_depends
   4.536 -
   4.537 -EOT
   4.538 -			# Unbuild package
   4.539 -			rm -rf $BUILD_WOK/$pkg/taz
   4.540 -			# Link to build log.
   4.541 -			echo "<a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>" >> \
   4.542 -				$DB_DIR/unbuilt
   4.543 -		fi
   4.544 -		# Remove package from the cooklist and empty lines for HTML <pre>.
   4.545 -		sed -i /"^$pkg$"/d $DB_DIR/cooklist
   4.546 -		sed -i '/^$/d' $DB_DIR/cooklist
   4.547 -		packages_summary_update
   4.548 -	done
   4.549 -}
   4.550 -
   4.551 -# Check for misc variables
   4.552 -check_variables()
   4.553 -{
   4.554 -	PACKAGE=""
   4.555 -	VERSION=""
   4.556 -	EXTRAVERSION=""
   4.557 -	CATEGORY=""
   4.558 -	SHORT_DESC=""
   4.559 -	MAINTAINER=""
   4.560 -	WEB_SITE=""
   4.561 -	PACKED_SIZE=""
   4.562 -	UNPACKED_SIZE=""
   4.563 -	. $BUILD_WOK/$1/receipt
   4.564 -	if [ "$PACKAGE" != "$1" ]; then
   4.565 -		echo "The PACKAGE variable should be $1"
   4.566 -		return 1
   4.567 -	fi
   4.568 -	if [ -z "$VERSION" ]; then
   4.569 -		echo "No VERSION in $1"
   4.570 -		return 1
   4.571 -	fi
   4.572 -	if [ -z "$SHORT_DESC" ]; then
   4.573 -		echo "No SHORT_DESC in $1"
   4.574 -		return 1
   4.575 -	fi
   4.576 -	case "$MAINTAINER" in
   4.577 -	'')	echo "No MAINTAINER in $1"
   4.578 -		return 1 ;;
   4.579 -	*\<*|*\>*)
   4.580 -		echo "Invalid MAINTAINER in $1"
   4.581 -		return 1 ;;
   4.582 -	*@*)	;;
   4.583 -	*)	echo "No email address for MAINTAINER in $1"
   4.584 -		return 1 ;;
   4.585 -	esac
   4.586 -	if [ -z "$WEB_SITE" ]; then
   4.587 -		echo "No WEB_SITE in $1"
   4.588 -		return 1
   4.589 -	fi
   4.590 -	if [ -n "$EXTRAVERSION" ]; then
   4.591 -		echo "Hardcoded EXTRAVERSION in $1"
   4.592 -		return 1
   4.593 -	fi
   4.594 -	if [ -n "$PACKED_SIZE" ]; then
   4.595 -		echo "Hardcoded PACKED_SIZE in $1"
   4.596 -		return 1
   4.597 -	fi
   4.598 -	if [ -n "$UNPACKED_SIZE" ]; then
   4.599 -		echo "Hardcoded UNPACKED_SIZE in $1"
   4.600 -		return 1
   4.601 -	fi
   4.602 -	case " base-system x-window utilities network graphics multimedia \
   4.603 -               office development system-tools security games misc meta \
   4.604 -               non-free " in
   4.605 -	*\ $CATEGORY\ *);;
   4.606 -	*) 	echo "Invalid CATEGORY in $1 : $CATEGORY"
   4.607 -		return 1;
   4.608 -	esac
   4.609 -	return 0
   4.610 -}
   4.611 -
   4.612 -# Check for WANTED version
   4.613 -check_wanted_version()
   4.614 -{
   4.615 -	WANTED=""
   4.616 -	. $BUILD_WOK/$1/receipt
   4.617 -	if [ -n "$WANTED" ]; then
   4.618 -		expected=$VERSION
   4.619 -		VERSION=
   4.620 -		. $BUILD_WOK/$WANTED/receipt
   4.621 -		if [ "$VERSION" != "$expected" ]; then
   4.622 -			echo "$1: expected wanted version $expected, found $VERSION"
   4.623 -			return 1
   4.624 -		fi
   4.625 -	fi
   4.626 -	return 0
   4.627 -}
   4.628 -
   4.629 -# Check for loop in BUILD_DEPENDS/WANTED
   4.630 -check_build_depends()
   4.631 -{
   4.632 -	local i
   4.633 -	BUILD_DEPENDS=""
   4.634 -	WANTED=""
   4.635 -	. $BUILD_WOK/$1/receipt
   4.636 -	for i in $BUILD_DEPENDS $WANTED ; do
   4.637 -		case " $2 " in
   4.638 -		*\ $i\ *)	echo "Loop in BUILD_DEPENDS/WANTED chain $2 $i"
   4.639 -				return 1 ;;
   4.640 -		*)		check_build_depends $i "$2 $1" || return 1 ;;
   4.641 -		esac
   4.642 -	done
   4.643 -	return 0
   4.644 -}
   4.645 -
   4.646 -# Build depends_to_skip list with packages to remove from depends_to_add list
   4.647 -# These packages are already present in depends_to_add trees
   4.648 -scan_depends_to_skip()
   4.649 -{
   4.650 -	local i
   4.651 -	case " $depends_to_skip " in
   4.652 -	*\ $1\ *) return;;
   4.653 -	esac
   4.654 -	[ -d $BUILD_WOK/$1 ] || return
   4.655 -	DEPENDS=""
   4.656 -	. $BUILD_WOK/$1/receipt
   4.657 -	for i in $DEPENDS ; do
   4.658 -		case " $depends_to_add " in
   4.659 -		*\ $i\ *) depends_to_skip="$depends_to_skip $i";;
   4.660 -		esac
   4.661 -	done
   4.662 -	for i in $DEPENDS ; do
   4.663 -		scan_depends_to_skip $i
   4.664 -	done
   4.665 -}
   4.666 -
   4.667 -# Reduce depends list by scanning nested depends
   4.668 -show_missing_depends()
   4.669 -{
   4.670 -	local i
   4.671 -	depends_to_add=""
   4.672 -	depends_to_skip="$2"
   4.673 -	for i in $1 ; do
   4.674 -		case " $depends_to_add " in
   4.675 -		*\ $i\ *) continue;;
   4.676 -		esac
   4.677 -		depends_to_add="$depends_to_add$i "
   4.678 -	done
   4.679 -	for i in $depends_to_add ; do
   4.680 -		scan_depends_to_skip $i
   4.681 -	done
   4.682 -	for i in $depends_to_add ; do
   4.683 -		case " $depends_to_skip " in
   4.684 -		*\ $i\ *) continue;;
   4.685 -		esac
   4.686 -		echo -n "$i "
   4.687 -	done
   4.688 -}
   4.689 -
   4.690 -# Build all_depends variable
   4.691 -scan_dep()
   4.692 -{
   4.693 -	local i
   4.694 -	all_depends="$all_depends$PACKAGE "
   4.695 -	for i in $DEPENDS $SUGGESTED ; do
   4.696 -		case " $all_depends " in
   4.697 -		*\ $i\ *) continue;;
   4.698 -		esac
   4.699 -		[ -d $BUILD_WOK/$i ] || {
   4.700 -			all_depends="$all_depends$i "
   4.701 -			continue
   4.702 -		}
   4.703 -		DEPENDS=""
   4.704 -		SUGGESTED=""
   4.705 -		. $BUILD_WOK/$i/receipt
   4.706 -		scan_dep
   4.707 -	done
   4.708 -}
   4.709 -
   4.710 -# Check for ELF file
   4.711 -is_elf()
   4.712 -{
   4.713 -	[ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ]
   4.714 -}
   4.715 -
   4.716 -# Print shared library dependencies
   4.717 -ldd()
   4.718 -{
   4.719 -	LD_PRELOAD="" LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
   4.720 -}
   4.721 -
   4.722 -# scan a file for shared libraries and display according package names
   4.723 -check_depends_file()
   4.724 -{
   4.725 -	file=$1
   4.726 -	is_elf $file || continue
   4.727 -	case "$file" in
   4.728 -	*.o|*.ko|*.ko.gz) continue;;
   4.729 -	esac
   4.730 -	[ -s /tmp/files.list.tazbb$$ ] ||
   4.731 -	unlzma -c $PACKAGES_REPOSITORY/files.list.lzma >/tmp/files.list.tazbb$$
   4.732 -	ldd $file | while read lib rem; do
   4.733 -		case "$lib" in
   4.734 -		statically|linux-gate.so*|ld-*.so|*/ld-*.so)
   4.735 -			continue;;
   4.736 -		esac
   4.737 -		for dep in $(grep $lib /tmp/files.list.tazbb$$ | cut -d: -f1); do
   4.738 -			case " $all_depends " in
   4.739 -			*\ $dep\ *) continue 2;;
   4.740 -			esac
   4.741 -			for vdep in $(grep $dep $PACKAGES_REPOSITORY/packages.equiv | cut -d= -f1); do
   4.742 -				case " $all_depends " in
   4.743 -				*\ $vdep\ *) continue 3;;
   4.744 -				esac
   4.745 -			done
   4.746 -		done
   4.747 -		[ -n "$dep" ] || dep="UNKNOWN"
   4.748 -		all_depends="$all_depends $dep"
   4.749 -		if [ -n "$VERBOSE" ]; then
   4.750 -			echo "${file#*fs} depends on package $dep for the shared library $lib" 1>&2
   4.751 -		fi
   4.752 -		echo -n "$dep "
   4.753 -	done
   4.754 -}
   4.755 -
   4.756 -DEFAULT_DEPENDS="glibc-base"
   4.757 -
   4.758 -# scan a package for shared libraries and display missing package in DEPENDS
   4.759 -check_depends_pkg()
   4.760 -{
   4.761 -	pkg=$1
   4.762 -	echo "(checking depends for $pkg)" > $DB_DIR/running
   4.763 -	tmp=/tmp/tazbb$$
   4.764 -	mkdir $tmp
   4.765 -	package=$(basename $pkg)
   4.766 -	if ! cd ${package%%-*}*/taz/${package%.tazpkg}/.. 2> /dev/null; then
   4.767 -		cd $tmp
   4.768 -		tazpkg extract $pkg > /dev/null 2>&1
   4.769 -	fi
   4.770 -	. */receipt
   4.771 -	all_depends="$DEFAULT_DEPENDS "
   4.772 -	scan_dep
   4.773 -	toadd=$(find */fs -type f | while read file ; do
   4.774 -		check_depends_file $file
   4.775 -	done)
   4.776 -	. */receipt
   4.777 -	rm -rf */
   4.778 -	cd - > /dev/null
   4.779 -	rm -rf $tmp
   4.780 -	show_missing_depends "$toadd" "$DEPENDS $SUGGESTED"
   4.781 -}
   4.782 -
   4.783 -check_depends_this_file()
   4.784 -{
   4.785 -	file=$1
   4.786 -	all_depends="$DEFAULT_DEPENDS "
   4.787 -	scan_dep
   4.788 -	check_depends_file $file
   4.789 -}
   4.790 -
   4.791 -# Remove old packages in the build wok and clean pkgs repository. The
   4.792 -# Hg wok is copied into the build wok so packages removed by hg must be
   4.793 -# removed. To remove old packages in the repository we look into the
   4.794 -# build wok and dont remove unbuilt packages. Clean-up will also remove
   4.795 -# all corrupted packages.
   4.796 -clean_up()
   4.797 -{
   4.798 -	touch $DB_DIR/removed
   4.799 -	echo -e "\nCleaning the build wok, old and corrupted packages...\n"
   4.800 -	echo "(cleaning)" > $DB_DIR/running
   4.801 -	for pkg in `ls $BUILD_WOK`
   4.802 -	do
   4.803 -		if [ ! -d $HG_WOK/$pkg ]; then
   4.804 -			case $2 in
   4.805 -				--dry-run)
   4.806 -					echo "Removing directory : $pkg" ;;
   4.807 -				--verbose)
   4.808 -					echo "Removing directory : $pkg"
   4.809 -					rm -rf $BUILD_WOK/$pkg ;;
   4.810 -				*)
   4.811 -					rm -rf $BUILD_WOK/$pkg ;;
   4.812 -			esac
   4.813 -		fi
   4.814 -	done
   4.815 -	# Build a packages list with EXTRAVERSION so we can grep into it.
   4.816 -	rm -f $DB_DIR/packaged && touch $DB_DIR/packaged
   4.817 -	for receipt in $BUILD_WOK/*/taz/*/receipt
   4.818 -	do
   4.819 -		EXTRAVERSION=""
   4.820 -		. $receipt
   4.821 -		echo "$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg" >> $DB_DIR/packaged
   4.822 -	done
   4.823 -	for pkg in `cd $PACKAGES_REPOSITORY && ls *.tazpkg`
   4.824 -	do
   4.825 -		if ! grep -q "^$pkg$" $DB_DIR/packaged; then
   4.826 -			case $2 in
   4.827 -				--dry-run)
   4.828 -					echo "Removing package : $pkg" ;;
   4.829 -				--verbose)
   4.830 -					echo "Removing package : $pkg"
   4.831 -					echo "$pkg" >> $DB_DIR/removed
   4.832 -					rm -f $PACKAGES_REPOSITORY/$pkg ;;
   4.833 -				*)
   4.834 -					echo "$pkg" >> $DB_DIR/removed
   4.835 -					rm -f $PACKAGES_REPOSITORY/$pkg ;;
   4.836 -			esac
   4.837 -		fi
   4.838 -	done
   4.839 -	# Remove all corrupted packages
   4.840 -	for pkg in `cat $DB_DIR/corrupted | awk '{ print $3 }'`
   4.841 -	do
   4.842 -		case $2 in
   4.843 -			--dry-run)
   4.844 -				echo "Removing corrupted: $pkg" ;;
   4.845 -			--verbose)
   4.846 -				echo "Removing corrupted: $pkg"
   4.847 -				echo "$pkg" >> $DB_DIR/removed
   4.848 -				rm -rf $PACKAGES_REPOSITORY/$pkg ;;
   4.849 -			*)
   4.850 -				echo "$pkg" >> $DB_DIR/removed
   4.851 -				rm -rf $PACKAGES_REPOSITORY/$pkg ;;
   4.852 -		esac
   4.853 -	done
   4.854 -	echo ""
   4.855 -	# Keep the 20 last removed packages list.
   4.856 -	cat $DB_DIR/removed | tail -n 20 > /tmp/removed.tail
   4.857 -	mv -f /tmp/removed.tail $DB_DIR/removed
   4.858 -	# Clean packages stuff/ directory
   4.859 -	echo -e "\nCleaning the build wok stuff/ directories...\n"
   4.860 -	for pkg in `ls $BUILD_WOK`
   4.861 -	do
   4.862 -		if [ -d "$BUILD_WOK/$pkg/stuff" ]; then
   4.863 -			cd $BUILD_WOK/$pkg
   4.864 -			for file in `find stuff -type f`
   4.865 -			do
   4.866 -				if [ ! -f "$HG_WOK/$pkg/$file" ]; then
   4.867 -					echo "Removing: $pkg/$file"
   4.868 -					rm $file
   4.869 -				fi
   4.870 -			done
   4.871 -		fi
   4.872 -	done
   4.873 -}
   4.874 -
   4.875 -blocked_urls()
   4.876 -{
   4.877 -	rm -f $DB_DIR/blocked.urls
   4.878 -	for pkg in `cat $DB_DIR/blocked`
   4.879 -	do
   4.880 -		if [ -f $LOG_DIR/$pkg.log ]; then
   4.881 -			echo "<a href=\"log.php?package=$(escape $pkg)$LOG_SUFFIX\">$pkg</a>" >> \
   4.882 -				$DB_DIR/blocked.urls
   4.883 -		else
   4.884 -			echo "$pkg" >> $DB_DIR/blocked.urls
   4.885 -		fi
   4.886 -	done
   4.887 -}
   4.888 -
   4.889 -# 4k, not a meta or a get-* package and no files = buggy package
   4.890 -test_packages()
   4.891 -{
   4.892 -	echo -e "\nTesting all packages in: $PACKAGES_REPOSITORY"
   4.893 -	echo "================================================================================"
   4.894 -	echo "(testing packages)" > $DB_DIR/running
   4.895 -	rm -f $DB_DIR/corrupted && touch $DB_DIR/corrupted
   4.896 -	for pkg in $PACKAGES_REPOSITORY/*.tazpkg
   4.897 -	do
   4.898 -		tmp=/tmp/bb-test.$$
   4.899 -		CATEGORY=""
   4.900 -		if du $pkg | grep -qw '^4' && ! echo `basename $pkg` | grep -q '^get-'; then
   4.901 -			mkdir -p $tmp && cd $tmp
   4.902 -			cpio -i receipt >/dev/null 2>&1 < $pkg
   4.903 -			. ./receipt
   4.904 -			if [ "$CATEGORY" != "meta" ]; then
   4.905 -				[ "$2" = "--verbose" ] && echo "Testing: $PACKAGE"
   4.906 -				cpio -i fs.cpio.gz >/dev/null 2>&1 < $pkg
   4.907 -				cpio -i fs.cpio.lzma >/dev/null 2>&1 < $pkg
   4.908 -				if [ ! -f fs.cpio.gz -a ! -f fs.cpio.lzma ]; then
   4.909 -					echo "Missing filesystem    `basename $pkg`"
   4.910 -					if [ -f $LOG_DIR/$PACKAGE.log ];then
   4.911 -						echo "Missing filesystem    `basename $pkg` <a href=\"log.php?package=$(escape $PACKAGE)$LOG_SUFFIX\">Log</a>" \
   4.912 -							>> $DB_DIR/corrupted
   4.913 -					else
   4.914 -						echo "Missing filesystem    `basename $pkg`" \
   4.915 -							>> $DB_DIR/corrupted
   4.916 -					fi
   4.917 -				else
   4.918 -					( zcat fs.cpio.gz 2> /dev/null || \
   4.919 -					  unlzma -c fs.cpio.lzma ) | \
   4.920 -					cpio -id >/dev/null 2>&1
   4.921 -					files=`find fs -type f -o -type l`
   4.922 -					if [ -z "$files" ]; then
   4.923 -						echo "Empty filesystem      `basename $pkg`"
   4.924 -						if [ -f $LOG_DIR/$PACKAGE.log ]; then
   4.925 -							echo "Empty filesystem      `basename $pkg` <a href=\"log.php?package=$(escape $PACKAGE)$LOG_SUFFIX\">Log</a>" \
   4.926 -								>> $DB_DIR/corrupted
   4.927 -						else
   4.928 -							echo "Empty filesystem      `basename $pkg`" \
   4.929 -							>> $DB_DIR/corrupted
   4.930 -						fi
   4.931 -					fi
   4.932 -				fi
   4.933 -			fi
   4.934 -			cd .. && rm -rf $tmp
   4.935 -		fi
   4.936 -	done
   4.937 -	packages_summary_update
   4.938 -	echo ""
   4.939 -}
   4.940 -
   4.941 -# Generate flavor list
   4.942 -gen_flavor_list()
   4.943 -{
   4.944 -	cd $PACKAGES_REPOSITORY
   4.945 -	noheader=""
   4.946 -	for i in *.flavor; do
   4.947 -		tazlito show-flavor $i --brief $noheader
   4.948 -		noheader="--noheader"
   4.949 -	done > flavors.list
   4.950 -	cd - > /dev/null
   4.951 -}
   4.952 -
   4.953 -case "$1" in
   4.954 -	list-pkgs)
   4.955 -		# List last cooked packages.
   4.956 -		list_packages ;;
   4.957 -	report)
   4.958 -		# Run in report mode. If an update is done we must cook-all to
   4.959 -		# rebuild all updated packages.
   4.960 -		[ "$2" == "--update" ] && update_wok $@ || echo ""
   4.961 -		check_wok $@
   4.962 -		check_flavors $@
   4.963 -		test_packages $@
   4.964 -		show_report ;;
   4.965 -	cook)
   4.966 -		# Cook, install and log a single package build.
   4.967 -		if [ -z $2 ]; then
   4.968 -			echo "Please specify a package on the command line."
   4.969 -			rm -f $LOCK_FILE && exit 0
   4.970 -		fi
   4.971 -		pkg=$2
   4.972 -		echo "Starting to cook and install: $pkg"
   4.973 -		if ! cook_package $pkg; then
   4.974 -			echo "Unable to install: $pkg"
   4.975 -		fi ;;
   4.976 -	cook-all)
   4.977 -		# Update wok, gen report (with cooklist), cook all packages, test,
   4.978 -		# clean, gen new report and lists.
   4.979 -		update_wok $@
   4.980 -		check_wok $@
   4.981 -		cook_install
   4.982 -		test_packages $@
   4.983 -		check_flavors $@
   4.984 -		pack_flavors
   4.985 -		clean_up $@
   4.986 -		check_wok $@
   4.987 -		echo "(generating lists)" > $DB_DIR/running
   4.988 -		tazwok gen-list --text
   4.989 -		check_flavors $@
   4.990 -		gen_flavor_list
   4.991 -		echo "" ;;
   4.992 -	cook-commit)
   4.993 -		# Cook all packages affected by the last commits in the wok.
   4.994 -		# Clean up is done only by cook-all to avoid rebuild of corrupted
   4.995 -		# packages on each commit.
   4.996 -		update_wok $@
   4.997 -		check_commit
   4.998 -		cook_install
   4.999 -		test_packages $@
  4.1000 -		check_flavors $@
  4.1001 -		pack_flavors
  4.1002 -		check_wok $@
  4.1003 -		check_flavors $@
  4.1004 -		echo "(generating lists)" > $DB_DIR/running
  4.1005 -		tazwok gen-list --text
  4.1006 -		gen_flavor_list
  4.1007 -		echo "" ;;
  4.1008 -	block)
  4.1009 -		# Add a pkg name to the list of blocked packages.
  4.1010 -		echo ""
  4.1011 -		if grep -qs "^$2$" $DB_DIR/blocked; then
  4.1012 -			echo -e "$2 is already in the blocked packages list."
  4.1013 -		else
  4.1014 -			echo -n "Adding $2 to     : $DB_DIR/blocked... "
  4.1015 -			echo "$2" >> $DB_DIR/blocked && echo "Done"
  4.1016 -			if grep -q "^$2$" $DB_DIR/cooklist; then
  4.1017 -				echo -n "Removing $2 from : $DB_DIR/cooklist... "
  4.1018 -				sed -i /"^$2$"/d $DB_DIR/cooklist && echo "Done"
  4.1019 -				packages_summary_update
  4.1020 -			fi
  4.1021 -		fi
  4.1022 -		blocked_urls
  4.1023 -		echo "" ;;
  4.1024 -	unblock)
  4.1025 -		# Remove a pkg name from the list of blocked packages.
  4.1026 -		echo ""
  4.1027 -		if grep -qs "^$2$" $DB_DIR/blocked; then
  4.1028 -			echo -n "Removing $2 from : $DB_DIR/blocked... "
  4.1029 -			sed -i /"^$2$"/d $DB_DIR/blocked
  4.1030 -			sed -i '/^$/d' $DB_DIR/blocked && echo "Done"
  4.1031 -			echo -n "Adding $2 to     : $DB_DIR/cooklist... "
  4.1032 -			echo "$2" >> $DB_DIR/cooklist && echo "Done"
  4.1033 -			packages_summary_update
  4.1034 -		else
  4.1035 -			echo -e "$2 is not in the blocked packages list."
  4.1036 -		fi
  4.1037 -		blocked_urls
  4.1038 -		echo "" ;;
  4.1039 -	test-pkgs)
  4.1040 -		# Start a test suite on all builded packages.
  4.1041 -		test_packages $@ ;;
  4.1042 -	test-suite)
  4.1043 -		# Start a test suite on all builded package and the wok using
  4.1044 -		# the great 'tazwok check'.
  4.1045 -		#
  4.1046 -		# test_packages > $LOG_DIR/test-suite.log
  4.1047 -		# tazwok check >> $LOG_DIR/test-suite.log
  4.1048 -		#
  4.1049 -		test_packages $@
  4.1050 -		script -c "tazwok check" $LOG_DIR/test-suite.log ;;
  4.1051 -	mail)
  4.1052 -		# Tazbbmail Pythom script wrapper.
  4.1053 -		PACKAGE=$2
  4.1054 -		tazbbmail $PACKAGE ;;
  4.1055 -	clean-up)
  4.1056 -		# Remove old packages and generate new packages lists.
  4.1057 -		update_wok $@
  4.1058 -		clean_up $@
  4.1059 -		packages_summary_update
  4.1060 -		[ "$2" != "--dry-run" ] && tazwok gen-list --text ;;
  4.1061 -	clean-log)
  4.1062 -		logs=`ls $LOG_DIR | wc -l`
  4.1063 -		echo -n "Cleaning: $LOG_DIR... "
  4.1064 -		rm -rf $LOG_DIR/*
  4.1065 -		echo "$logs log removed" ;;
  4.1066 -	check-receipt)
  4.1067 -		check_variables $2 &&
  4.1068 -		check_wanted_version $2 &&
  4.1069 -		check_build_depends $2 ""
  4.1070 -		exit $? ;;
  4.1071 -	check-depends)
  4.1072 -		case "$2" in
  4.1073 -		wok)
  4.1074 -			for pkg in $PACKAGES_REPOSITORY/*.tazpkg ; do
  4.1075 -				missing_depends="$(check_depends_pkg $pkg)"
  4.1076 -				[ -n "$missing_depends" ] && 
  4.1077 -				echo "The package $pkg depends on $missing_depends."
  4.1078 -			done ;;
  4.1079 -		package)
  4.1080 -			pkg=$3
  4.1081 -			VERBOSE=$4
  4.1082 -			missing_depends="$(check_depends_pkg $pkg)"
  4.1083 -			[ -n "$missing_depends" ] && 
  4.1084 -			echo "The package $pkg depends on $missing_depends."
  4.1085 -			;;
  4.1086 -		file)
  4.1087 -			file=3
  4.1088 -			VERBOSE=$4
  4.1089 -			missing_depends="$(check_depends_this_file $file)"
  4.1090 -			[ -n "$missing_depends" ] && 
  4.1091 -			echo "The file $file depends on $missing_depends."
  4.1092 -			;;
  4.1093 -		*)	cat <<EOT
  4.1094 -check-depends wok		check every package in wok.
  4.1095 -check-depends package <pkg>     check one package.
  4.1096 -check-depends file <filename>   check one file only.
  4.1097 -EOT
  4.1098 -			;;
  4.1099 -		esac ;;
  4.1100 -	*)
  4.1101 -		usage ;;
  4.1102 -esac
  4.1103 -
  4.1104 -echo "" > $DB_DIR/running
  4.1105 -rm -f $LOCK_FILE /tmp/files.list.tazbb$$
  4.1106 -
  4.1107 -exit 0
     5.1 --- a/tazbb/stuff/tazbb.conf	Mon May 16 15:34:53 2011 +0200
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,18 +0,0 @@
     5.4 -# tazbb.conf - SliTaz Build Bot configuration file.
     5.5 -#
     5.6 -
     5.7 -# Wok's and packages path.
     5.8 -HG_WOK="/home/slitaz/hg/wok"
     5.9 -BUILD_WOK="/home/slitaz/wok"
    5.10 -HG_FLAVORS="/home/slitaz/hg/flavors"
    5.11 -BUILD_FLAVORS="/home/slitaz/flavors"
    5.12 -PACKAGES_REPOSITORY="/home/slitaz/packages"
    5.13 -
    5.14 -# Log files, database and lock file.
    5.15 -LOG_DIR="/var/log/tazbb"
    5.16 -DB_DIR="/var/lib/tazbb"
    5.17 -LOCK_FILE="/var/lock/tazbb.lock"
    5.18 -
    5.19 -# Path to the online Hg repo.
    5.20 -HG_URL="http://hg.slitaz.org/wok"
    5.21 -
     6.1 --- a/tazbb/stuff/tazbbmail	Mon May 16 15:34:53 2011 +0200
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,50 +0,0 @@
     6.4 -#!/usr/bin/python
     6.5 -#
     6.6 -# Part of SliTaz Build Bot - Send mail with cooklog url to a maintainer.
     6.7 -# (C) 2009 SliTaz GNU/Linux project -  GNU gpl v3
     6.8 -#
     6.9 -
    6.10 -import sys
    6.11 -import smtplib
    6.12 -
    6.13 -# We need a package name.
    6.14 -if len(sys.argv) != 2:
    6.15 -	print "Usage: tazbbmail package"
    6.16 -	sys.exit(1)
    6.17 -
    6.18 -# From, package name, receipt for email and version.
    6.19 -mailer  = "tazbb@slitaz.org"
    6.20 -package = (sys.argv[1])
    6.21 -receipt = "/home/slitaz/wok/%s/receipt" % package
    6.22 -
    6.23 -for line in open(receipt) :
    6.24 -	if "VERSION=" in line:
    6.25 -		version = line.split('"')[1]
    6.26 -	if "MAINTAINER=" in line:
    6.27 -		mailto = line.split('"')[1]
    6.28 -
    6.29 -# Format mail.
    6.30 -subject = "[tazbb] Unbuilt %s Cooklog" % package
    6.31 -cooklog = "http://bb.slitaz.org/log/%s.log" % package
    6.32 -
    6.33 -message = """\
    6.34 -From: %s
    6.35 -To: %s
    6.36 -Subject: %s
    6.37 -
    6.38 -Package : %s
    6.39 -Version : %s
    6.40 -Cooklog : %s
    6.41 -
    6.42 ---
    6.43 -Tazbb Mailer
    6.44 -""" % (mailer, mailto, subject, package, version, cooklog)
    6.45 -
    6.46 -# Send mail.
    6.47 -try:
    6.48 -	server = smtplib.SMTP("localhost")
    6.49 -	server.sendmail(mailer, mailto, message)
    6.50 -	server.quit()
    6.51 -	print "Successfully sent mail to: %s" % mailto
    6.52 -except SMTPException:
    6.53 -	print "Unable to send mail"
     7.1 --- a/tazbb/stuff/web/conf.php	Mon May 16 15:34:53 2011 +0200
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,12 +0,0 @@
     7.4 -<?php
     7.5 -
     7.6 -// Tazbb web interface configuration
     7.7 -
     7.8 -$chroot     = "/home/slitaz/$version/chroot";
     7.9 -$lockfile   = "$chroot/var/lock/tazbb.lock";
    7.10 -$db_dir     = "$chroot/var/lib/tazbb";
    7.11 -$log_dir    = "$chroot/var/log/tazbb";
    7.12 -$packages   = "$chroot/home/slitaz/packages";
    7.13 -$hgurl      = "http://hg.slitaz.org/$wok";
    7.14 -
    7.15 -?>
     8.1 Binary file tazbb/stuff/web/favicon.ico has changed
     9.1 --- a/tazbb/stuff/web/index.php	Mon May 16 15:34:53 2011 +0200
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,202 +0,0 @@
     9.4 -<?php
     9.5 -$version='cooking';
     9.6 -$notversion='stable';
     9.7 -$wok='wok';
     9.8 -if (isset($_GET['stable'])) {
     9.9 -	$version='stable';
    9.10 -	$notversion='cooking';
    9.11 -	$wok='wok-stable';
    9.12 -}
    9.13 -include("conf.php");
    9.14 -?>
    9.15 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    9.16 -    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    9.17 -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    9.18 -<head>
    9.19 -    <title>SliTaz Build Bot</title>
    9.20 -    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    9.21 -    <meta name="description" content="Tazbb web interface" />
    9.22 -    <meta name="robots" content="index nofollow" />
    9.23 -    <link rel="shortcut icon" href="favicon.ico" />
    9.24 -    <link rel="stylesheet" type="text/css" href="slitaz.css" />
    9.25 -</head>
    9.26 -<body>
    9.27 -
    9.28 -<!-- Header -->
    9.29 -<div id="header">
    9.30 -	<!-- Access -->                                                                 
    9.31 -	<div id="access">
    9.32 -	    <a href="/<?php if ($version != 'stable')
    9.33 -		echo "?stable"; ?>" title="Slitaz <?php
    9.34 -		echo $notversion ?> packages"><?php echo $notversion ?></a>                          
    9.35 -	</div>                                                                         
    9.36 -    <a href="http://bb.slitaz.org/"><img id="logo"
    9.37 -		src="pics/website/logo.png"
    9.38 -		title="bb.slitaz.org" alt="bb.slitaz.org" /></a>
    9.39 -    <p id="titre">#!/Build/Bot/<?php echo $version; ?></p>
    9.40 -</div>
    9.41 -
    9.42 -<!-- Content -->
    9.43 -<div id="content-full">
    9.44 -
    9.45 -<!-- Block begin -->
    9.46 -<div class="block">
    9.47 -	<!-- Nav block begin -->
    9.48 -	<div id="block_nav">
    9.49 -		<h3><img src="pics/website/development.png" alt="devel.png" />Developers</h3>
    9.50 -		<ul>
    9.51 -			<li><a href="http://www.slitaz.org/en/devel/">Website/devel</a></li>
    9.52 -			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
    9.53 -			<li><a href="http://hg.slitaz.org/">Mercurial Repos</a></li>
    9.54 -			<li><a href="http://people.slitaz.org/">People Stuff</a></li>
    9.55 -			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
    9.56 -		</ul>
    9.57 -	<!-- Nav block end -->
    9.58 -	</div>
    9.59 -	<!-- Top block begin -->
    9.60 -	<div id="block_top">
    9.61 -		<h1>Build Bot</h1>
    9.62 -		<p>
    9.63 -			Tazbb is a <a href="http://www.slitaz.org/">SliTaz GNU/Linux</a>
    9.64 -			Build Bot, it automatically cooks and tests packages commited in
    9.65 -			the wok. SliTaz <a href="http://pkgs.slitaz.org/">packages</a> are
    9.66 -			cooked on the project main server: code name 
    9.67 -			<a href="http://tank.slitaz.org">Tank</a>. This web interface gives
    9.68 -			the current status of the build bot and the last report
    9.69 -			about any packages modified by the SliTaz contributors in 
    9.70 -			the Mercurial repositories, aka 
    9.71 -			<a href="http://hg.slitaz.org/">Hg repos</a>.
    9.72 -		</p>
    9.73 -	<!-- Top block end -->
    9.74 -	</div>
    9.75 -<!-- Block end -->
    9.76 -</div>
    9.77 -
    9.78 -<h2>Cooklog</h2>
    9.79 -
    9.80 -<p>
    9.81 -	<form action="log.php" method="get">
    9.82 -	<?php
    9.83 -		if ($version == 'stable')
    9.84 -			echo '<input type="hidden" name="stable" value="1" />';
    9.85 -	?>	Show pkg log: <input type="text" name="package" style="width: 300px;" />
    9.86 -		<!-- <input type="submit" value="Show" /> -->
    9.87 -	</form>
    9.88 -</p>
    9.89 -
    9.90 -<h3>Summary</h3>
    9.91 -<pre class="package">
    9.92 -<?php
    9.93 -
    9.94 -// Check curent status (update in real time) and display summary.
    9.95 -
    9.96 -if (file_exists($lockfile)) {
    9.97 -	echo "Status   : Running ";
    9.98 -	include("$db_dir/running");
    9.99 -}
   9.100 -else {
   9.101 -	echo "Status   : Not currently running\n";
   9.102 -}
   9.103 -include("$db_dir/summary");
   9.104 -
   9.105 -?>
   9.106 -</pre>
   9.107 -
   9.108 -<h3>Report</h3>
   9.109 -<pre class="package">
   9.110 -<?php
   9.111 -include("$db_dir/report");
   9.112 -?>
   9.113 -</pre>
   9.114 -
   9.115 -<h3>Genpkglist</h3>
   9.116 -<pre class="package">
   9.117 -<?php
   9.118 -include("$db_dir/genpkglist");
   9.119 -?>
   9.120 -</pre>
   9.121 -
   9.122 -<h3>Cooklist</h3>
   9.123 -<pre class="package">
   9.124 -<?php
   9.125 -include("$db_dir/cooklist");
   9.126 -?>
   9.127 -</pre>
   9.128 -
   9.129 -<h3>Unbuilt</h3>
   9.130 -<pre class="package">
   9.131 -<?php
   9.132 -include("$db_dir/unbuilt");
   9.133 -?>
   9.134 -</pre>
   9.135 -
   9.136 -<h3>Blocked</h3>
   9.137 -<pre class="package">
   9.138 -<?php
   9.139 -include("$db_dir/blocked.urls");
   9.140 -?>
   9.141 -</pre>
   9.142 -
   9.143 -<h3>Corrupted</h3>
   9.144 -<pre class="package">
   9.145 -<?php
   9.146 -include("$db_dir/corrupted");
   9.147 -?>
   9.148 -</pre>
   9.149 -
   9.150 -<h3>Last cooked packages</h3>
   9.151 -<pre class="package">
   9.152 -<?php
   9.153 -system("cd $packages && ls -1t *.tazpkg | head -20 | \
   9.154 -	while read file; do echo -n \$(stat -c '%y' $packages/\$file | \
   9.155 -	cut -d. -f1); echo '   '\$file; done"); ?>
   9.156 -</pre>
   9.157 -
   9.158 -<h3>Last removed packages</h3>
   9.159 -<pre class="package">
   9.160 -<?php
   9.161 -include("$db_dir/removed");
   9.162 -?>
   9.163 -</pre>
   9.164 -
   9.165 -<h3>Last cooked flavors</h3>
   9.166 -<pre class="package">
   9.167 -<?php
   9.168 -system("cd $packages && ls -1t *.flavor | head -20 | \
   9.169 -	while read file; do echo -n \$(stat -c '%y' $packages/\$file | \
   9.170 -	cut -d. -f1); echo '   '\$file; done"); ?>
   9.171 -</pre>
   9.172 -
   9.173 -<!-- End of content -->
   9.174 -</div>
   9.175 -
   9.176 -<!-- Footer -->
   9.177 -<div id="footer">
   9.178 -	<div class="right_box">
   9.179 -	<h4>SliTaz Network</h4>
   9.180 -		<ul>
   9.181 -			<li><a href="http://www.slitaz.org/">Main Website</a></li>
   9.182 -			<li><a href="http://doc.slitaz.org/">Documentation</a></li>
   9.183 -			<li><a href="http://forum.slitaz.org/">Support Forum</a></li>
   9.184 -			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
   9.185 -			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
   9.186 -			<li><a href="http://twitter.com/slitaz">SliTaz on Twitter</a></li>
   9.187 -		</ul>
   9.188 -	</div>
   9.189 -	<h4>SliTaz Website</h4>
   9.190 -	<ul>
   9.191 -		<li><a href="#header">Top of the page</a></li>
   9.192 -		<li>Copyright &copy; <span class="year"></span>
   9.193 -			<a href="http://www.slitaz.org/">SliTaz</a></li>
   9.194 -		<li><a href="http://www.slitaz.org/en/about/">About the project</a></li>
   9.195 -		<li><a href="http://www.slitaz.org/netmap.php">Network Map</a></li>
   9.196 -		<li>Page modified the <?php echo (date( "d M Y", getlastmod())); ?></li>
   9.197 -		<li><a href="http://validator.w3.org/check?uri=referer"><img
   9.198 -		src="pics/website/xhtml10.png" alt="Valid XHTML 1.0"
   9.199 -		title="Code validé XHTML 1.0"
   9.200 -		style="width: 80px; height: 15px; vertical-align: middle;" /></a></li>
   9.201 -	</ul>
   9.202 -</div>
   9.203 -
   9.204 -</body>
   9.205 -</html>
    10.1 --- a/tazbb/stuff/web/log.php	Mon May 16 15:34:53 2011 +0200
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,122 +0,0 @@
    10.4 -<?php
    10.5 -$version='cooking';
    10.6 -$wok='wok';
    10.7 -if (isset($_GET['stable'])) {
    10.8 -	$version='stable';
    10.9 -	$wok='wok-stable';
   10.10 -}
   10.11 -include("conf.php");
   10.12 -?>
   10.13 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   10.14 -    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   10.15 -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   10.16 -<head>
   10.17 -    <title>Tazbb cooklog <?php echo $_GET['package']; ?></title>
   10.18 -    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
   10.19 -    <meta name="description" content="Tazbb web interface cooklog" />
   10.20 -    <meta name="robots" content="index nofollow" />
   10.21 -    <link rel="shortcut icon" href="favicon.ico" />
   10.22 -    <link rel="stylesheet" type="text/css" href="slitaz.css" />
   10.23 -</head>
   10.24 -<body>
   10.25 -
   10.26 -<!-- Header -->
   10.27 -<div id="header">
   10.28 -    <a href="http://bb.slitaz.org/"><img id="logo"
   10.29 -		src="pics/website/logo.png"
   10.30 -		title="bb.slitaz.org" alt="bb.slitaz.org" /></a>
   10.31 -    <p id="titre">#!/Build/Bot<?php if ($version == 'stable') echo '/stable'; ?></p>
   10.32 -</div>
   10.33 -
   10.34 -<!-- Content -->
   10.35 -<div id="content-full">
   10.36 -
   10.37 -<!-- Block begin -->
   10.38 -<div class="block">
   10.39 -	<!-- Nav block begin -->
   10.40 -	<div id="block_nav">
   10.41 -		<h3><img src="pics/website/development.png" alt="devel.png" />Developers</h3>
   10.42 -		<ul>
   10.43 -			<li><a href="http://www.slitaz.org/en/devel/">Website/devel</a></li>
   10.44 -			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
   10.45 -			<li><a href="http://hg.slitaz.org/">Mercurial Repos</a></li>
   10.46 -			<li><a href="http://people.slitaz.org/">People Stuff</a></li>
   10.47 -			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
   10.48 -		</ul>
   10.49 -	<!-- Nav block end -->
   10.50 -	</div>
   10.51 -	<!-- Top block begin -->
   10.52 -	<div id="block_top">
   10.53 -		<h1>Cooklog</h1>
   10.54 -		<p>
   10.55 -			The BuildBot generated cooklog file to help debug packages
   10.56 -			and check the build process.
   10.57 -		</p>
   10.58 -	<!-- Top block end -->
   10.59 -	</div>
   10.60 -<!-- Block end -->
   10.61 -</div>
   10.62 -
   10.63 -<h2>Search</h2>
   10.64 -
   10.65 -<p>
   10.66 -<form action="log.php" method="get">
   10.67 -	<input type="text" name="package" style="width: 300px;" />
   10.68 -	<!-- <input type="submit" value="Show" /> -->
   10.69 -<?php
   10.70 -
   10.71 -if ($_GET['package']) {
   10.72 -	$pkg = $_GET["package"];
   10.73 -	if (file_exists("$log_dir/$pkg.log")) {
   10.74 -		echo " Package $pkg: ";
   10.75 -		echo '<a href="' . "log/$pkg.log" . '">Raw log</a> ' . "\n";
   10.76 -		echo '</form></p>';
   10.77 -		echo '<pre class="log">' . "\n";
   10.78 -		echo date ("F d Y H:i:s", filemtime("log/$pkg.log"))."\n";
   10.79 -		include("$log_dir/$pkg.log");
   10.80 -		echo '</pre>';
   10.81 -	}
   10.82 -	else {
   10.83 -		echo " No log file found for: $pkg";
   10.84 -		echo '</form></p>';
   10.85 -	}
   10.86 -}
   10.87 -else {
   10.88 -	echo '</form></p>';
   10.89 -}
   10.90 -
   10.91 -?>
   10.92 -
   10.93 -<!-- End of content -->
   10.94 -</div>
   10.95 -
   10.96 -<!-- Footer -->
   10.97 -<div id="footer">
   10.98 -	<div class="right_box">
   10.99 -	<h4>SliTaz Network</h4>
  10.100 -		<ul>
  10.101 -			<li><a href="http://www.slitaz.org/">Main Website</a></li>
  10.102 -			<li><a href="http://doc.slitaz.org/">Documentation</a></li>
  10.103 -			<li><a href="http://forum.slitaz.org/">Support Forum</a></li>
  10.104 -			<li><a href="http://scn.slitaz.org/">Community Network</a></li>
  10.105 -			<li><a href="http://labs.slitaz.org/">Laboratories</a></li>
  10.106 -			<li><a href="http://twitter.com/slitaz">SliTaz on Twitter</a></li>
  10.107 -		</ul>
  10.108 -	</div>
  10.109 -	<h4>SliTaz Website</h4>
  10.110 -	<ul>
  10.111 -		<li><a href="#header">Top of the page</a></li>
  10.112 -		<li>Copyright &copy; <span class="year"></span>
  10.113 -			<a href="http://www.slitaz.org/">SliTaz</a></li>
  10.114 -		<li><a href="http://www.slitaz.org/en/about/">About the project</a></li>
  10.115 -		<li><a href="http://www.slitaz.org/netmap.php">Network Map</a></li>
  10.116 -		<li>Page modified the <?php echo (date( "d M Y", getlastmod())); ?></li>
  10.117 -		<li><a href="http://validator.w3.org/check?uri=referer"><img
  10.118 -		src="pics/website/xhtml10.png" alt="Valid XHTML 1.0"
  10.119 -		title="Code validé XHTML 1.0"
  10.120 -		style="width: 80px; height: 15px; vertical-align: middle;" /></a></li>
  10.121 -	</ul>
  10.122 -</div>
  10.123 -
  10.124 -</body>
  10.125 -</html>
    11.1 Binary file tazbb/stuff/web/pics/website/development.png has changed
    12.1 Binary file tazbb/stuff/web/pics/website/header-img.png has changed
    13.1 Binary file tazbb/stuff/web/pics/website/logo.png has changed
    14.1 Binary file tazbb/stuff/web/pics/website/xhtml10.png has changed
    15.1 --- a/tazbb/stuff/web/slitaz.css	Mon May 16 15:34:53 2011 +0200
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,447 +0,0 @@
    15.4 -/*
    15.5 -	CSS style for SliTaz Network - (c) 2011 SliTaz GNU/Linux
    15.6 -*/
    15.7 -
    15.8 -html {
    15.9 -	min-height:  102%;
   15.10 -}
   15.11 -body {
   15.12 -	background: #ffffff;
   15.13 -	color: black;
   15.14 -	font: 13px sans-serif, vernada, arial;
   15.15 -	margin: 0;
   15.16 -	border-top: 34px solid #f1f1f1;
   15.17 -}
   15.18 -a { text-decoration: underline; color: #103a5e; }
   15.19 -a:hover { text-decoration: none; color: blue; }
   15.20 -img { border: 0pt none; }
   15.21 -
   15.22 -/* Accessibility */
   15.23 -
   15.24 -#access {
   15.25 -	position: absolute;
   15.26 -	top: 4px;
   15.27 -	right: 0px;
   15.28 -	text-align: right;
   15.29 -	width: auto;
   15.30 -	margin: 0;
   15.31 -	padding: 4px 4px 4px 20px;
   15.32 -	font-size: 11px;
   15.33 -	font-weight: bold;
   15.34 -}
   15.35 -#access a {
   15.36 -	background: transparent;
   15.37 -	color: #0F314E;
   15.38 -	text-decoration: none;
   15.39 -}
   15.40 -#access a:hover { color: #b64b22; }
   15.41 -#access img { vertical-align: middle; }
   15.42 -
   15.43 -/* Header */
   15.44 -
   15.45 -#header {
   15.46 -	background: #351a0a url(pics/website/header-img.png) no-repeat top right;
   15.47 -	color: black;
   15.48 -	width: 100%;
   15.49 -	height: 42px;
   15.50 -	border-top: 1px solid black;
   15.51 -	border-bottom: 1px solid #999;
   15.52 -	margin-bottom: 33px;
   15.53 -}
   15.54 -#titre {
   15.55 -	position: absolute;
   15.56 -	font-size: 14px;
   15.57 -	font-weight: bolder ;
   15.58 -	left: 180px;
   15.59 -	top: 4px;
   15.60 -}
   15.61 -#logo {
   15.62 -	position: absolute;
   15.63 -	float: left;
   15.64 -	left: 16px;
   15.65 -	top: -10px;
   15.66 -	width: 200px;
   15.67 -	height: 74px;
   15.68 -}
   15.69 -
   15.70 -/* Side bar */
   15.71 -
   15.72 -#nav {
   15.73 -	position: absolute;
   15.74 -	top: 102px;
   15.75 -	right: 80px;
   15.76 -	color: #555555;
   15.77 -	float: right;
   15.78 -	width: 250px;
   15.79 -	line-height: 1.5em;
   15.80 -	text-align: left;
   15.81 -	font-size: 12px;
   15.82 -}
   15.83 -#nav h4 {
   15.84 -	font-size: 120%;
   15.85 -	color: #666666;
   15.86 -	font-weight: bold;
   15.87 -	margin: 0;
   15.88 -	padding: 0 0 1px 0;
   15.89 -	border-bottom: 1px solid #cecece;
   15.90 -}
   15.91 -#nav a {
   15.92 -	color: #0F314E;
   15.93 -	background: inherit;
   15.94 -	display: block;
   15.95 -	text-decoration: none;
   15.96 -	font-weight: bold;
   15.97 -}
   15.98 -#nav a:hover {
   15.99 -	color: #b64b22;
  15.100 -	text-decoration: none;
  15.101 -	display: block;
  15.102 -}
  15.103 -#nav .nav_box ul {
  15.104 -	list-style-type: none;
  15.105 -	margin: 0;
  15.106 -	padding: 10px 24px 10px 0px;
  15.107 -	background-color: inherit;
  15.108 -}
  15.109 -#nav li { display: inline; }
  15.110 -#nav ul {
  15.111 -	-moz-border-radius: 8px;
  15.112 -	-webkit-border-radius: 8px;
  15.113 -	border-radius: 8px;
  15.114 -	list-style-type: none;
  15.115 -	margin: 10px 0;
  15.116 -	padding: 10px 24px 10px 24px;
  15.117 -	background-color: #eaeaea;
  15.118 -}
  15.119 -.nav_box {
  15.120 -	margin: 10px 0;
  15.121 -	padding: 10px 24px 10px 24px;
  15.122 -	background-color: #eaeaea;
  15.123 -	text-align: justify;
  15.124 -}
  15.125 -#nav .nav_box p { line-height: 1.3em; }
  15.126 -#nav .nav_box p a {
  15.127 -	display: inline;
  15.128 -	font-weight: normal;
  15.129 -	text-decoration: underline;
  15.130 -}
  15.131 -#nav .nav_box p a:hover {
  15.132 -	text-decoration: none;
  15.133 -	color: blue;
  15.134 -	background: inherit;
  15.135 -}
  15.136 -
  15.137 -/* Page content */
  15.138 -
  15.139 -#content, #content-full {
  15.140 -	background: white;
  15.141 -	color: black;
  15.142 -	text-align: justify;
  15.143 -	height: auto;
  15.144 -}
  15.145 -#content, #content-full {
  15.146 -	margin: 6px 320px 0px 0px;
  15.147 -	padding: 0px 40px 60px 80px;
  15.148 -}
  15.149 -#content-full {
  15.150 -	margin: 0;
  15.151 -	padding: 0px 80px 40px 80px;
  15.152 -}
  15.153 -#content li, #content-full li {
  15.154 -	line-height: 1.5em;
  15.155 -	text-align: left;
  15.156 -}
  15.157 -#news li {
  15.158 -	list-style-type: square;
  15.159 -	border-bottom: 1px dotted #BEBEBE;
  15.160 -	margin-left: -25px;
  15.161 -	padding: 4px 0px 4px 0px;
  15.162 -}
  15.163 -#news a { text-decoration: none; }
  15.164 -
  15.165 -/* Box and block. */
  15.166 -
  15.167 -.infobox {
  15.168 -	margin: 20px 60px;
  15.169 -	padding: 12px;
  15.170 -	background: #f8f8f8;
  15.171 -}
  15.172 -.infobox img { vertical-align: middle; }
  15.173 -.infobox:hover { background-color: #FBFBFB; }
  15.174 -.block {
  15.175 -	/*padding-bottom: 35%;*/
  15.176 -	color: black;
  15.177 -	min-height: 200px;
  15.178 -	margin-bottom: 40px;
  15.179 -}
  15.180 -.block ul {
  15.181 -	list-style-type: none;
  15.182 -	margin: 0;
  15.183 -	padding: 0 20px;
  15.184 -}
  15.185 -.block_left {
  15.186 -	width: 46%;
  15.187 -	float: left;
  15.188 -	background-color: #eaeaea;
  15.189 -	margin: 4px 2px;
  15.190 -	padding: 0 10px 10px 10px;
  15.191 -}
  15.192 -.block_right {
  15.193 -	width: 46%;
  15.194 -	float: right;
  15.195 -	background-color: #eaeaea;
  15.196 -	margin: 4px 2px;
  15.197 -	padding: 0 10px 10px 10px;
  15.198 -}
  15.199 -#block_top {
  15.200 -	color: black;
  15.201 -	background-color: #eaeaea;
  15.202 -	min-height: 180px;
  15.203 -	margin-bottom: 40px;
  15.204 -	margin-right: 340px;
  15.205 -	padding: 0 10px;
  15.206 -}
  15.207 -#block_nav {
  15.208 -	width: 300px;
  15.209 -	min-height: 180px;
  15.210 -	float: right;
  15.211 -	background-color: #eaeaea;
  15.212 -	margin: 0;
  15.213 -	padding: 0 10px;
  15.214 -}
  15.215 -.nav_box, .infobox, .block_left, .block_right, #block_top, 
  15.216 -#block_nav, #footer {
  15.217 -	-moz-border-radius: 8px;
  15.218 -	-webkit-border-radius: 8px;
  15.219 -	border-radius: 8px;
  15.220 -	-moz-box-shadow: 0 1px 3px #666;
  15.221 -	-webkit-box-shadow: 0 1px 3px #666;
  15.222 -	box-shadow: 0 1px 3px #666;
  15.223 -	/* CSS3 transition */
  15.224 -	-webkit-transition-property: background-color;
  15.225 -	-webkit-transition-duration: 2s;
  15.226 -	-moz-transition-property: background-color;
  15.227 -	-moz-transition-duration: 2s;
  15.228 -	transition-property: background-color;
  15.229 -	transition-duration: 2s;
  15.230 -}
  15.231 -#block_nav { font-weight: bold; }
  15.232 -#block_nav a { text-decoration: none; }
  15.233 -#block_nav li a:hover { color: #b64b22; }
  15.234 -#block_nav ul { margin: 0; list-style-type: none; }
  15.235 -#block_nav h3 { font-size: 110%; }
  15.236 -.nav_box:hover, .block_left:hover, .block_right:hover, 
  15.237 -#block_top:hover, #block_nav:hover, #footer:hover { 
  15.238 -	background-color: #f8f8f8;
  15.239 -}
  15.240 -.right_box {
  15.241 -	width: 50%;
  15.242 -	float: right;
  15.243 -}
  15.244 -/* Text transform at 45deg */
  15.245 -.floor {
  15.246 -	color: #999999;
  15.247 -	font-size: 20px;
  15.248 -	-webkit-transform: rotate(-45deg) skew(15deg, 15deg);
  15.249 -	-moz-transform: rotate(-45deg) skew(15deg, 15deg);
  15.250 -	-o-transform: rotate(-45deg) skew(15deg, 15deg);
  15.251 -	-ms-transform: rotate(-45deg) skew(15deg, 15deg);
  15.252 -	transform: rotate(-45deg) skew(15deg, 15deg);
  15.253 -}
  15.254 -#twitter, .feedbox {
  15.255 -	margin-top: 20px;
  15.256 -	-moz-border-radius: 8px;
  15.257 -	-webkit-border-radius: 8px;
  15.258 -	border-radius: 8px;
  15.259 -	-moz-box-shadow: 0 1px 3px #666;
  15.260 -	-webkit-box-shadow: 0 1px 3px #666;
  15.261 -	box-shadow: 0 1px 3px #666;
  15.262 -}
  15.263 -.feedbox {
  15.264 -	background-color: #f9f9f9;
  15.265 -	padding: 10px 20px;
  15.266 -	margin: 20px 100px;
  15.267 -}
  15.268 -.feedbox div {
  15.269 -	height: 320px;
  15.270 -	overflow: auto;
  15.271 -}
  15.272 -.feedbox ul { list-style-type: none; margin: 0; }
  15.273 -
  15.274 -/* Button */
  15.275 -
  15.276 -.button { margin-left: 20px; }
  15.277 -.button a { 
  15.278 -	background-color: #b64b22;
  15.279 -	color: #ffffff;
  15.280 -	margin-right: 6px;
  15.281 -	padding: 6px 10px;
  15.282 -	font-size: 14px;
  15.283 -	-moz-border-radius: 4px;
  15.284 -	-webkit-border-radius: 4px;
  15.285 -	border-radius: 4px;
  15.286 -	-moz-box-shadow: 0 1px 3px #666;
  15.287 -	-webkit-box-shadow: 0 1px 3px #666;
  15.288 -	box-shadow: 0 1px 3px #666;
  15.289 -}
  15.290 -.button a:hover, input[type=submit]:hover { 
  15.291 -	background-color: #a3431f;
  15.292 -	color: #ffffff;
  15.293 -}
  15.294 -input[type=submit] {
  15.295 -	border: 1px solid #b64b22;
  15.296 -	background-color: #b64b22;
  15.297 -	color: white;
  15.298 -	font-weight: bold;
  15.299 -	cursor: pointer;
  15.300 -	padding: 3px 10px;
  15.301 -	font-size: 14px;
  15.302 -	-moz-border-radius: 2px;
  15.303 -	-webkit-border-radius: 2px;
  15.304 -	border-radius: 2px;
  15.305 -	-moz-box-shadow: 0 0 5px #666;
  15.306 -	-webkit-box-shadow: 0 0 5px#666;
  15.307 -	box-shadow: 0 0 5px #666;
  15.308 -	margin-left: -5px;
  15.309 -}
  15.310 -input[type=text] {
  15.311 -	border: 1px solid #333333;
  15.312 -	padding: 3px;
  15.313 -	width: 100%;
  15.314 -}
  15.315 -
  15.316 -/* Clouds */
  15.317 -
  15.318 -#cloud {
  15.319 -	padding: 10px 0px;
  15.320 -	line-height: 3em;
  15.321 -	text-align: center;
  15.322 -}
  15.323 -#cloud a { padding: 0 2px; color: #444444; }
  15.324 -#cloud a.tag1 { font-size: 0.7em; font-weight: 100; }
  15.325 -#cloud a.tag2 { font-size: 0.8em; font-weight: 200; }
  15.326 -#cloud a.tag3 { font-size: 0.9em; font-weight: 300; }
  15.327 -#cloud a.tag4 { font-size: 1.0em; font-weight: 400; }
  15.328 -#cloud a.tag5 { font-size: 1.2em; font-weight: 500; }
  15.329 -#cloud a.tag6 { font-size: 1.4em; font-weight: 600; }
  15.330 -#cloud a.tag7 { font-size: 1.6em; font-weight: 700; }
  15.331 -#cloud a.tag8 { font-size: 1.8em; font-weight: 800; }
  15.332 -#cloud a.tag9 { font-size: 2.2em; font-weight: 900; }
  15.333 -#cloud a.tag10 { font-size: 2.5em; font-weight: 900; }
  15.334 -
  15.335 -/* Slideshow and gallery */
  15.336 -
  15.337 -#slideshow
  15.338 -{
  15.339 -	overflow: hidden;
  15.340 -	margin: 10px auto 10px;
  15.341 -	position: relative;
  15.342 -	width: 260px;
  15.343 -	height: 163px;
  15.344 -}
  15.345 -#slideshow img
  15.346 -{
  15.347 -	border: 0;
  15.348 -	width: 260px;
  15.349 -	height: 163px;
  15.350 -}
  15.351 -#gallery { text-align: center; }
  15.352 -
  15.353 -/* HTML styles */
  15.354 -
  15.355 -h1 {
  15.356 -	color: #444444;
  15.357 -	background: transparent;
  15.358 -	text-align: left;
  15.359 -	margin: 0px 0px 4px 0px;
  15.360 -	font-size: 150%;
  15.361 -	font-weight: bold;
  15.362 -	padding: 5px 0 0 10px;
  15.363 -}
  15.364 -h2 {
  15.365 -	color: #b64b22;
  15.366 -	padding: 0;
  15.367 -	margin: 20px 0 0 0;
  15.368 -	font-size: 130%;
  15.369 -	font-weight: bold;
  15.370 -}
  15.371 -h3 {
  15.372 -	font-weight: bold;
  15.373 -	color: #666666;
  15.374 -	background: transparent;
  15.375 -}
  15.376 -h3 img, h2 img { 
  15.377 -	vertical-align: middle;
  15.378 -	width: 20px;
  15.379 -	height: 20px;
  15.380 -	padding-right: 4px; 
  15.381 -}
  15.382 -code, tt {
  15.383 -	font-size: 12px;
  15.384 -	color: #669900;
  15.385 -}
  15.386 -pre, pre.script {
  15.387 -	padding: 10px;
  15.388 -	color: black;
  15.389 -	background: #E8E8E8;
  15.390 -	border: 1px inset #606060;
  15.391 -}
  15.392 -
  15.393 -/* Packages pages */
  15.394 -
  15.395 -.pkg_nav {
  15.396 -	border-top: 1px solid black;
  15.397 -	margin-top: 10px;
  15.398 -	padding-top: 10px;
  15.399 -}
  15.400 -pre.package {
  15.401 -	padding: 0px;
  15.402 -	color: black;
  15.403 -	background: white;
  15.404 -	border: 0px solid white;
  15.405 -}
  15.406 -p.get {
  15.407 -	text-align: center;
  15.408 -	padding: 10px;
  15.409 -	color: black;
  15.410 -	background: #F3F3F3;
  15.411 -	border: 1px solid #DEDEDE;
  15.412 -	border-radius: 4px;
  15.413 -	-moz-border-radius: 4px;
  15.414 -	-webkit-border-radius: 4px;
  15.415 -}
  15.416 -p.get a {
  15.417 -	font-weight: bold;
  15.418 -	text-decoration: none;
  15.419 -}
  15.420 -.pkgs-search { 
  15.421 -	text-align: center; 
  15.422 -	padding: 40px 20px 80px 20px;
  15.423 -}
  15.424 -
  15.425 -/* Footer */
  15.426 -
  15.427 -#footer {
  15.428 -	margin: 0px 80px 80px 80px;
  15.429 -	padding: 10px;
  15.430 -	background: #eaeaea;
  15.431 -	color: #666666;
  15.432 -	height: 180px;
  15.433 -	clear: both;
  15.434 -	border-radius: 8px;
  15.435 -	-moz-border-radius: 8px;
  15.436 -	-webkit-border-radius: 8px;
  15.437 -	-moz-box-shadow: 0 1px 3px #666;
  15.438 -	-webkit-box-shadow: 0 1px 3px #666;
  15.439 -	box-shadow: 0 1px 3px #666;
  15.440 -}
  15.441 -#footer a { color: #666666; }
  15.442 -#footer a:hover { color: #333333; }
  15.443 -#footer ul { list-style-type: none; }
  15.444 -#footer li { padding: 2px; }
  15.445 -#footer h4 { margin: 0 20px; font-size: 125%; }
  15.446 -
  15.447 -.year:after {
  15.448 -	/* content: "2007-2011"; */
  15.449 -	content: "2011";
  15.450 -}