slitaz-pizza rev 22
pkgs: change the way it's work, use hg flavors, created custom pakages.desc so it's dispalyed fast, pkg search and more
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Mon Mar 26 23:10:56 2012 +0200 (2012-03-26) |
parents | 4d6a1d919012 |
children | 5c9d080960ce |
files | pizza po/pizza.pot web/db.conf web/pkgs.cgi web/style.css |
line diff
1.1 --- a/pizza Mon Mar 26 21:43:56 2012 +0100 1.2 +++ b/pizza Mon Mar 26 23:10:56 2012 +0200 1.3 @@ -18,6 +18,7 @@ 1.4 builds="$cache/builds" 1.5 public="$VHOST/public" 1.6 bindpub="${chroot}$SLITAZ/public" 1.7 +hgflavors="$cache/flavors" 1.8 1.9 # 1.10 # Functions 1.11 @@ -36,7 +37,7 @@ 1.12 chroot Chroot in Pizza environment. 1.13 start Start Pizza bot and mount packages. 1.14 stop Stop Pizza and unmount packages. 1.15 - get-lists Get latest skel packages list from Hg. 1.16 + get-lists Get latest flavor skel from Hg. 1.17 sync-pkgs Sync packages from SliTaz mirror. 1.18 purge Purge Pizza tmp directory. 1.19 clean Complete chroot clean-up. 1.20 @@ -53,15 +54,27 @@ 1.21 fi 1.22 } 1.23 1.24 -# Get latest skel packages list 1.25 +# Get latest flavor skel packages list. We use Hg to get latest list 1.26 +# and addfiles. Then build an HTML list with version from the local 1.27 +# packages mirror. 1.28 get_pkgs_lists() { 1.29 - cd $cache 1.30 + cd $hgflavors && hg pull -u 1.31 for skel in base justx gtkonly core 1.32 do 1.33 - echo -n "Getting $skel packages list... " 1.34 - wget -O packages.$skel \ 1.35 - $HG/raw-file/tip/$skel/packages.list 2>/dev/null 1.36 - echo "Done" 1.37 + echo -n "Creating $skel packages.desc... " 1.38 + allpkgs="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc" 1.39 + pkgsdesc="$skel/packages.desc" 1.40 + rm -f $pkgsdesc && touch $pkgsdesc 1.41 + for pkg in $(cat $skel/packages.list) 1.42 + do 1.43 + IFS="|" 1.44 + grep "^$pkg |" $allpkgs | cut -f 1,2,3 -d "|" | \ 1.45 + while read PACKAGE VERSION SHORT_DESC 1.46 + do 1.47 + echo "$PACKAGE $VERSION \"$SHORT_DESC\"" >> $pkgsdesc 1.48 + done 1.49 + done 1.50 + status 1.51 done 1.52 } 1.53 1.54 @@ -112,8 +125,8 @@ 1.55 bot_config 1.56 # No more needed when slitaz-base-files have rc.functions 1.57 cp -f /etc/init.d/rc.functions $chroot/etc/init.d 1.58 - echo '# Check pizza queue every 5 mins' > $crontabs/root 1.59 - echo '*/20 * * * * /usr/bin/pizza-bot' >> $crontabs/root 1.60 + echo '# Check pizza queue every 15 mins' > $crontabs/root 1.61 + echo '*/15 * * * * /usr/bin/pizza-bot' >> $crontabs/root 1.62 status 1.63 1.64 # We want Tazlito to build ISO's in /home/slitaz 1.65 @@ -125,7 +138,13 @@ 1.66 echo -n "Installing Pizza Bot..." 1.67 cp -a $DATA/pizza-bot $chroot/usr/bin 1.68 status 1.69 - cd $cache && get_pkgs_lists 1.70 + cd $cache 1.71 + 1.72 + # We use files from Hg repo definet in pizza.conf. 1.73 + if [ ! -d "$hgflavors" ]; then 1.74 + cd $cache && hg clone $HG && cd - 1.75 + fi 1.76 + get_pkgs_lists 1.77 1.78 # Web interface and public dir 1.79 echo -n "Installing the web interface..."
2.1 --- a/po/pizza.pot Mon Mar 26 21:43:56 2012 +0100 2.2 +++ b/po/pizza.pot Mon Mar 26 23:10:56 2012 +0200 2.3 @@ -8,7 +8,7 @@ 2.4 msgstr "" 2.5 "Project-Id-Version: SliTaz Pizza\n" 2.6 "Report-Msgid-Bugs-To: \n" 2.7 -"POT-Creation-Date: 2012-03-26 14:23+0200\n" 2.8 +"POT-Creation-Date: 2012-03-26 23:09+0200\n" 2.9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 2.10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 2.11 "Language-Team: LANGUAGE <LL@li.org>\n"
3.1 --- a/web/db.conf Mon Mar 26 21:43:56 2012 +0100 3.2 +++ b/web/db.conf Mon Mar 26 23:10:56 2012 +0200 3.3 @@ -8,6 +8,7 @@ 3.4 public="$VHOST/public" 3.5 activity="$cache/activity" 3.6 builds="$cache/builds" 3.7 +hgflavors="$cache/flavors" 3.8 3.9 #htmldoc="/usr/share/doc/pizza" 3.10 htmldoc="/home/slitaz/pizza/doc"
4.1 --- a/web/pkgs.cgi Mon Mar 26 21:43:56 2012 +0100 4.2 +++ b/web/pkgs.cgi Mon Mar 26 23:10:56 2012 +0200 4.3 @@ -11,33 +11,29 @@ 4.4 skel="$(GET skel)" 4.5 desc="$(GET desc)" 4.6 mail="$(GET mail)" 4.7 -add="$(GET add)" 4.8 log="$tmpdir/slitaz-$id/distro.log" 4.9 -list="$tmpdir/slitaz-$id/packages.list" 4.10 +allpkgs="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc" 4.11 +# Flavor pkgs list format: pkgname version " short desc " 4.12 +list="$tmpdir/slitaz-$id/packages.desc" 4.13 4.14 # 4.15 # Functions 4.16 # 4.17 4.18 +# Pizza uses local packages synced with mirror each night. 4.19 list_pkgs() { 4.20 - # Pizza uses local packages synced with mirror each night. 4.21 - pkgsdesc="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc" 4.22 - [ ! -f "$pkgsdesc" ] && echo "Missing: $pkgsdesc" 4.23 - for pkg in $(cat $list) 4.24 + [ ! -f "$list" ] && echo "Missing: $list" 4.25 + cat $list | while read PACKAGE VERSION SHORT_DESC 4.26 do 4.27 - IFS="|" 4.28 - grep "^$pkg |" $pkgsdesc | cut -f 1,2,3 -d "|" | \ 4.29 - while read PACKAGE VERSION SHORT_DESC 4.30 - do 4.31 - cat << EOT 4.32 -<tr> 4.33 - <td><input type="checkbox" name="pkg" value="$PACKAGE" /></td> 4.34 - <td>$PACKAGE</td> 4.35 - <td>$VERSION</td> 4.36 - <td>$SHORT_DESC</td> 4.37 -</tr> 4.38 + cat << EOT 4.39 + 4.40 + <tr> 4.41 + <td><input type="checkbox" name="pkg" value="$PACKAGE" /></td> 4.42 + <td>$PACKAGE</td> 4.43 + <td>$VERSION</td> 4.44 + <td>$SHORT_DESC</td> 4.45 + </tr> 4.46 EOT 4.47 - done 4.48 done 4.49 } 4.50 4.51 @@ -57,16 +53,37 @@ 4.52 EOT 4.53 } 4.54 4.55 +# Search packages or desc in the local packages.desc 4.56 +# TODO: Html table with selection 4.57 +search_pkgs() { 4.58 + echo '<pre>' 4.59 + for pkg in $search 4.60 + do 4.61 + fgrep $pkg $allpkgs | cut -d "|" -f 1,2,3 4.62 + done 4.63 + echo '</pre>' 4.64 +} 4.65 + 4.66 # 4.67 # Actions 4.68 # 4.69 4.70 case " $(GET) " in 4.71 + *\ search\ *) 4.72 + search="$(GET search)" 4.73 + notify "Searching for: $search" ;; 4.74 *\ add\ *) 4.75 + add="$(GET add)" 4.76 + notify "Adding packages: $add" 4.77 for pkg in $add 4.78 do 4.79 - if ! grep -Eq "^($pkg|get-$pkg)$" $list; then 4.80 - echo "$pkg" >> $list 4.81 + # Add pkg only if not yep in Pizza flavor pkgs list 4.82 + if ! grep -Eq "^($pkg|get-$pkg) " $list; then 4.83 + pkginfo=$(grep -E "^($pkg|get-$pkg) " $allpkgs | cut -f 1,2,3 -d "|") 4.84 + name=$(echo $pkginfo | cut -d "|" -f 1) 4.85 + vers=$(echo $pkginfo | cut -d "|" -f 2) 4.86 + desc=$(echo $pkginfo | cut -d "|" -f 3) 4.87 + echo "$name $vers \" $desc \"" >> $list 4.88 fi 4.89 done ;; 4.90 *\ rm\ *) 4.91 @@ -75,7 +92,7 @@ 4.92 pkgs=$(echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//) 4.93 for pkg in $pkgs 4.94 do 4.95 - sed -i "/^${pkg}$/"d $list 4.96 + sed -i "/^${pkg} /"d $list 4.97 done ;; 4.98 *) 4.99 # No space in flavor name please. 4.100 @@ -85,8 +102,9 @@ 4.101 [ ! "$mail" ] && echo "Missing email address" && exit 0 4.102 [ ! "$skel" ] && echo "Missing SliTaz skeleton" && exit 0 4.103 [ ! "$desc" ] && echo "Missing short desciption" && exit 0 4.104 + notify "$(gettext "Creating receipt and packages list")" 4.105 mkdir -p $tmpdir/slitaz-$id 4.106 - cp -f $cache/packages.$skel $list 4.107 + cp -f $hgflavors/$skel/packages.desc $list 4.108 echo "Receipt created : $(date '+%Y-%m-%d %H:%M')" > $log 4.109 empty_receipt 4.110 sed -i \ 4.111 @@ -106,21 +124,48 @@ 4.112 cat << EOT 4.113 <h2>Packages ($nb)</h2> 4.114 4.115 + 4.116 <form method="get" action="pkgs.cgi"> 4.117 + <div id="packages"> 4.118 <table> 4.119 <tbody> 4.120 $(list_pkgs) 4.121 </tbody> 4.122 </table> 4.123 - <div> 4.124 + </div> 4.125 <input type="hidden" name="id" value="$id" /> 4.126 - <input type="submit" name="rm" value="$(gettext "Remove package(s)")"> 4.127 + <input type="submit" name="rm" value="$(gettext "Remove package(s)")" /> 4.128 </form> 4.129 4.130 -<form method="get" action="pkgs.cgi" style="float: right;"> 4.131 +<form method="get" action="pkgs.cgi"> 4.132 +<div style="float: right;"> 4.133 <input type="text" name="add" style="width: 400px;" /> 4.134 <input type="hidden" name="id" value="$id" /> 4.135 - <input type="submit" name="pkgs" value="$(gettext "Add package(s)")"> 4.136 + <input type="submit" name="pkgs" value="$(gettext "Add package(s)")" /> 4.137 +</div> 4.138 +</form> 4.139 + 4.140 + 4.141 +<div class="next"> 4.142 + <form method="get" action="rootfs.cgi"> 4.143 + <input type="hidden" name="id" value="$id" /> 4.144 + <input type="submit" value="$(gettext "Continue")"> 4.145 + </form> 4.146 +</div> 4.147 + 4.148 +<form method="get" action="pkgs.cgi"> 4.149 +<p style="margin-right: 100px;"> 4.150 + 4.151 +$(gettext "Here you can add or remove some packages from your flavor. You 4.152 +can also search for packages name and description to find a package name") 4.153 + 4.154 +</p> 4.155 + <input type="text" name="search" style="width: 300px;" /> 4.156 + <input type="hidden" name="id" value="$id" /> 4.157 + <input type="submit" value="$(gettext "Search")" /> 4.158 + <div id="pkgs-search"> 4.159 + $([ "$search" ] && search_pkgs) 4.160 + </div> 4.161 </form> 4.162 4.163 <pre> 4.164 @@ -128,12 +173,6 @@ 4.165 Flavor : $FLAVOR 4.166 Short desc : $SHORT_DESC 4.167 </pre> 4.168 -<div class="next"> 4.169 - <form method="get" action="rootfs.cgi"> 4.170 - <input type="hidden" name="id" value="$id" /> 4.171 - <input type="submit" value="$(gettext "Continue")"> 4.172 - </form> 4.173 -</div> 4.174 EOT 4.175 4.176 # HTML footer.
5.1 --- a/web/style.css Mon Mar 26 21:43:56 2012 +0100 5.2 +++ b/web/style.css Mon Mar 26 23:10:56 2012 +0200 5.3 @@ -102,7 +102,7 @@ 5.4 #content { 5.5 margin: 40px auto; 5.6 text-align: justify; 5.7 - width: 720px; 5.8 + width: 740px; 5.9 } 5.10 5.11 .note { 5.12 @@ -119,6 +119,24 @@ 5.13 .span-red { color: red; } 5.14 .log-date { color: #666; font-size: 95%; } 5.15 5.16 +#packages { 5.17 + width: 100%; 5.18 + height: 260px; 5.19 + overflow: auto; 5.20 + border: 1px solid #ddd; 5.21 + background-color: #f8f8f8; 5.22 +} 5.23 + 5.24 +#packages table { 5.25 + border: 0px solid #fff; 5.26 +} 5.27 + 5.28 +#pkgs-search { 5.29 + width: 100%; 5.30 + max-height: 180px; 5.31 + overflow: auto; 5.32 +} 5.33 + 5.34 /* Form */ 5.35 5.36 form { display: inline; } 5.37 @@ -162,7 +180,8 @@ 5.38 5.39 /* Round corner */ 5.40 5.41 -img, pre, table, input, textarea, select, .note, .box, #notify { 5.42 +img, pre, table, input, textarea, select, .note, .box, #notify, 5.43 +#packages, #pkgs-search { 5.44 -moz-border-radius: 4px; 5.45 -webkit-border-radius: 4px; 5.46 border-radius: 4px;