cookutils diff cookiso @ rev 732

cook: extra.list is created on mirror, not on tank
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun May 10 12:47:10 2015 +0200 (2015-05-10)
parents 1bcdba9d34f0
children d2668c48792f
line diff
     1.1 --- a/cookiso	Thu Apr 09 12:54:34 2015 +0200
     1.2 +++ b/cookiso	Sun May 10 12:47:10 2015 +0200
     1.3 @@ -9,23 +9,24 @@
     1.4  # SSH/RSA configuration to upload on a server.
     1.5  # Assign this before cook.conf so it can be
     1.6  # reassigned in cook.conf.
     1.7 -SSH_CMD="dbclient -i /root/.ssh/id_rsa.dropbear"
     1.8 -SSH_ISO="/var/www/slitaz/mirror/iso"
     1.9 -SSH_HOST="slitaz@mirror1.slitaz.org"
    1.10 +SSH_CMD='dbclient -i /root/.ssh/id_rsa.dropbear'
    1.11 +SSH_ISO='/var/www/slitaz/mirror/iso'
    1.12 +SSH_HOST='slitaz@mirror1.slitaz.org'
    1.13  #BWLIMIT="--bwlimit=40"
    1.14  
    1.15  . /usr/lib/slitaz/libcook.sh
    1.16  
    1.17 +
    1.18  # Parse cmdline options.
    1.19 -for opt in "$@"
    1.20 -do
    1.21 +
    1.22 +for opt in "$@"; do
    1.23  	case "$opt" in
    1.24  		--force)
    1.25 -			force="yes" ;;
    1.26 +			force='yes' ;;
    1.27  		--pkgdb)
    1.28  			cook pkgdb --flavors ;;
    1.29  		--push)
    1.30 -			push="yes" ;;
    1.31 +			push='yes' ;;
    1.32  		--flavors=*)
    1.33  			flavors=${opt#--flavors=} ;;
    1.34  		--version=*)
    1.35 @@ -33,31 +34,32 @@
    1.36  	esac
    1.37  done
    1.38  
    1.39 +
    1.40  # Default to rolling, or: cookiso [cmd] --version=stable
    1.41 +
    1.42  case "$version" in
    1.43 -	stable)
    1.44 -		string=stable ;;
    1.45 -	cooking)
    1.46 -		string=cooking ;;
    1.47 -	*)
    1.48 -		version=cooking
    1.49 -		string=rolling ;;
    1.50 +	stable)  string='stable' ;;
    1.51 +	cooking) string='cooking' ;;
    1.52 +	*)       string='rolling'; version='cooking' ;;
    1.53  esac
    1.54  
    1.55 +
    1.56  # Running command
    1.57 +
    1.58  [ -d "$cache" ] && echo "$@" > $command
    1.59  trap 'rm -f $command && exit 1' INT TERM
    1.60  
    1.61 +
    1.62  #
    1.63  # Functions
    1.64  #
    1.65  
    1.66  usage() {
    1.67 -	cat << EOT
    1.68 +	cat <<EOT
    1.69  
    1.70 -$(echo -e "\033[1mUsage:\033[0m") cookiso [command] [--option]
    1.71 +$(boldify "Usage:") cookiso [command] [--option]
    1.72  
    1.73 -$(echo -e "\033[1mCommands:\033[0m")
    1.74 +$(boldify "Commands:")
    1.75    usage         Display this short usage.
    1.76    setup         Setup Cookiso build environment.
    1.77    push          Manually push ISO to a server via SSH.
    1.78 @@ -65,7 +67,7 @@
    1.79    4in1          Generate all 4in1 flavors.
    1.80    rolling       Build the rolling ISOs if any changes.
    1.81  
    1.82 -$(echo -e "\033[1mOptions:\033[0m")
    1.83 +$(boldify "Options:")
    1.84    --force       Build ISO rolling anyway.
    1.85    --pkgdb       Generate packages DB before building ISO.
    1.86    --push        Upload freshly generated ISO to a server.
    1.87 @@ -75,51 +77,56 @@
    1.88  EOT
    1.89  }
    1.90  
    1.91 +
    1.92  spider() {
    1.93 -	echo '  //  \\'
    1.94 -	echo ' _\\()//_'
    1.95 -	echo '/ //  \\ \\'
    1.96 -	echo ' | \__/ |'
    1.97 +	echo -e '  //  \\\\\n _\\\\()//_\n/ //  \\\\ \\\n | \\__/ |'
    1.98  }
    1.99  
   1.100 +
   1.101  # Check for some flavors on cmdline
   1.102 +
   1.103  flavors_list() {
   1.104 -	if [ "$flavors" == "all" ]; then
   1.105 +	if [ "$flavors" == 'all' ]; then
   1.106  		flavors=$(ls $SLITAZ/flavors)
   1.107  	fi
   1.108 -	if [ ! "$flavors" ]; then
   1.109 -		echo "No flavor specified on cmdline. Use: --flavors="
   1.110 -		rm -f $command && exit 0
   1.111 +	if [ -z "$flavors" ]; then
   1.112 +		echo 'No flavor specified on cmdline. Use: --flavors='
   1.113 +		rm -f $command
   1.114 +		exit 0
   1.115  	fi
   1.116  }
   1.117  
   1.118 +
   1.119  # Log activities, we want first letter capitalized.
   1.120 +
   1.121  log() {
   1.122  	grep ^[A-Z] | \
   1.123 -		sed s"#^[A-Z]\([^']*\)#$(date '+%Y-%m-%d %H:%M') : \0#" >> $activity
   1.124 +		sed s"#^[A-Z]\([^']*\)#$(date '+%F %R') : \0#" >> $activity
   1.125  }
   1.126  
   1.127 +
   1.128  log_bot() {
   1.129  	sed '/^.\//'d | sed '/^.hg/'d | tee -a $rollog
   1.130  }
   1.131  
   1.132 +
   1.133  # Generate requested flavors.
   1.134 +
   1.135  gen_flavors() {
   1.136  	cd $SLITAZ/flavors
   1.137  	[ -d ".hg" ] && hg pull -u
   1.138 -	mkdir -p $cache && cd $cache
   1.139 +	mkdir -p $cache; cd $cache
   1.140  	rm -rf *.flavor *.list *.conf *.sh
   1.141 -	for flavor in $flavors
   1.142 -	do
   1.143 -		if [ "$flavor" != "core-4in1" ]; then
   1.144 +	for flavor in $flavors; do
   1.145 +		if [ "$flavor" != 'core-4in1' ]; then
   1.146  			name="slitaz-$string-$flavor"
   1.147  		else
   1.148  			name="slitaz-$string"
   1.149  		fi
   1.150 -		log=$iso/$name.log
   1.151 -		rm -f $log && touch $log
   1.152 +		log="$iso/$name.log"
   1.153 +		rm -f $log; touch $log
   1.154  		echo "Building $string <a href='?distro=$string-$flavor'>$flavor</a>" | log
   1.155 -		echo "Cookiso started: $(date '+%Y-%m-%d %H:%M')" | tee -a $log
   1.156 +		echo "Cookiso started: $(date '+%F %R')" | tee -a $log
   1.157  		tazlito pack-flavor $flavor | tee -a $log
   1.158  		tazlito get-flavor $flavor | tee -a $log
   1.159  		# BUG: script sometimes screws up conspy on Tank
   1.160 @@ -128,26 +135,30 @@
   1.161  		# Rename ISO and md5
   1.162  		echo "Moving ISO to: $iso/$name.iso" | tee -a $log
   1.163  		mv -f $SLITAZ/distro/slitaz-$flavor.iso $iso/$name.iso
   1.164 -		cd $iso && md5sum $name.iso > $name.md5
   1.165 -		echo "Cookiso ended: $(date '+%Y-%m-%d %H:%M')" | tee -a $log
   1.166 -	done && echo ""
   1.167 +		cd $iso; md5sum $name.iso > $name.md5
   1.168 +		echo "Cookiso ended: $(date '+%F %R')" | tee -a $log
   1.169 +	done
   1.170 +	newline
   1.171 +
   1.172  	# Push ISO to mirror if requested.
   1.173 -	[ "$push" ] && push_iso
   1.174 +	[ -n "$push" ] && push_iso
   1.175  }
   1.176  
   1.177 +
   1.178  # Push an ISO to a server.
   1.179 +
   1.180  push_iso() {
   1.181  	echo "Pushing to host: ${SSH_HOST}"
   1.182  	export DROPBEAR_PASSWORD=none
   1.183 -	for flavor in $flavors
   1.184 -	do
   1.185 -		distro=slitaz-${string}-$flavor
   1.186 -		file=${distro%-core-4in1}
   1.187 +	for flavor in $flavors; do
   1.188 +		distro="slitaz-${string}-$flavor"
   1.189 +		file="${distro%-core-4in1}"
   1.190  		rsync $BWLIMIT -vtP -e "$SSH_CMD" $iso/$file.* \
   1.191  			${SSH_HOST}:$SSH_ISO/$string 2>&1 | tee $synclog
   1.192  	done
   1.193  }
   1.194  
   1.195 +
   1.196  #
   1.197  # Commands
   1.198  #
   1.199 @@ -165,34 +176,39 @@
   1.200  					hg clone $FLAVORS_URL-stable flavors ;;
   1.201  			esac
   1.202  		fi
   1.203 +
   1.204  		# Needed packages
   1.205 -		for pkg in mercurial tazlito rsync dropbear
   1.206 -		do
   1.207 -			[ -d "$INSTALLED/$pkg" ] || tazpkg -gi $pkg
   1.208 +		for pkg in mercurial tazlito rsync dropbear; do
   1.209 +			[ ! -d "$INSTALLED/$pkg" ] && tazpkg -gi $pkg
   1.210  		done
   1.211 -		echo "Creating directories and files..."
   1.212 +
   1.213 +		echo 'Creating directories and files...'
   1.214  		mkdir -p $cache $iso
   1.215  		touch $activity
   1.216 -		sed -i s'/^WORK_DIR=.*/WORK_DIR="\/home\/slitaz"/' \
   1.217 +		sed -i s'/^WORK_DIR=.*/WORK_DIR="\/home\/slitaz"/' 
   1.218  			/etc/tazlito/tazlito.conf
   1.219 -		echo ""
   1.220 +		newline
   1.221  		echo "Flavors files : $SLITAZ/flavors"
   1.222  		echo "Cache files   : $cache"
   1.223  		echo "ISO images    : $iso"
   1.224 -		echo "" ;;
   1.225 +		mewline ;;
   1.226 +
   1.227  	push)
   1.228  		# Manually upload an ISO to a server.
   1.229  		flavors_list
   1.230  		push_iso ;;
   1.231 +
   1.232  	gen)
   1.233  		# Build one or more flavors.
   1.234  		flavors_list
   1.235  		echo -e "\nGenerating flavors:\n$flavors"
   1.236  		gen_flavors ;;
   1.237 +
   1.238  	4in1)
   1.239  		echo -e "\nGenerating 4in1 distros..."
   1.240  		flavors="base justx gtkonly core core-4in1"
   1.241  		gen_flavors ;;
   1.242 +
   1.243  	rolling)
   1.244  		#
   1.245  		# Official SliTaz rolling release flavors are automatically built.
   1.246 @@ -200,50 +216,47 @@
   1.247  		# Check if packages list was modified or if any commits have been
   1.248  		# done in one of the rolling flavors and rebuild ISOs if needed.
   1.249  		#
   1.250 -		pkgs=$SLITAZ/packages/packages.md5
   1.251 -		last=$cache/packages.md5
   1.252 -		diff=$cache/packages.diff
   1.253 +		pkgs="$SLITAZ/packages/packages.md5"
   1.254 +		last="$cache/packages.md5"
   1.255 +		diff="$cache/packages.diff"
   1.256  		cook="preinit core-4in1 core core64"
   1.257 -		
   1.258 +
   1.259  		# Log stuff
   1.260 -		rm -f $rollog && touch $rollog
   1.261 -		rm -f $commit $commits.tmp && touch $commits.tmp
   1.262 -		echo "Rolling tracking for changes" | log
   1.263 -		echo "Cookiso rolling started: $(date '+%Y-%m-%d %H:%M')" | log_bot
   1.264 -		
   1.265 +		rm -f $rollog; touch $rollog
   1.266 +		rm -f $commit $commits.tmp; touch $commits.tmp
   1.267 +		echo 'Rolling tracking for changes' | log
   1.268 +		echo "Cookiso rolling started: $(date '+%F %R')" | log_bot
   1.269 +
   1.270  		# Packages changes
   1.271 -		[ -f "$last" ] || cp -f $pkgs $cache
   1.272 -		diff $last $pkgs > $diff 
   1.273 +		[ ! -f "$last" ] && cp -f $pkgs $cache
   1.274 +		diff $last $pkgs > $diff
   1.275  		if [ "$force" ] || [ -s "$diff" ]; then
   1.276 -			echo "Found new or rebuilt packages" | log_bot
   1.277 +			echo 'Found new or rebuilt packages' | log_bot
   1.278  			cat $diff | grep "^+" >> $rollog
   1.279  			#
   1.280  			# TODO: Check new pkg and see if it's part of one of the rolling
   1.281  			# flavors, if not we have nothing to build.
   1.282  			#
   1.283 -			for flavor in $cook
   1.284 -			do
   1.285 +			for flavor in $cook; do
   1.286  				echo "$flavor" >> $commits.tmp
   1.287  				echo "New packages for : $flavor" | log_bot
   1.288  			done
   1.289  		else
   1.290 -			echo "No changes found in packages MD5 sum" | log_bot
   1.291 -			echo "" > $commits.tmp
   1.292 +			echo 'No changes found in packages MD5 sum' | log_bot
   1.293 +			echo '' > $commits.tmp
   1.294  		fi
   1.295  		cp -f $pkgs $cache
   1.296 -		
   1.297 +
   1.298  		# Hg changes
   1.299  		cd $repo || exit 1
   1.300  		cur=$(hg head --template '{rev}\n')
   1.301 -		echo "Updating wok : $repo (rev $cur)" | log_bot 
   1.302 -		cd $repo && hg pull -u | log_bot 
   1.303 -		new=$(hg head --template '{rev}\n') 
   1.304 +		echo "Updating wok : $repo (rev $cur)" | log_bot
   1.305 +		cd $repo; hg pull -u | log_bot
   1.306 +		new=$(hg head --template '{rev}\n')
   1.307  		cur=$(($cur + 1))
   1.308 -		for rev in $(seq $cur $new)
   1.309 -		do
   1.310 -			for file in $(hg log --rev=$rev --template "{files}")
   1.311 -			do
   1.312 -				flavor=$(echo $file | cut -d "/" -f 1)
   1.313 +		for rev in $(seq $cur $new); do
   1.314 +			for file in $(hg log --rev=$rev --template "{files}"); do
   1.315 +				flavor=$(echo $file | cut -d/ -f1)
   1.316  				desc=$(hg log --rev=$rev --template "{desc}" $file)
   1.317  				echo "Committed flavor  : $flavor - $desc" | log_bot
   1.318  				# Build only rolling flavor
   1.319 @@ -252,7 +265,7 @@
   1.320  				fi
   1.321  			done
   1.322  		done
   1.323 -		
   1.324 +
   1.325  		# Keep previous commit and discard duplicate lines
   1.326  		cat $commits.tmp | sed /"^$"/d > $commits.new
   1.327  		uniq $commits.new > $commits && rm $commits.*
   1.328 @@ -260,9 +273,11 @@
   1.329  		echo "Flavors to cook  : $nb" | log_bot
   1.330  		flavors=$(cat $commits) 
   1.331  		gen_flavors ;;
   1.332 +
   1.333  	spider)
   1.334  		# SliTaz Easter egg command :-)
   1.335  		spider ;;
   1.336 +
   1.337  	*)
   1.338  		usage ;;
   1.339  esac