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;