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 |