slitaz-forge diff pkgs/search.sh @ rev 360

mirror-search.sh: unlinearize tag cloud
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Apr 06 13:12:32 2013 +0200 (2013-04-06)
parents d35926c24766
children f7caab5251c0
line diff
     1.1 --- a/pkgs/search.sh	Mon Jul 16 18:48:52 2012 +0000
     1.2 +++ b/pkgs/search.sh	Sat Apr 06 13:12:32 2013 +0200
     1.3 @@ -4,6 +4,8 @@
     1.4  # Aleksej Bobylev <al.bobylev@gmail.com>
     1.5  #
     1.6  
     1.7 +renice -n 19 $$
     1.8 +
     1.9  # Parse query string
    1.10  . /etc/slitaz/slitaz.conf
    1.11  . /usr/lib/slitaz/httphelper.sh
    1.12 @@ -65,6 +67,8 @@
    1.13  			Package)		NICE="package=$SEARCH";;
    1.14  			Desc)			NICE="desc=$SEARCH";;
    1.15  			Tags)			NICE="tags=$SEARCH";;
    1.16 +			Arch)			NICE="arch=$SEARCH";;
    1.17 +			Bugs)			NICE="bugs=$SEARCH";;
    1.18  			Receipt)		NICE="receipt=$SEARCH";;
    1.19  			Depends)		NICE="depends=$SEARCH";;
    1.20  			BuildDepends)	NICE="builddepends=$SEARCH";;
    1.21 @@ -116,7 +120,7 @@
    1.22  . /usr/bin/gettext.sh
    1.23  export TEXTDOMAIN='tazpkg-web'
    1.24  
    1.25 -SEARCH=""
    1.26 +unset SEARCH
    1.27  VERBOSE=0
    1.28  for i in $(echo $QUERY_STRING | sed 's/[?&]/ /g'); do
    1.29  #	SLITAZ_VERSION=cooking
    1.30 @@ -128,6 +132,8 @@
    1.31  		file=*)					SEARCH=${i#*=}; OBJECT=File;;
    1.32  		desc=*)					SEARCH=${i#*=}; OBJECT=Desc;;
    1.33  		tags=*)					SEARCH=${i#*=}; OBJECT=Tags;;
    1.34 +		arch=*)					SEARCH=${i#*=}; OBJECT=Arch;;
    1.35 +		bugs=*)					SEARCH=${i#*=}; OBJECT=Bugs;;
    1.36  		receipt=*)				SEARCH=${i#*=}; OBJECT=Receipt;;
    1.37  		filelist=*)				SEARCH=${i#*=}; OBJECT=File_list;;
    1.38  		package=*)				SEARCH=${i#*=}; OBJECT=Package;;
    1.39 @@ -156,6 +162,8 @@
    1.40  	File)			selected_file="selected";;
    1.41  	Desc)			selected_desc="selected";;
    1.42  	Tags)			selected_tags="selected";;
    1.43 +	Arch)			selected_arch="selected";;
    1.44 +	Bugs)			selected_bugs="selected";;
    1.45  	Receipt)		selected_receipt="selected";;
    1.46  	File_list)		selected_file_list="selected";;
    1.47  	Depends)		selected_depends="selected";;
    1.48 @@ -175,7 +183,7 @@
    1.49  # unescape query
    1.50  SEARCH="$(echo $SEARCH | sed 's/%2B/+/g; s/%3A/:/g; s|%2F|/|g')"
    1.51  
    1.52 -WOK=$SLITAZ_HOME/$SLITAZ_VERSION/wok
    1.53 +WOK=$SLITAZ_HOME/$SLITAZ_VERSION/wok-hg
    1.54  PACKAGES_REPOSITORY=$SLITAZ_HOME/$SLITAZ_VERSION/packages
    1.55  filelist=$PACKAGES_REPOSITORY/files.list.lzma
    1.56  pkglist=$PACKAGES_REPOSITORY/packages.txt
    1.57 @@ -196,6 +204,8 @@
    1.58  			<option value="Package">$(gettext "Package")</option>
    1.59  			<option $selected_desc value="Desc">$(gettext "Description")</option>
    1.60  			<option $selected_tags value="Tags">$(gettext "Tags")</option>
    1.61 +			<option $selected_arch value="Arch">$(gettext "Arch")</option>
    1.62 +			<option $selected_bugs value="Bugs">$(gettext "Bugs")</option>
    1.63  			<option $selected_receipt value="Receipt">$(gettext "Receipt")</option>
    1.64  			<option $selected_depends value="Depends">$(gettext "Depends")</option>
    1.65  			<option $selected_build_depends value="BuildDepends">$(gettext "Build depends")</option>
    1.66 @@ -231,6 +241,22 @@
    1.67  	. lib/header.sh
    1.68  }
    1.69  
    1.70 +cat_files_list()
    1.71 +{
    1.72 +	local tmp=/tmp/files.list.$(basename ${1%/packages})
    1.73 +	if [ ! -s $tmp -o $1/files.list.lzma -nt $tmp ]; then
    1.74 +		unlzma -c $1/files.list.lzma > $tmp.$$ && mv $tmp.$$ $tmp
    1.75 +	fi
    1.76 +	case "$2" in
    1.77 +	lines)	if [ ! -s $tmp.lines -o $tmp -nt $tmp.lines ]; then
    1.78 +			cat $tmp | wc -l > $tmp.lines.$$ &&
    1.79 +			mv $tmp.lines.$$ $tmp.lines
    1.80 +		fi
    1.81 +		cat $tmp.lines ;;	
    1.82 +	*)	cat $tmp ;;
    1.83 +	esac
    1.84 +}
    1.85 +
    1.86  # xHTML Footer.
    1.87  # TODO: caching the summary for 5 minutes
    1.88  xhtml_footer() {
    1.89 @@ -272,9 +298,9 @@
    1.90  _EOT_
    1.91  	else
    1.92  		PACKAGE_HREF="<u>$PACKAGE</u>"
    1.93 -		PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$PACKAGE-$VERSION$EXTRA_VERSION.tazpkg"
    1.94 -		nslookup mirror.slitaz.org | grep -q 127.0.0.1 &&
    1.95 -		PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$(cd /var/www/slitaz/mirror/packages/$SLITAZ_VERSION ; ls $PACKAGE-$VERSION*.tazpkg)"
    1.96 +		PACKAGE_URL="$MIRROR_URL/packages/$SLITAZ_VERSION/$PACKAGE-$VERSION$EXTRA_VERSION.tazpkg"
    1.97 +		nslookup $(echo $MIRROR_URL | sed 's|http://||g') | grep -q 127.0.0.1 &&
    1.98 +		PACKAGE_URL="$MIRROR_URL/packages/$SLITAZ_VERSION/$(cd /var/www/slitaz/mirror/packages/$SLITAZ_VERSION ; ls $PACKAGE-$VERSION*.tazpkg)"
    1.99  		busybox wget -s $PACKAGE_URL 2> /dev/null &&
   1.100  		PACKAGE_HREF="<a href=\"$PACKAGE_URL\">$PACKAGE</a>"
   1.101  		cat << _EOT_
   1.102 @@ -287,6 +313,7 @@
   1.103  </tr>
   1.104  EOT
   1.105  }
   1.106 +
   1.107  package_entry_inline() {
   1.108  	if [ -s "$(dirname $0)/$SLITAZ_VERSION/$CATEGORY.html" ]; then
   1.109  		cat << _EOT_
   1.110 @@ -294,9 +321,9 @@
   1.111  _EOT_
   1.112  	else
   1.113  		PACKAGE_HREF="<u>$PACKAGE</u>"
   1.114 -		PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$PACKAGE-$VERSION$EXTRA_VERSION.tazpkg"
   1.115 -		nslookup mirror.slitaz.org | grep -q 127.0.0.1 &&
   1.116 -		PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$(cd /var/www/slitaz/mirror/packages/$SLITAZ_VERSION ; ls $PACKAGE-$VERSION*.tazpkg)"
   1.117 +		PACKAGE_URL="$MIRROR_URL/packages/$SLITAZ_VERSION/$PACKAGE-$VERSION$EXTRA_VERSION.tazpkg"
   1.118 +		nslookup $(echo $MIRROR_URL | sed 's|http://||g') | grep -q 127.0.0.1 &&
   1.119 +		PACKAGE_URL="$MIRROR_URL/packages/$SLITAZ_VERSION/$(cd /var/www/slitaz/mirror/packages/$SLITAZ_VERSION ; ls $PACKAGE-$VERSION*.tazpkg)"
   1.120  		busybox wget -s $PACKAGE_URL 2> /dev/null &&
   1.121  		PACKAGE_HREF="<a href=\"$PACKAGE_URL\">$PACKAGE</a>"
   1.122  		cat << _EOT_
   1.123 @@ -361,9 +388,7 @@
   1.124  		)
   1.125  	fi
   1.126  	[ -f $WOK/$i/receipt ] || continue
   1.127 -	DEPENDS=""
   1.128 -	BUILD_DEPENDS=""
   1.129 -	WANTED=""
   1.130 +	unset BUILD_DEPENDS DEPENDS WANTED
   1.131  	. $WOK/$i/receipt
   1.132  	if [ -n "$3" ]; then
   1.133  		[ -n "$BUILD_DEPENDS$WANTED" ] &&
   1.134 @@ -385,9 +410,7 @@
   1.135  	return;;
   1.136  esac
   1.137  for i in $WOK/* ; do
   1.138 -	DEPENDS=""
   1.139 -	BUILD_DEPENDS=""
   1.140 -	WANTED=""
   1.141 +	unset BUILD_DEPENDS DEPENDS WANTED
   1.142  	. $i/receipt
   1.143  	if [ -n "$2" ]; then
   1.144  		echo "$(basename $i) $(echo $WANTED $BUILD_DEPENDS)"
   1.145 @@ -439,7 +462,7 @@
   1.146  }
   1.147  
   1.148  display_packages_and_files() {
   1.149 -last=""
   1.150 +unset last
   1.151  while read pkg file; do
   1.152  	pkg=${pkg%:}
   1.153  	if [ "$pkg" != "$last" ]; then
   1.154 @@ -607,9 +630,9 @@
   1.155  <h3>$(eval_gettext "Dependency tree for: \$SEARCH")</h3>
   1.156  <pre>
   1.157  _EOT_
   1.158 -		ALL_DEPS=""
   1.159 +		unset ALL_DEPS
   1.160  		dep_scan $SEARCH ""
   1.161 -		SUGGESTED=""
   1.162 +		unset SUGGESTED
   1.163  		. $WOK/$SEARCH/receipt
   1.164  		if [ -n "$SUGGESTED" ]; then
   1.165  			cat << _EOT_
   1.166 @@ -618,7 +641,7 @@
   1.167  <h3>$(eval_gettext "Dependency tree for: \$SEARCH (SUGGESTED)")</h3>
   1.168  <pre>
   1.169  _EOT_
   1.170 -			ALL_DEPS=""
   1.171 +			unset ALL_DEPS
   1.172  			dep_scan "$SUGGESTED" "    "
   1.173  		fi
   1.174  		cat << _EOT_
   1.175 @@ -627,7 +650,7 @@
   1.176  <h3>$(eval_gettext "Reverse dependency tree for: \$SEARCH")</h3>
   1.177  <pre>
   1.178  _EOT_
   1.179 -		ALL_DEPS=""
   1.180 +		unset ALL_DEPS
   1.181  		rdep_scan $SEARCH
   1.182  		cat << _EOT_
   1.183  </pre>
   1.184 @@ -660,7 +683,7 @@
   1.185  <h3>$(eval_gettext "\$SEARCH needs these packages to be built")</h3>
   1.186  <pre>
   1.187  _EOT_
   1.188 -		ALL_DEPS=""
   1.189 +		unset ALL_DEPS
   1.190  		dep_scan $SEARCH "" build
   1.191  		cat << _EOT_
   1.192  </pre>
   1.193 @@ -668,7 +691,7 @@
   1.194  <h3>$(eval_gettext "Packages who need \$SEARCH to be built")</h3>
   1.195  <pre>
   1.196  _EOT_
   1.197 -		ALL_DEPS=""
   1.198 +		unset ALL_DEPS
   1.199  		rdep_scan $SEARCH build
   1.200  		cat << _EOT_
   1.201  </pre>
   1.202 @@ -713,7 +736,7 @@
   1.203  <h3>$(eval_gettext "Result for: \$SEARCH")</h3>
   1.204  <table>
   1.205  _EOT_
   1.206 -		last=""
   1.207 +		unset last
   1.208  		unlzma -c $filelist \
   1.209  		| grep "$SEARCH" | while read pkg file; do
   1.210  			echo "$file" | grep -q "$SEARCH" || continue
   1.211 @@ -750,7 +773,7 @@
   1.212  <h3>$(eval_gettext "Result for: \$SEARCH")</h3>
   1.213  <pre>
   1.214  _EOT_
   1.215 -		last=""
   1.216 +		unset last
   1.217  		unlzma -c $filelist \
   1.218  		| grep ^$SEARCH: | sed 's/.*: /    /' | sort
   1.219  		cat << _EOT_
   1.220 @@ -784,7 +807,7 @@
   1.221  <h3>$(eval_gettext "Result for: \$SEARCH")</h3>
   1.222  <table>
   1.223  _EOT_
   1.224 -		last=""
   1.225 +		unset last
   1.226  		grep -i "$SEARCH" $PACKAGES_REPOSITORY/packages.desc | \
   1.227  		sort | while read pkg extras ; do
   1.228  			. $WOK/$pkg/receipt
   1.229 @@ -796,6 +819,45 @@
   1.230  	fi
   1.231  	;;
   1.232  
   1.233 +Bugs)
   1.234 +	cat << _EOT_
   1.235 +
   1.236 +<h3>$(eval_gettext "Result for known bugs")</h3>
   1.237 +<pre>
   1.238 +_EOT_
   1.239 +	unset last
   1.240 +	grep ^BUGS= $WOK/*/receipt | \
   1.241 +	sed "s|$WOK/\(.*\)/receipt:.*|\1|" | sort | while read pkg ; do
   1.242 +		unset BUGS
   1.243 +		. $WOK/$pkg/receipt
   1.244 +		package_entry_inline
   1.245 +		echo "    $BUGS "
   1.246 +	done
   1.247 +	cat << _EOT_
   1.248 +</pre>
   1.249 +_EOT_
   1.250 +	;;
   1.251 +
   1.252 +
   1.253 +### Arch
   1.254 +Arch)
   1.255 +	cat << _EOT_
   1.256 +
   1.257 +<h3>$(eval_gettext "Result for: \$SEARCH")</h3>
   1.258 +<pre>
   1.259 +_EOT_
   1.260 +	unset last
   1.261 +	grep ^HOST_ARCH= $WOK/*/receipt |  grep -i "$SEARCH" | \
   1.262 +	sed "s|$WOK/\(.*\)/receipt:.*|\1|" | sort | while read pkg ; do
   1.263 +		unset HOST_ARCH
   1.264 +		. $WOK/$pkg/receipt
   1.265 +		echo " $HOST_ARCH " | grep -iq " $SEARCH " &&
   1.266 +		package_entry_inline
   1.267 +	done
   1.268 +	cat << _EOT_
   1.269 +</pre>
   1.270 +_EOT_
   1.271 +	;;
   1.272  
   1.273  ### Tags
   1.274  Tags)
   1.275 @@ -805,7 +867,7 @@
   1.276  <h3>$(eval_gettext "Result for: \$SEARCH")</h3>
   1.277  <table>
   1.278  _EOT_
   1.279 -		last=""
   1.280 +		unset last
   1.281  		grep ^TAGS= $WOK/*/receipt | grep -i "$SEARCH" | \
   1.282  		sed "s|$WOK/\(.*\)/receipt:.*|\1|" | sort | while read pkg ; do
   1.283  			. $WOK/$pkg/receipt
   1.284 @@ -876,7 +938,7 @@
   1.285  		do
   1.286  			. $WOK/$pkg/receipt
   1.287  			DESC=" <a href=\"?object=Desc&query=$pkg&lang=$lang&version=$SLITAZ_VERSION$(ifdebug '&')&submit=go\">$(gettext description)</a>"
   1.288 -			[ -f $WOK/$pkg/description.txt ] || DESC=""
   1.289 +			[ -f $WOK/$pkg/description.txt ] || unset DESC
   1.290  			cat << _EOT_
   1.291  $(package_entry)$DESC
   1.292  _EOT_