slitaz-pizza view pizza-bot @ rev 96

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