slitaz-pizza annotate pizza @ rev 123

Add de.po (thanks HGT)
author Paul Issott <paul@slitaz.org>
date Tue Mar 14 17:16:04 2017 +0000 (2017-03-14)
parents e9cbc1c2a375
children 47fc1f5fb6d6
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@22 21 hgflavors="$cache/flavors"
erjo@103 22 crontabs="$chroot/var/spool/cron/crontabs"
pankso@2 23
pankso@2 24 #
pankso@2 25 # Functions
pankso@2 26 #
pankso@2 27
pankso@2 28 usage() {
pankso@2 29 cat << EOT
pankso@2 30
pankso@2 31 $(echo -e "\033[1mUsage:\033[0m") pizza [command]
pankso@2 32
pankso@2 33 $(echo -e "\033[1mCommands:\033[0m")
pankso@2 34 usage Display this short usage.
pankso@2 35 setup Setup Pizza build environment.
pankso@2 36 up-files Update chroot and web files from datadir.
pankso@2 37 exec Execute a command in chroot.
pankso@2 38 chroot Chroot in Pizza environment.
pankso@2 39 start Start Pizza bot and mount packages.
pankso@2 40 stop Stop Pizza and unmount packages.
pankso@22 41 get-lists Get latest flavor skel from Hg.
pankso@2 42 sync-pkgs Sync packages from SliTaz mirror.
pankso@2 43 purge Purge Pizza tmp directory.
paul@9 44 clean Complete chroot clean-up.
pankso@2 45
pankso@2 46 EOT
pankso@2 47 }
pankso@2 48
pankso@2 49 # Status function.
pankso@2 50 status() {
pankso@2 51 if [ $? = 0 ]; then
pankso@56 52 echo " Done"
pankso@2 53 else
pankso@2 54 echo " Failed"
pankso@2 55 fi
pankso@2 56 }
pankso@2 57
pankso@22 58 # Get latest flavor skel packages list. We use Hg to get latest list
paul@45 59 # and addfiles. Then build a HTML list with version from the local
pankso@22 60 # packages mirror.
pankso@2 61 get_pkgs_lists() {
pankso@22 62 cd $hgflavors && hg pull -u
pankso@2 63 for skel in base justx gtkonly core
pankso@2 64 do
pankso@22 65 echo -n "Creating $skel packages.desc... "
pankso@22 66 allpkgs="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc"
pankso@22 67 pkgsdesc="$skel/packages.desc"
pankso@22 68 rm -f $pkgsdesc && touch $pkgsdesc
pankso@22 69 for pkg in $(cat $skel/packages.list)
pankso@22 70 do
pankso@22 71 IFS="|"
pankso@22 72 grep "^$pkg |" $allpkgs | cut -f 1,2,3 -d "|" | \
pankso@22 73 while read PACKAGE VERSION SHORT_DESC
pankso@22 74 do
pankso@22 75 echo "$PACKAGE $VERSION \"$SHORT_DESC\"" >> $pkgsdesc
pankso@22 76 done
pankso@55 77 unset IFS
pankso@22 78 done
pankso@22 79 status
pankso@2 80 done
pankso@2 81 }
pankso@2 82
pankso@2 83 # The Bot is chrooted and can't access main pizza.conf
pankso@56 84 bot_config() {
pankso@2 85 config=$chroot/etc/slitaz/pizza-bot.conf
pankso@2 86 echo '# Pizza Bot configuration.' > $config
pankso@2 87 grep ^PIZZA_URL /etc/slitaz/pizza.conf >> $config
pankso@2 88 grep ^MAIL_DOMAIN /etc/slitaz/pizza.conf >> $config
pankso@2 89 grep ^MAIL_SERVER /etc/slitaz/pizza.conf >> $config
erjo@69 90 grep ^MAIL_FROM /etc/slitaz/pizza.conf >> $config
pankso@2 91 }
pankso@2 92
pankso@18 93 # Log activities, we want first letter capitalized.
pankso@18 94 log() {
pankso@18 95 grep ^[A-Z] | \
pankso@18 96 sed s"#^[A-Z]\([^']*\)#$(date '+%Y-%m-%d %H:%M') : \0#" >> $activity
pankso@18 97 }
pankso@18 98
pankso@2 99 #
pankso@2 100 # Commands
pankso@2 101 #
pankso@2 102
pankso@2 103 case "$1" in
pankso@2 104 setup)
pankso@2 105 # Setup build host.
erjo@103 106
pankso@2 107 if [ -d "$chroot/proc" ]; then
paul@9 108 echo "Chroot already exists: $chroot" && exit 0
pankso@2 109 fi
pankso@2 110 echo ""
pankso@2 111 echo "Setting up Pizza environment..."
erjo@103 112 mkdir -p $crontabs $cache $pkgs $tmp $queue $bindpub $feeds $crontabs
pankso@2 113 touch $activity $builds
pankso@2 114 chmod 0777 $tmp $queue $cache
pankso@2 115 chmod 0666 $activity
pankso@11 116 for pkg in slitaz-base-files busybox tazlito tazpkg postfix \
pankso@11 117 shared-mime-info
pankso@2 118 do
pankso@2 119 echo "Installing package: $pkg"
pankso@53 120 tazpkg get-install $pkg --root=$chroot >/dev/null
pankso@2 121 done
pankso@55 122
pankso@2 123 # Files
pankso@2 124 echo -n "Creating needed files..."
pankso@2 125 cp -f /etc/resolv.conf $chroot/etc
pankso@2 126 mkdir -p $chroot/etc/init.d
pankso@2 127 bot_config
pankso@56 128
pankso@2 129 # No more needed when slitaz-base-files have rc.functions
pankso@2 130 cp -f /etc/init.d/rc.functions $chroot/etc/init.d
pankso@22 131 echo '# Check pizza queue every 15 mins' > $crontabs/root
pankso@22 132 echo '*/15 * * * * /usr/bin/pizza-bot' >> $crontabs/root
pankso@2 133 status
pankso@55 134
paul@45 135 # We want Tazlito to build ISOs in /home/slitaz
pankso@2 136 echo -n "Updating Tazlito default configuration..."
pankso@2 137 sed -i s'/^WORK_DIR=.*/WORK_DIR="\/home\/slitaz"/' \
pankso@2 138 $chroot/etc/tazlito/tazlito.conf
pankso@2 139 status
pankso@55 140
pankso@55 141 echo -n "Installing Pizza Bot..."
pankso@2 142 cp -a $DATA/pizza-bot $chroot/usr/bin
pankso@2 143 status
pankso@22 144 cd $cache
pankso@55 145
paul@45 146 # We use files from Hg repo defined in pizza.conf.
pankso@22 147 if [ ! -d "$hgflavors" ]; then
pankso@22 148 cd $cache && hg clone $HG && cd -
pankso@22 149 fi
pankso@22 150 get_pkgs_lists
pankso@55 151
pankso@2 152 # Web interface and public dir
pankso@2 153 echo -n "Installing the web interface..."
pankso@2 154 mkdir -p $public && chmod 0777 $public
pankso@2 155 cp -a $DATA/web/* $VHOST
erjo@72 156 cp -a $DATA/public/* $public
pankso@2 157 status
pankso@2 158 echo "Pizza chroot : $chroot"
pankso@2 159 echo "Vhost path : $VHOST"
pankso@2 160 echo ""
pankso@2 161 echo "To start Pizza Bot: $(basename $0) start"
pankso@2 162 echo "" ;;
pankso@2 163 up-files)
paul@9 164 # Update files in chroot when pizza is updated on host.
pankso@2 165 echo -n "Updating chroot and virtual host..."
pankso@2 166 cp -a $DATA/web/* $VHOST
pankso@55 167 cp -a $DATA/pizza-bot $chroot/usr/bin
pankso@2 168 bot_config
pankso@2 169 status ;;
pankso@2 170 exec)
pankso@2 171 # Execute a command in chroot.
pankso@2 172 [ "$2" ] || exit 0
pankso@2 173 chroot $chroot $2 ;;
pankso@2 174 chroot)
pankso@2 175 # Chroot in Pizza environment.
pankso@2 176 echo -e "\nChrooting to: $chroot\n"
pankso@2 177 chroot $chroot /bin/sh --login
erjo@103 178 echo -e "\nExiting Pizza chroot...\n"
erjo@103 179 ;;
pankso@2 180 start)
pankso@2 181 # Mount and start Pizza
pankso@2 182 if ! mount | fgrep -q "pizza/chroot"; then
pankso@2 183 gettext -e "Mounting packages and public...\n"
pankso@2 184 mount -o bind $SLITAZ/$SLITAZ_VERSION/packages $pkgs
pankso@2 185 mount -o bind $public $bindpub
erjo@103 186 mount -t proc proc $chroot/proc
pankso@2 187 fi
erjo@103 188 #~ chroot $chroot /etc/init.d/crond start
erjo@103 189 #~ [ "$MAIL_DOMAIN" ] && chroot $chroot /etc/init.d/postfix start
erjo@103 190 ;;
pankso@2 191 stop)
pankso@56 192 # Unmount and stop Pizza
pankso@2 193 if mount | fgrep -q "pizza/chroot"; then
pankso@2 194 gettext -e "Unmounting packages and public...\n"
pankso@2 195 umount $pkgs
pankso@2 196 umount $bindpub
erjo@103 197 umount $chroot/proc
pankso@55 198 fi
erjo@103 199 #~ chroot $chroot /etc/init.d/crond stop
erjo@103 200 #~ [ "$MAIL_DOMAIN" ] && chroot $chroot /etc/init.d/postfix stop
erjo@103 201 ;;
pankso@2 202 get-lists)
pankso@2 203 get_pkgs_lists ;;
pankso@2 204 sync-pkgs)
pankso@2 205 echo "Syncing all $SLITAZ_VERSION packages..."
pankso@30 206 echo "Syncing all $SLITAZ_VERSION packages" | log
pankso@30 207 rsync -azHv --delete $RSYNC_PKGS $LOCAL_PKGS
erjo@103 208 du -sh $LOCAL_PKGS
erjo@103 209 ;;
pankso@2 210 backup)
pankso@2 211 echo "Creating Pizza backup..."
pankso@2 212 bak="pizza-$(date "+%Y%m%d")"
pankso@2 213 dir="$PIZZA/backups/$bak"
pankso@2 214 mkdir -p $dir && cd $PIZZA/backups
pankso@2 215 cp -a $cache $dir
pankso@2 216 cp -a $chroot/home/slitaz/xml $dir
pankso@2 217 for flavor in $(ls $public)
pankso@2 218 do
pankso@2 219 if [ -f "$public/$flavor/receipt" ]; then
pankso@2 220 mkdir -p $dir/public/$flavor
pankso@2 221 . $public/$flavor/receipt
pankso@2 222 cp -f $public/$flavor/$FLAVOR.flavor \
pankso@2 223 $dir/public/$flavor 2>/dev/null
pankso@2 224 fi
pankso@2 225 done
pankso@2 226 tar cf $bak.tar $bak && rm -rf $bak
pankso@55 227 lzma e $bak.tar $bak.tar.lzma
erjo@103 228 du -sh $bak.tar.lzma
erjo@103 229 ;;
pankso@2 230 purge)
pankso@2 231 # Remove tmp file older than 24 hours and ISO older than 15 days.
pankso@2 232 # TODO: Improve and use configs from pizza.conf
pankso@18 233 echo "Purging temporary files and old flavors" | log
pankso@2 234 echo "Purging tmp files..."
pascal@113 235 find $tmp -mtime +1 -print0 | xargs -0 rm -rf
pankso@2 236 echo "Purging ISO's..."
pascal@113 237 find $public -mtime +15 -print0 | xargs -0 rm -rf
erjo@103 238 ;;
pankso@2 239 clean)
pankso@2 240 # Clean all chroot.
pankso@2 241 echo -e "\nCleaning: $chroot"
pankso@2 242 cd $chroot || exit 1
pankso@2 243 for i in *
pankso@2 244 do
pankso@2 245 [ "$i" == "home" ] || rm -rf $i
erjo@103 246 done && echo ""
erjo@103 247 ;;
pankso@2 248 *)
pankso@2 249 usage ;;
pankso@2 250 esac
pankso@2 251 exit 0