wok-6.x rev 4447

tazbb: generate flavors
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Nov 07 16:24:17 2009 +0100 (2009-11-07)
parents 233ec9b6af94
children 07f545025e36
files tazbb/receipt tazbb/stuff/tazbb tazbb/stuff/tazbb.conf tazbb/stuff/web/index.php
line diff
     1.1 --- a/tazbb/receipt	Thu Nov 05 19:41:12 2009 +0000
     1.2 +++ b/tazbb/receipt	Sat Nov 07 16:24:17 2009 +0100
     1.3 @@ -32,9 +32,9 @@
     1.4  		cp -a $1/var/lib/tazbb/web/* $1/home/slitaz/www/bb
     1.5  		chown www.www $1/home/slitaz/www/bb
     1.6  	else
     1.7 -	mkdir -p $1/var/www/vhosts
     1.8 -	ln -s $1/var/lib/tazbb/web $1/var/www/vhosts/bb
     1.9 -cat << _EOT_
    1.10 +		mkdir -p $1/var/www/vhosts
    1.11 +		ln -s $1/var/lib/tazbb/web $1/var/www/vhosts/bb
    1.12 +		cat << _EOT_
    1.13  
    1.14  To have a Tazbb web interface on your local system, you can add a vhost
    1.15  to Lighttpd (or Apache) and the hostname to /etc/hosts. Example for Lighty:
     2.1 --- a/tazbb/stuff/tazbb	Thu Nov 05 19:41:12 2009 +0000
     2.2 +++ b/tazbb/stuff/tazbb	Sat Nov 07 16:24:17 2009 +0100
     2.3 @@ -118,6 +118,9 @@
     2.4  	echo "Cooklist"
     2.5  	echo "================================================================================"
     2.6  	cat $DB_DIR/cooklist && echo ""
     2.7 +	echo "Packlist"
     2.8 +	echo "================================================================================"
     2.9 +	cat $DB_DIR/packlist && echo ""
    2.10  	echo "Blocked"
    2.11  	echo "================================================================================"
    2.12  	cat $DB_DIR/blocked && echo ""
    2.13 @@ -132,7 +135,22 @@
    2.14  
    2.15  update_wok()
    2.16  {
    2.17 +	local forced
    2.18 +	forced=""
    2.19  	echo ""
    2.20 +	echo "(updating flavors)" > $DB_DIR/running
    2.21 +	cd $HG_FLAVORS
    2.22 +	LAST_REV=`hg head --template '{rev}\n'`
    2.23 +	hg pull && hg update
    2.24 +	NEW_REV=`hg head --template '{rev}\n'`
    2.25 +	if [ "$NEW_REV" != "$LAST_REV" ]; then
    2.26 +		size=`du -sh $HG_FLAVORS | awk '{ print $1 }'`
    2.27 +		echo -n "Copying Hg flavors to the build flavors ($size)... "
    2.28 +		cp -a $HG_FLAVORS/* $BUILD_FLAVORS
    2.29 +		cp -a $HG_FLAVORS/.hg $BUILD_FLAVORS
    2.30 +		echo -e "Done\n"
    2.31 +		forced="yes"
    2.32 +	fi
    2.33  	echo "(updating wok)" > $DB_DIR/running
    2.34  	cd $HG_WOK
    2.35  	LAST_REV=`hg head --template '{rev}\n'`
    2.36 @@ -153,7 +171,7 @@
    2.37  		echo -e "Done\n"
    2.38  	else
    2.39  		if [ "$1" = "cook-all" ] || [ "$1" = "cook-commit" ]; then
    2.40 -			if [ "$2" != "--forced" ]; then
    2.41 +			if [ "$2" != "--forced" -a -z "$forced" ]; then
    2.42  				echo -e "Nothing to cook...\n"
    2.43  				packages_summary
    2.44  				rm -f $LOCK_FILE && exit 0
    2.45 @@ -162,6 +180,62 @@
    2.46  	fi
    2.47  }
    2.48  
    2.49 +# Running 'tazbb report' should not pack anything and --verbose option
    2.50 +# can be used to display more messages.
    2.51 +check_flavors()
    2.52 +{
    2.53 +	# Clean up last results.
    2.54 +	rm -f $DB_DIR/packlist && touch $DB_DIR/packlist
    2.55 +	echo ""
    2.56 +	echo "Checking all files in: $HG_FLAVORS"
    2.57 +	echo "================================================================================"
    2.58 +	echo "(checking flavors)" > $DB_DIR/running
    2.59 +	for flavor in $(cd $HG_FLAVORS ; ls)
    2.60 +	do
    2.61 +		[ "$2" = "--verbose" ] && echo "Flavor : $flavor"
    2.62 +		if [ ! -s $PACKAGES_REPOSITORY/$flavor.flavor ]; then
    2.63 +			echo $flavor >> $DB_DIR/packlist
    2.64 +			[ "$1" = "report" ] && echo "Missing : $flavor"
    2.65 +			echo "Missing flavor : $flavor" >> $DB_DIR/report
    2.66 +			continue
    2.67 +		fi
    2.68 +		for i in $(find $HG_FLAVORS -type f); do
    2.69 +			[ $PACKAGES_REPOSITORY/$flavor.flavor -nt \
    2.70 +			  $i ] && continue
    2.71 +			echo $flavor >> $DB_DIR/packlist
    2.72 +			[ "$1" = "report" ] && echo "Refresh : $flavor"
    2.73 +			echo "Refresh flavor : $flavor" >> $DB_DIR/report
    2.74 +			continue 2
    2.75 +		done
    2.76 +		[ -s $HG_FLAVORS/$flavor/packages.list ] &&
    2.77 +		for i in $(cat $HG_FLAVORS/$flavor/packages.list); do
    2.78 +			[ $PACKAGES_REPOSITORY/$flavor.flavor -nt \
    2.79 +			  $BUILD_WOK/$i/taz ] && continue
    2.80 +			echo $flavor >> $DB_DIR/packlist
    2.81 +			[ "$1" = "report" ] && echo "Repack : $flavor"
    2.82 +			echo "Repack flavor : $flavor" >> $DB_DIR/report
    2.83 +			continue 2
    2.84 +		done
    2.85 +	done
    2.86 +}
    2.87 +
    2.88 +# Here we pack all flavors found in the packlist.
    2.89 +pack_flavors()
    2.90 +{
    2.91 +	[ -s $DB_DIR/packlist ] || return
    2.92 +	[ $PACKAGES_REPOSITORY/packages.list -nt /var/lib/tazpkg/packages.list ] &&
    2.93 +	cp -a $PACKAGES_REPOSITORY/packages.list /var/lib/tazpkg/packages.list
    2.94 +	cd $PACKAGES_REPOSITORY
    2.95 +	for flavor in $(cat $DB_DIR/packlist)
    2.96 +	do
    2.97 +		tazlito pack-flavor $flavor
    2.98 +		# Remove flavor from the packlist and empty lines for HTML <pre>.
    2.99 +		sed -i /"^$flavor$"/d $DB_DIR/packlist
   2.100 +		sed -i '/^$/d' $DB_DIR/packlist
   2.101 +	done
   2.102 +	cd - > /dev/null
   2.103 +}
   2.104 +
   2.105  # Running 'tazbb report' should not cook anything and --verbose option
   2.106  # can be used to display more messages.
   2.107  check_wok()
   2.108 @@ -184,9 +258,8 @@
   2.109  			echo "Blocked : $PACKAGE ($VERSION)" && continue
   2.110  		fi
   2.111  
   2.112 -		# Bristuff hack until the receipt are improved...
   2.113 -		#[ "$VERSION" = "bristuff" ] && VERSION=`get_version`
   2.114 -		if [ "$VERSION" = "bristuff" ]; then
   2.115 +		# Some packages may compute VERSION at cook time (bristuff)
   2.116 +		if grep -q ^get_version $pkg/receipt; then
   2.117  			. $BUILD_WOK/$PACKAGE/taz/*/receipt
   2.118  		fi
   2.119  
   2.120 @@ -477,6 +550,18 @@
   2.121  	echo ""
   2.122  }
   2.123  
   2.124 +# Generate flavor list
   2.125 +gen_flavor_list()
   2.126 +{
   2.127 +	cd $PACKAGES_REPOSITORY
   2.128 +	noheader=""
   2.129 +	for i in *.flavor; do
   2.130 +		tazlito show-flavor $i --brief $noheader
   2.131 +		noheader="--noheader"
   2.132 +	done > flavors.list
   2.133 +	cd - > /dev/null
   2.134 +}
   2.135 +
   2.136  case "$1" in
   2.137  	list-pkgs)
   2.138  		# List last cooked packages.
   2.139 @@ -486,6 +571,7 @@
   2.140  		# rebuild all updated packages.
   2.141  		[ "$2" == "--update" ] && update_wok $@ || echo ""
   2.142  		check_wok $@
   2.143 +		check_flavors $@
   2.144  		test_packages $@
   2.145  		show_report ;;
   2.146  	cook)
   2.147 @@ -510,6 +596,9 @@
   2.148  		check_wok $@
   2.149  		echo "(generating lists)" > $DB_DIR/running
   2.150  		tazwok gen-list --text
   2.151 +		check_flavors $@
   2.152 +		pack_flavors
   2.153 +		gen_flavor_list
   2.154  		echo "" ;;
   2.155  	cook-commit)
   2.156  		# Cook all packages affected by the last commits in the wok.
   2.157 @@ -522,6 +611,9 @@
   2.158  		check_wok $@
   2.159  		echo "(generating lists)" > $DB_DIR/running
   2.160  		tazwok gen-list --text
   2.161 +		check_flavors $@
   2.162 +		pack_flavors
   2.163 +		gen_flavor_list
   2.164  		echo "" ;;
   2.165  	block)
   2.166  		# Add a pkg name to the list of blocked packages.
     3.1 --- a/tazbb/stuff/tazbb.conf	Thu Nov 05 19:41:12 2009 +0000
     3.2 +++ b/tazbb/stuff/tazbb.conf	Sat Nov 07 16:24:17 2009 +0100
     3.3 @@ -4,6 +4,8 @@
     3.4  # Wok's and packages path.
     3.5  HG_WOK="/home/slitaz/hg/wok"
     3.6  BUILD_WOK="/home/slitaz/wok"
     3.7 +HG_FLAVORS="/home/slitaz/hg/flavors"
     3.8 +BUILD_FLAVORS="/home/slitaz/flavors"
     3.9  PACKAGES_REPOSITORY="/home/slitaz/packages"
    3.10  
    3.11  # Log files, database and lock file.
     4.1 --- a/tazbb/stuff/web/index.php	Thu Nov 05 19:41:12 2009 +0000
     4.2 +++ b/tazbb/stuff/web/index.php	Sat Nov 07 16:24:17 2009 +0100
     4.3 @@ -129,6 +129,14 @@
     4.4  ?>
     4.5  </pre>
     4.6  
     4.7 +<h3>Last cooked flavors</h3>
     4.8 +<pre class="package">
     4.9 +<?php
    4.10 +system("cd $packages && ls -1t *.flavor | head -20 | \
    4.11 +	while read file; do echo -n \$(stat -c '%y' $packages/\$file | \
    4.12 +	cut -d. -f1); echo '   '\$file; done"); ?>
    4.13 +</pre>
    4.14 +
    4.15  <!-- End of content with round corner -->
    4.16  </div>
    4.17  <div id="content_bottom">