slitaz-pizza annotate pizza-bot @ rev 95

lib/functions.js: @ and . are valid email characters (again)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Mar 14 09:09:14 2013 +0100 (2013-03-14)
parents 38d3a05db9e3
children 336b430315f8
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@78 5 # at a time 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
erjo@69 23
pankso@3 24 # Log activities, we want first letter capitalized.
pankso@3 25 log() {
pankso@3 26 grep ^[A-Z] | \
pankso@3 27 sed s"#^[A-Z]\([^']*\)#$(date '+%Y-%m-%d %H:%M') : \0#" >> $activity
pankso@3 28 }
pankso@3 29
pankso@3 30 # Clean exit.
pankso@3 31 quit() {
pankso@3 32 rm -f $lockfile
pankso@3 33 exit 0
pankso@3 34 }
pankso@3 35
paul@9 36 # Create a XML feed for freshly built flavor.
pankso@3 37 gen_rss() {
pankso@3 38 pubdate=$(date "+%a, %d %b %Y %X")
pankso@3 39 cat > $feeds/slitaz-$ID.xml << EOT
pankso@3 40 <item>
pankso@3 41 <title>$FLAVOR $VERSION</title>
pankso@3 42 <link>${PIZZA_URL}?id=$ID</link>
pankso@3 43 <guid>slitaz-$ID</guid>
pankso@3 44 <pubDate>$pubdate</pubDate>
pankso@3 45 <description>$SHORT_DESC</description>
pankso@3 46 </item>
pankso@3 47 EOT
pankso@3 48 }
pankso@3 49
pankso@3 50 # Mail body.
pankso@3 51 mail_body() {
pankso@3 52 md5=$(cat $public/slitaz-$ID/$FLAVOR.md5 | awk '{print $1}')
pankso@3 53 cat << EOT
pankso@3 54 From: SliTaz Pizza <pizza@$MAIL_DOMAIN>
pankso@3 55 To: $MAINTAINER
pankso@3 56 Date: $(date '+%a, %d %b %Y %H:%M:%S %z')
pankso@3 57 Subject: Flavor ISO is built
pankso@3 58 Content-Type: text/plain; charset=utf-8
pankso@3 59 Content-Transfer-Encoding: 8bit
pankso@3 60
pankso@3 61 Hi,
pankso@3 62
pankso@3 63 Your custom SliTaz GNU/Linux system is ready to download! It will be
paul@78 64 hosted for as long as we can but with absolutely no warranty in time.
pankso@3 65
pankso@15 66 Get $FLAVOR ISO and files at: ${PIZZA_URL}?id=$ID
pankso@3 67
pankso@3 68 ISO size: $ISO_SIZE
pankso@3 69 MD5 sum: $md5
pankso@3 70
paul@78 71 If you would like a long time hosting service please get in touch via our
pankso@3 72 professional platform at http://slitaz.pro
pankso@3 73
pankso@3 74 Visit http://www.slitaz.org for latest news about the project and
pankso@3 75 get community support on SliTaz Forum http://forum.slitaz.org
pankso@3 76
paul@9 77 Sent by the SliTaz Pizza Mailer
pankso@3 78
pankso@3 79 EOT
pankso@3 80 }
pankso@3 81
pankso@3 82 # Run as daemon by default.
pankso@3 83 case "$1" in
pankso@3 84 usage)
pankso@3 85 echo "Usage: $(basename $0) [lock|unlock]" ;;
pankso@3 86 lock)
pankso@3 87 echo $$ > $lockfile ;;
pankso@3 88 unlock)
pankso@3 89 rm -f $lockfile ;;
pankso@3 90 *)
pankso@3 91 [ -f "$lockfile" ] && echo "Pizza is locked" && exit 0
pankso@3 92 trap 'rm -f $command && exit 1' INT TERM
pankso@3 93 echo $$ > $lockfile
pankso@3 94 name=$(ls -rt $queue | head -n 1)
pankso@3 95 log="$public/$name/distro.log"
pankso@3 96 work="$pizza/flavors"
pankso@3 97 [ ! "$name" ] && echo "Empty build queue" && quit
pankso@3 98 . $queue/$name/receipt
pascal@60 99
pascal@60 100 [ -z "$ID" -o -z "$FLAVOR" ] && echo "$name not valid" && quit
pankso@3 101
pascal@62 102 [ -d /proc/1 ] || mount -t proc /proc /proc
pankso@52 103 #tazpkg setup-mirror /home/slitaz/packages
pankso@52 104 tazpkg recharge
pankso@52 105
pankso@10 106 echo "Build started for flavor: <a href='?id=$ID'>$ID</a> ($FLAVOR)" | log
pankso@3 107 echo -e "Build started : $(date '+%Y-%m-%d %H:%M')\n" | tee -a $log
pankso@3 108
pankso@3 109 rm -rf $work && mkdir -p $work && cd $work
pankso@3 110 mv $queue/$name $FLAVOR
pankso@3 111 chown -R root.root $FLAVOR
pankso@3 112 tazlito pack-flavor $FLAVOR | tee -a $log
pankso@3 113 tazlito get-flavor $FLAVOR | tee -a $log
pankso@3 114 mv $FLAVOR.flavor $public/$name
pankso@3 115 sed -i s"/^ISO_NAME=.*/ISO_NAME=\"$FLAVOR\"/" tazlito.conf
pankso@3 116 yes '' | tazlito gen-distro 2>&1 | tee -a $log
pankso@3 117
pankso@3 118 # Create an XML feed
pankso@3 119 gen_rss
pankso@3 120
pankso@3 121 # We want a public packages list md5sum file and move ISO so users
paul@9 122 # can download it. Keep original pkgs list and build a complete one.
pankso@3 123 cp -f $FLAVOR/packages.list $public/$name
pankso@3 124 cd $pizza/distro
pankso@3 125 pkgsinst="$public/$name/installed.list"
pankso@3 126 rm -f $pkgsinst && touch $pkgsinst
pankso@3 127 for pkg in $(ls -1 rootfs/var/lib/tazpkg/installed)
pankso@3 128 do
pankso@3 129 . rootfs/var/lib/tazpkg/installed/$pkg/receipt
pankso@3 130 echo "$PACKAGE | $VERSION | $SHORT_DESC" >> $pkgsinst
pankso@3 131 done
pankso@3 132 echo "ISO_SIZE=\"$(du -sh $FLAVOR.iso | awk '{print $1}')\"" >> \
pankso@3 133 $public/$name/receipt
pankso@3 134 echo "ROOTFS_SIZE=\"$(du -sh rootfs | awk '{print $1}')\"" >> \
pankso@3 135 $public/$name/receipt
pankso@3 136 md5sum $FLAVOR.iso > $public/$name/$FLAVOR.md5
pankso@3 137 mv $FLAVOR.iso $public/$name
pankso@3 138 chown -R www.www $public/$name
pankso@3 139
pankso@3 140 # Send mail if enabled.
erjo@69 141 if [ "$MAIL_FROM" ]; then
pankso@3 142 . $public/$name/receipt
pankso@3 143 echo "Sending mail to: $MAINTAINER"
erjo@69 144 mail_body | /usr/bin/sendmail -f $MAIL_FROM $MAINTAINER
pankso@3 145 fi
pankso@3 146
erjo@75 147 # Notify Admin if enabled.
erjo@75 148 if [ "$MAIL_ADMIN" ]; then
erjo@75 149 echo "Sending mail to: $MAIL_ADMIN"
paul@78 150 echo -e "From: SliTaz Pizza<noreply@slitaz.org>\nSubject: New build on Pizza\nNew flavor built on Pizza: ${PIZZA_URL}?id=$ID " \
erjo@76 151 | /usr/bin/sendmail -f $MAIL_FROM $MAIL_ADMIN
erjo@75 152 fi
erjo@75 153
pankso@3 154 # Count builds
pankso@3 155 count=$(cat $builds)
pankso@3 156 count=$(($count + 1))
pankso@3 157 echo "$count" > $builds
pankso@3 158 rm -f $lockfile ;;
pankso@3 159 esac
pankso@3 160 exit 0