slitaz-pizza annotate pizza-bot @ rev 108

Tiny edits, improve translations...
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri May 02 17:40:45 2014 +0000 (2014-05-02)
parents 54fe9ba8edf0
children 22259a64b86e
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
al@108 5 # at a time, so we don't use too many resources.
pankso@3 6 #
al@108 7 # Copyright (C) 2012 SliTaz GNU/Linux - GNU GPL v2
pankso@3 8 # Authors : Christophe Lincoln <pankso@slitaz.org>
erjo@98 9 # Eric Joseph-Alexandre <erjo@slitaz.org>
pankso@3 10 #
pankso@3 11
erjo@96 12 VERSION=1.0
erjo@96 13
pankso@3 14 . /etc/slitaz/pizza-bot.conf
pankso@3 15
pankso@3 16 # Pizza DB files.
pankso@3 17 pizza="/home/slitaz"
pankso@3 18 cache="$pizza/cache"
pankso@3 19 queue="$pizza/queue"
pankso@3 20 activity="$cache/activity"
pankso@3 21 public="$pizza/public"
pankso@3 22 builds="$cache/builds"
pankso@3 23 lockfile="/var/lock/pizza.lock"
pankso@3 24 feeds="$pizza/xml"
erjo@100 25 logfile="/var/log/pizza.log"
pankso@3 26
erjo@100 27 trap 'rm -f $lockfile ; exit 1' TERM INT EXIT
erjo@98 28
erjo@98 29 # Help
erjo@98 30 usage() {
erjo@98 31 echo "PizzaBot v$VERSION"
erjo@98 32 echo "Usage: $(basename $0) [lock|unlock]"
erjo@98 33 exit 0
erjo@98 34 }
erjo@98 35
erjo@98 36 # Get status
erjo@98 37 status(){
erjo@98 38 if [ -f "$lockfile" ]; then
erjo@98 39 ps | grep ^`cat $lockfile` \
erjo@98 40 && echo "Pizza is running." \
erjo@100 41 || echo "Pizza is locked but not running!"
erjo@98 42 else
paul@99 43 echo "Pizza is not running."
erjo@98 44 fi
paul@99 45 echo "Flavors in queue: $(ls $queue | wc -l)"
erjo@98 46 }
erjo@98 47
erjo@98 48
erjo@98 49 # Logger: Write log
erjo@98 50 _logger() {
erjo@100 51 echo "$(date '+%Y-%m-%d %T') - $@" >> $logfile
erjo@98 52 }
erjo@69 53
pankso@3 54 # Log activities, we want first letter capitalized.
pankso@3 55 log() {
pankso@3 56 grep ^[A-Z] | \
pankso@3 57 sed s"#^[A-Z]\([^']*\)#$(date '+%Y-%m-%d %H:%M') : \0#" >> $activity
pankso@3 58 }
pankso@3 59
pankso@3 60 # Clean exit.
pankso@3 61 quit() {
pankso@3 62 rm -f $lockfile
pankso@3 63 exit 0
pankso@3 64 }
pankso@3 65
paul@9 66 # Create a XML feed for freshly built flavor.
pankso@3 67 gen_rss() {
pankso@3 68 pubdate=$(date "+%a, %d %b %Y %X")
pankso@3 69 cat > $feeds/slitaz-$ID.xml << EOT
pankso@3 70 <item>
pankso@3 71 <title>$FLAVOR $VERSION</title>
pankso@3 72 <link>${PIZZA_URL}?id=$ID</link>
pankso@3 73 <guid>slitaz-$ID</guid>
pankso@3 74 <pubDate>$pubdate</pubDate>
pankso@3 75 <description>$SHORT_DESC</description>
pankso@3 76 </item>
pankso@3 77 EOT
pankso@3 78 }
pankso@3 79
pankso@3 80 # Mail body.
pankso@3 81 mail_body() {
pankso@3 82 md5=$(cat $public/slitaz-$ID/$FLAVOR.md5 | awk '{print $1}')
pankso@3 83 cat << EOT
pankso@3 84 From: SliTaz Pizza <pizza@$MAIL_DOMAIN>
pankso@3 85 To: $MAINTAINER
pankso@3 86 Date: $(date '+%a, %d %b %Y %H:%M:%S %z')
pankso@3 87 Subject: Flavor ISO is built
pankso@3 88 Content-Type: text/plain; charset=utf-8
pankso@3 89 Content-Transfer-Encoding: 8bit
pankso@3 90
pankso@3 91 Hi,
pankso@3 92
pankso@3 93 Your custom SliTaz GNU/Linux system is ready to download! It will be
paul@78 94 hosted for as long as we can but with absolutely no warranty in time.
pankso@3 95
pankso@15 96 Get $FLAVOR ISO and files at: ${PIZZA_URL}?id=$ID
pankso@3 97
pankso@3 98 ISO size: $ISO_SIZE
pankso@3 99 MD5 sum: $md5
pankso@3 100
paul@78 101 If you would like a long time hosting service please get in touch via our
pankso@3 102 professional platform at http://slitaz.pro
pankso@3 103
pankso@3 104 Visit http://www.slitaz.org for latest news about the project and
pankso@3 105 get community support on SliTaz Forum http://forum.slitaz.org
pankso@3 106
paul@9 107 Sent by the SliTaz Pizza Mailer
pankso@3 108
pankso@3 109 EOT
pankso@3 110 }
pankso@3 111
pankso@3 112 # Run as daemon by default.
pankso@3 113 case "$1" in
erjo@98 114 help|-h)
erjo@98 115 usage ;;
erjo@98 116 status)
erjo@98 117 status ;;
pankso@3 118 lock)
pankso@3 119 echo $$ > $lockfile ;;
pankso@3 120 unlock)
pankso@3 121 rm -f $lockfile ;;
pankso@3 122 *)
pankso@3 123 [ -f "$lockfile" ] && echo "Pizza is locked" && exit 0
erjo@98 124 #~ trap 'rm -f $command && exit 1' INT TERM
pankso@3 125 echo $$ > $lockfile
pankso@3 126 name=$(ls -rt $queue | head -n 1)
pankso@3 127 log="$public/$name/distro.log"
pankso@3 128 work="$pizza/flavors"
pankso@3 129 [ ! "$name" ] && echo "Empty build queue" && quit
pankso@3 130 . $queue/$name/receipt
pascal@60 131
pascal@60 132 [ -z "$ID" -o -z "$FLAVOR" ] && echo "$name not valid" && quit
pankso@3 133
pascal@62 134 [ -d /proc/1 ] || mount -t proc /proc /proc
pankso@52 135 #tazpkg setup-mirror /home/slitaz/packages
pankso@52 136 tazpkg recharge
pankso@52 137
pankso@10 138 echo "Build started for flavor: <a href='?id=$ID'>$ID</a> ($FLAVOR)" | log
pankso@3 139 echo -e "Build started : $(date '+%Y-%m-%d %H:%M')\n" | tee -a $log
pankso@3 140
pankso@3 141 rm -rf $work && mkdir -p $work && cd $work
pankso@3 142 mv $queue/$name $FLAVOR
pankso@3 143 chown -R root.root $FLAVOR
pankso@3 144 tazlito pack-flavor $FLAVOR | tee -a $log
pankso@3 145 tazlito get-flavor $FLAVOR | tee -a $log
pankso@3 146 mv $FLAVOR.flavor $public/$name
pankso@3 147 sed -i s"/^ISO_NAME=.*/ISO_NAME=\"$FLAVOR\"/" tazlito.conf
pankso@3 148 yes '' | tazlito gen-distro 2>&1 | tee -a $log
pankso@3 149
pankso@3 150 # Create an XML feed
pankso@3 151 gen_rss
pankso@3 152
al@108 153 # We want a public packages list md5sum file and move ISO, so users
paul@9 154 # can download it. Keep original pkgs list and build a complete one.
pankso@3 155 cp -f $FLAVOR/packages.list $public/$name
pankso@3 156 cd $pizza/distro
pankso@3 157 pkgsinst="$public/$name/installed.list"
pankso@3 158 rm -f $pkgsinst && touch $pkgsinst
pankso@3 159 for pkg in $(ls -1 rootfs/var/lib/tazpkg/installed)
pankso@3 160 do
pankso@3 161 . rootfs/var/lib/tazpkg/installed/$pkg/receipt
pankso@3 162 echo "$PACKAGE | $VERSION | $SHORT_DESC" >> $pkgsinst
pankso@3 163 done
pankso@3 164 echo "ISO_SIZE=\"$(du -sh $FLAVOR.iso | awk '{print $1}')\"" >> \
pankso@3 165 $public/$name/receipt
pankso@3 166 echo "ROOTFS_SIZE=\"$(du -sh rootfs | awk '{print $1}')\"" >> \
pankso@3 167 $public/$name/receipt
pankso@3 168 md5sum $FLAVOR.iso > $public/$name/$FLAVOR.md5
pankso@3 169 mv $FLAVOR.iso $public/$name
pankso@3 170 chown -R www.www $public/$name
pankso@3 171
pankso@3 172 # Send mail if enabled.
erjo@69 173 if [ "$MAIL_FROM" ]; then
pankso@3 174 . $public/$name/receipt
pankso@3 175 echo "Sending mail to: $MAINTAINER"
erjo@69 176 mail_body | /usr/bin/sendmail -f $MAIL_FROM $MAINTAINER
pankso@3 177 fi
pankso@3 178
erjo@75 179 # Notify Admin if enabled.
erjo@75 180 if [ "$MAIL_ADMIN" ]; then
erjo@75 181 echo "Sending mail to: $MAIL_ADMIN"
paul@78 182 echo -e "From: SliTaz Pizza<noreply@slitaz.org>\nSubject: New build on Pizza\nNew flavor built on Pizza: ${PIZZA_URL}?id=$ID " \
erjo@76 183 | /usr/bin/sendmail -f $MAIL_FROM $MAIL_ADMIN
erjo@75 184 fi
erjo@75 185
pankso@3 186 # Count builds
pankso@3 187 count=$(cat $builds)
pankso@3 188 count=$(($count + 1))
pankso@3 189 echo "$count" > $builds
pankso@3 190 rm -f $lockfile ;;
pankso@3 191 esac
pankso@3 192 exit 0