slitaz-pizza annotate pizza-bot @ rev 10
Add flavor name to main log
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sun Mar 25 23:31:25 2012 +0200 (2012-03-25) |
parents | a5164f0bb461 |
children | 41980f21c33e |
rev | line source |
---|---|
pankso@3 | 1 #!/bin/sh |
pankso@3 | 2 # |
pankso@3 | 3 # SliTaz Pizza chroot cmdline utility. This tool is designed to be run |
paul@9 | 4 # by cron and automatically build flavors in the queue. We build one ISO |
paul@9 | 5 # at once so we don't use too many resources. |
pankso@3 | 6 # |
pankso@3 | 7 # Copyright (C) 2012 SliTaz GNU/Linux - GNU gpl v2 |
pankso@3 | 8 # Authors : Christophe Lincoln <pankso@slitaz.org> |
pankso@3 | 9 # |
pankso@3 | 10 |
pankso@3 | 11 . /etc/slitaz/pizza-bot.conf |
pankso@3 | 12 |
pankso@3 | 13 # Pizza DB files. |
pankso@3 | 14 pizza="/home/slitaz" |
pankso@3 | 15 cache="$pizza/cache" |
pankso@3 | 16 queue="$pizza/queue" |
pankso@3 | 17 activity="$cache/activity" |
pankso@3 | 18 public="$pizza/public" |
pankso@3 | 19 builds="$cache/builds" |
pankso@3 | 20 lockfile="/var/lock/pizza.lock" |
pankso@3 | 21 feeds="$pizza/xml" |
pankso@3 | 22 |
pankso@3 | 23 # Log activities, we want first letter capitalized. |
pankso@3 | 24 log() { |
pankso@3 | 25 grep ^[A-Z] | \ |
pankso@3 | 26 sed s"#^[A-Z]\([^']*\)#$(date '+%Y-%m-%d %H:%M') : \0#" >> $activity |
pankso@3 | 27 } |
pankso@3 | 28 |
pankso@3 | 29 # Clean exit. |
pankso@3 | 30 quit() { |
pankso@3 | 31 rm -f $lockfile |
pankso@3 | 32 exit 0 |
pankso@3 | 33 } |
pankso@3 | 34 |
paul@9 | 35 # Create a XML feed for freshly built flavor. |
pankso@3 | 36 gen_rss() { |
pankso@3 | 37 pubdate=$(date "+%a, %d %b %Y %X") |
pankso@3 | 38 cat > $feeds/slitaz-$ID.xml << EOT |
pankso@3 | 39 <item> |
pankso@3 | 40 <title>$FLAVOR $VERSION</title> |
pankso@3 | 41 <link>${PIZZA_URL}?id=$ID</link> |
pankso@3 | 42 <guid>slitaz-$ID</guid> |
pankso@3 | 43 <pubDate>$pubdate</pubDate> |
pankso@3 | 44 <description>$SHORT_DESC</description> |
pankso@3 | 45 </item> |
pankso@3 | 46 EOT |
pankso@3 | 47 } |
pankso@3 | 48 |
pankso@3 | 49 # Mail body. |
pankso@3 | 50 mail_body() { |
pankso@3 | 51 md5=$(cat $public/slitaz-$ID/$FLAVOR.md5 | awk '{print $1}') |
pankso@3 | 52 cat << EOT |
pankso@3 | 53 From: SliTaz Pizza <pizza@$MAIL_DOMAIN> |
pankso@3 | 54 To: $MAINTAINER |
pankso@3 | 55 Date: $(date '+%a, %d %b %Y %H:%M:%S %z') |
pankso@3 | 56 Subject: Flavor ISO is built |
pankso@3 | 57 Content-Type: text/plain; charset=utf-8 |
pankso@3 | 58 Content-Transfer-Encoding: 8bit |
pankso@3 | 59 |
pankso@3 | 60 Hi, |
pankso@3 | 61 |
pankso@3 | 62 Your custom SliTaz GNU/Linux system is ready to download! It will be |
paul@9 | 63 hosted as long as we can but with absolutely no warranty in time. |
pankso@3 | 64 |
pankso@3 | 65 Get $FLAVOR ISO and files at: ${PIZZA_URL}?id=slitaz-$ID |
pankso@3 | 66 |
pankso@3 | 67 ISO size: $ISO_SIZE |
pankso@3 | 68 MD5 sum: $md5 |
pankso@3 | 69 |
paul@9 | 70 If you wish a long time hosting service please get in touch via our |
pankso@3 | 71 professional platform at http://slitaz.pro |
pankso@3 | 72 |
pankso@3 | 73 Visit http://www.slitaz.org for latest news about the project and |
pankso@3 | 74 get community support on SliTaz Forum http://forum.slitaz.org |
pankso@3 | 75 |
paul@9 | 76 Sent by the SliTaz Pizza Mailer |
pankso@3 | 77 |
pankso@3 | 78 EOT |
pankso@3 | 79 } |
pankso@3 | 80 |
pankso@3 | 81 # Run as daemon by default. |
pankso@3 | 82 case "$1" in |
pankso@3 | 83 usage) |
pankso@3 | 84 echo "Usage: $(basename $0) [lock|unlock]" ;; |
pankso@3 | 85 lock) |
pankso@3 | 86 echo $$ > $lockfile ;; |
pankso@3 | 87 unlock) |
pankso@3 | 88 rm -f $lockfile ;; |
pankso@3 | 89 *) |
pankso@3 | 90 [ -f "$lockfile" ] && echo "Pizza is locked" && exit 0 |
pankso@3 | 91 trap 'rm -f $command && exit 1' INT TERM |
pankso@3 | 92 echo $$ > $lockfile |
pankso@3 | 93 name=$(ls -rt $queue | head -n 1) |
pankso@3 | 94 log="$public/$name/distro.log" |
pankso@3 | 95 work="$pizza/flavors" |
pankso@3 | 96 [ ! "$name" ] && echo "Empty build queue" && quit |
pankso@3 | 97 . $queue/$name/receipt |
pankso@3 | 98 |
pankso@10 | 99 echo "Build started for flavor: <a href='?id=$ID'>$ID</a> ($FLAVOR)" | log |
pankso@3 | 100 echo -e "Build started : $(date '+%Y-%m-%d %H:%M')\n" | tee -a $log |
pankso@3 | 101 |
pankso@3 | 102 rm -rf $work && mkdir -p $work && cd $work |
pankso@3 | 103 mv $queue/$name $FLAVOR |
pankso@3 | 104 chown -R root.root $FLAVOR |
pankso@3 | 105 tazlito pack-flavor $FLAVOR | tee -a $log |
pankso@3 | 106 tazlito get-flavor $FLAVOR | tee -a $log |
pankso@3 | 107 mv $FLAVOR.flavor $public/$name |
pankso@3 | 108 sed -i s"/^ISO_NAME=.*/ISO_NAME=\"$FLAVOR\"/" tazlito.conf |
pankso@3 | 109 yes '' | tazlito gen-distro 2>&1 | tee -a $log |
pankso@3 | 110 |
pankso@3 | 111 # Create an XML feed |
pankso@3 | 112 gen_rss |
pankso@3 | 113 |
pankso@3 | 114 # We want a public packages list md5sum file and move ISO so users |
paul@9 | 115 # can download it. Keep original pkgs list and build a complete one. |
pankso@3 | 116 cp -f $FLAVOR/packages.list $public/$name |
pankso@3 | 117 cd $pizza/distro |
pankso@3 | 118 pkgsinst="$public/$name/installed.list" |
pankso@3 | 119 rm -f $pkgsinst && touch $pkgsinst |
pankso@3 | 120 for pkg in $(ls -1 rootfs/var/lib/tazpkg/installed) |
pankso@3 | 121 do |
pankso@3 | 122 . rootfs/var/lib/tazpkg/installed/$pkg/receipt |
pankso@3 | 123 echo "$PACKAGE | $VERSION | $SHORT_DESC" >> $pkgsinst |
pankso@3 | 124 done |
pankso@3 | 125 echo "ISO_SIZE=\"$(du -sh $FLAVOR.iso | awk '{print $1}')\"" >> \ |
pankso@3 | 126 $public/$name/receipt |
pankso@3 | 127 echo "ROOTFS_SIZE=\"$(du -sh rootfs | awk '{print $1}')\"" >> \ |
pankso@3 | 128 $public/$name/receipt |
pankso@3 | 129 md5sum $FLAVOR.iso > $public/$name/$FLAVOR.md5 |
pankso@3 | 130 mv $FLAVOR.iso $public/$name |
pankso@3 | 131 chown -R www.www $public/$name |
pankso@3 | 132 |
pankso@3 | 133 # Send mail if enabled. |
pankso@3 | 134 if [ "$MAIL_DOMAIN" ]; then |
pankso@3 | 135 . $public/$name/receipt |
pankso@3 | 136 echo "Sending mail to: $MAINTAINER" |
pankso@3 | 137 mail_body | /usr/sbin/sendmail $MAINTAINER |
pankso@3 | 138 fi |
pankso@3 | 139 |
pankso@3 | 140 # Count builds |
pankso@3 | 141 count=$(cat $builds) |
pankso@3 | 142 count=$(($count + 1)) |
pankso@3 | 143 echo "$count" > $builds |
pankso@3 | 144 rm -f $lockfile ;; |
pankso@3 | 145 esac |
pankso@3 | 146 exit 0 |