slitaz-pizza annotate pizza @ rev 14

Add Gravatar support to flavor status page
author Christophe Lincoln <pankso@slitaz.org>
date Mon Mar 26 13:05:04 2012 +0200 (2012-03-26)
parents a5164f0bb461
children ebafde6ecb03
rev   line source
pankso@2 1 #!/bin/sh
pankso@2 2 #
paul@9 3 # SliTaz Pizza host cmdline utility - Create environment, chroot, clean.
pankso@2 4 # Backup and purge should be done via cron jobs.
pankso@2 5 #
pankso@2 6
pankso@2 7 [ -f "/etc/slitaz/pizza.conf" ] && . /etc/slitaz/pizza.conf
pankso@2 8 [ -f "pizza.conf" ] && . ./pizza.conf
pankso@2 9
pankso@2 10 # Pizza DB files.
pankso@2 11 chroot="$PIZZA/chroot"
pankso@2 12 pkgs="${chroot}$SLITAZ/packages"
pankso@2 13 cache="${chroot}$SLITAZ/cache"
pankso@2 14 queue="${chroot}$SLITAZ/queue"
pankso@2 15 tmp="${chroot}$SLITAZ/tmp"
pankso@2 16 feeds="${chroot}$SLITAZ/xml"
pankso@2 17 activity="$cache/activity"
pankso@2 18 builds="$cache/builds"
pankso@2 19 public="$VHOST/public"
pankso@2 20 bindpub="${chroot}$SLITAZ/public"
pankso@2 21
pankso@2 22 #
pankso@2 23 # Functions
pankso@2 24 #
pankso@2 25
pankso@2 26 usage() {
pankso@2 27 cat << EOT
pankso@2 28
pankso@2 29 $(echo -e "\033[1mUsage:\033[0m") pizza [command]
pankso@2 30
pankso@2 31 $(echo -e "\033[1mCommands:\033[0m")
pankso@2 32 usage Display this short usage.
pankso@2 33 setup Setup Pizza build environment.
pankso@2 34 up-files Update chroot and web files from datadir.
pankso@2 35 exec Execute a command in chroot.
pankso@2 36 chroot Chroot in Pizza environment.
pankso@2 37 start Start Pizza bot and mount packages.
pankso@2 38 stop Stop Pizza and unmount packages.
pankso@2 39 get-lists Get latest skel packages list from Hg.
pankso@2 40 sync-pkgs Sync packages from SliTaz mirror.
pankso@2 41 purge Purge Pizza tmp directory.
paul@9 42 clean Complete chroot clean-up.
pankso@2 43
pankso@2 44 EOT
pankso@2 45 }
pankso@2 46
pankso@2 47 # Status function.
pankso@2 48 status() {
pankso@2 49 if [ $? = 0 ]; then
pankso@2 50 echo " OK"
pankso@2 51 else
pankso@2 52 echo " Failed"
pankso@2 53 fi
pankso@2 54 }
pankso@2 55
pankso@2 56 # Get latest skel packages list
pankso@2 57 get_pkgs_lists() {
pankso@2 58 cd $cache
pankso@2 59 for skel in base justx gtkonly core
pankso@2 60 do
pankso@2 61 echo -n "Getting $skel packages list... "
pankso@2 62 wget -O packages.$skel \
pankso@2 63 $HG/raw-file/tip/$skel/packages.list 2>/dev/null
pankso@2 64 echo "Done"
pankso@2 65 done
pankso@2 66 }
pankso@2 67
pankso@2 68 # The Bot is chrooted and can't access main pizza.conf
pankso@2 69 bot_config()
pankso@2 70 {
pankso@2 71 config=$chroot/etc/slitaz/pizza-bot.conf
pankso@2 72 echo '# Pizza Bot configuration.' > $config
pankso@2 73 grep ^PIZZA_URL /etc/slitaz/pizza.conf >> $config
pankso@2 74 grep ^MAIL_DOMAIN /etc/slitaz/pizza.conf >> $config
pankso@2 75 grep ^MAIL_SERVER /etc/slitaz/pizza.conf >> $config
pankso@2 76 }
pankso@2 77
pankso@2 78 #
pankso@2 79 # Commands
pankso@2 80 #
pankso@2 81
pankso@2 82 case "$1" in
pankso@2 83 setup)
pankso@2 84 # Setup build host.
pankso@2 85 crontabs="$chroot/var/spool/cron/crontabs"
pankso@2 86 if [ -d "$chroot/proc" ]; then
paul@9 87 echo "Chroot already exists: $chroot" && exit 0
pankso@2 88 fi
pankso@2 89 echo ""
pankso@2 90 echo "Setting up Pizza environment..."
pankso@2 91 mkdir -p $crontabs $cache $pkgs $tmp $queue $bindpub $feeds
pankso@2 92 touch $activity $builds
pankso@2 93 chmod 0777 $tmp $queue $cache
pankso@2 94 chmod 0666 $activity
pankso@11 95 for pkg in slitaz-base-files busybox tazlito tazpkg postfix \
pankso@11 96 shared-mime-info
pankso@2 97 do
pankso@2 98 echo "Installing package: $pkg"
pankso@2 99 tazpkg -gi $pkg --root=$chroot >/dev/null
pankso@2 100 done
pankso@2 101
pankso@2 102 # Files
pankso@2 103 echo -n "Creating needed files..."
pankso@2 104 cp -f /etc/resolv.conf $chroot/etc
pankso@2 105 mkdir -p $chroot/etc/init.d
pankso@2 106 bot_config
pankso@2 107 # No more needed when slitaz-base-files have rc.functions
pankso@2 108 cp -f /etc/init.d/rc.functions $chroot/etc/init.d
paul@9 109 echo '# Check pizza queue every 5 mins' > $crontabs/root
pankso@2 110 echo '*/20 * * * * /usr/bin/pizza-bot' >> $crontabs/root
pankso@2 111 status
pankso@2 112
pankso@2 113 # We want Tazlito to build ISO's in /home/slitaz
pankso@2 114 echo -n "Updating Tazlito default configuration..."
pankso@2 115 sed -i s'/^WORK_DIR=.*/WORK_DIR="\/home\/slitaz"/' \
pankso@2 116 $chroot/etc/tazlito/tazlito.conf
pankso@2 117 status
pankso@2 118
pankso@2 119 echo -n "Installing Pizza Bot..."
pankso@2 120 cp -a $DATA/pizza-bot $chroot/usr/bin
pankso@2 121 status
pankso@2 122 cd $cache && get_pkgs_lists
pankso@2 123
pankso@2 124 # Web interface and public dir
pankso@2 125 echo -n "Installing the web interface..."
pankso@2 126 mkdir -p $public && chmod 0777 $public
pankso@2 127 cp -a $DATA/web/* $VHOST
pankso@2 128 status
pankso@2 129 echo "Pizza chroot : $chroot"
pankso@2 130 echo "Vhost path : $VHOST"
pankso@2 131 echo ""
pankso@2 132 echo "To start Pizza Bot: $(basename $0) start"
pankso@2 133 echo "" ;;
pankso@2 134 up-files)
paul@9 135 # Update files in chroot when pizza is updated on host.
pankso@2 136 echo -n "Updating chroot and virtual host..."
pankso@2 137 cp -a $DATA/web/* $VHOST
pankso@2 138 cp -a $DATA/pizza-bot $chroot/usr/bin
pankso@2 139 bot_config
pankso@2 140 status ;;
pankso@2 141 exec)
pankso@2 142 # Execute a command in chroot.
pankso@2 143 [ "$2" ] || exit 0
pankso@2 144 chroot $chroot $2 ;;
pankso@2 145 chroot)
pankso@2 146 # Chroot in Pizza environment.
pankso@2 147 echo -e "\nChrooting to: $chroot\n"
pankso@2 148 chroot $chroot /bin/sh --login
pankso@2 149 echo -e "\nExiting Pizza chroot...\n" ;;
pankso@2 150 start)
pankso@2 151 # Mount and start Pizza
pankso@2 152 if ! mount | fgrep -q "pizza/chroot"; then
pankso@2 153 gettext -e "Mounting packages and public...\n"
pankso@2 154 mount -o bind $SLITAZ/$SLITAZ_VERSION/packages $pkgs
pankso@2 155 mount -o bind $public $bindpub
pankso@2 156 fi
pankso@2 157 chroot $chroot /etc/init.d/crond start
pankso@2 158 [ "$MAIL_DOMAIN" ] && chroot $chroot /etc/init.d/postfix start ;;
pankso@2 159 stop)
pankso@2 160 # unmount and stop Pizza
pankso@2 161 if mount | fgrep -q "pizza/chroot"; then
pankso@2 162 gettext -e "Unmounting packages and public...\n"
pankso@2 163 umount $pkgs
pankso@2 164 umount $bindpub
pankso@2 165 fi
pankso@2 166 chroot $chroot /etc/init.d/crond stop
pankso@2 167 [ "$MAIL_DOMAIN" ] && chroot $chroot /etc/init.d/postfix stop ;;
pankso@2 168 get-lists)
pankso@2 169 get_pkgs_lists ;;
pankso@2 170 sync-pkgs)
pankso@2 171 echo "Syncing all $SLITAZ_VERSION packages..."
pankso@2 172 rsync -azH --delete rsync://mirror.slitaz.org/slitaz-$SLITAZ_VERSION/
pankso@2 173 $SLITAZ/$SLITAZ_VERSION/packages/ ;;
pankso@2 174 backup)
pankso@2 175 echo "Creating Pizza backup..."
pankso@2 176 bak="pizza-$(date "+%Y%m%d")"
pankso@2 177 dir="$PIZZA/backups/$bak"
pankso@2 178 mkdir -p $dir && cd $PIZZA/backups
pankso@2 179 cp -a $cache $dir
pankso@2 180 cp -a $chroot/home/slitaz/xml $dir
pankso@2 181 for flavor in $(ls $public)
pankso@2 182 do
pankso@2 183 if [ -f "$public/$flavor/receipt" ]; then
pankso@2 184 mkdir -p $dir/public/$flavor
pankso@2 185 . $public/$flavor/receipt
pankso@2 186 cp -f $public/$flavor/$FLAVOR.flavor \
pankso@2 187 $dir/public/$flavor 2>/dev/null
pankso@2 188 fi
pankso@2 189 done
pankso@2 190 tar cf $bak.tar $bak && rm -rf $bak
pankso@2 191 lzma e $bak.tar $bak.tar.lzma
pankso@2 192 du -sh $bak.tar.lzma ;;
pankso@2 193 purge)
pankso@2 194 # Remove tmp file older than 24 hours and ISO older than 15 days.
pankso@2 195 # TODO: Improve and use configs from pizza.conf
pankso@2 196 echo "Purging tmp files..."
pankso@2 197 find $tmp -mtime +1 | xargs rm -f
pankso@2 198 echo "Purging ISO's..."
pankso@2 199 find $public -mtime +15 | xargs rm -f ;;
pankso@2 200 clean)
pankso@2 201 # Clean all chroot.
pankso@2 202 echo -e "\nCleaning: $chroot"
pankso@2 203 cd $chroot || exit 1
pankso@2 204 for i in *
pankso@2 205 do
pankso@2 206 [ "$i" == "home" ] || rm -rf $i
pankso@2 207 done && echo "" ;;
pankso@2 208 *)
pankso@2 209 usage ;;
pankso@2 210 esac
pankso@2 211 exit 0