slitaz-pizza view pizza @ rev 121

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