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