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 |