cookutils rev 914

modules/pkgdb: works for receipts v2 too now.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Wed Jun 07 21:39:55 2017 +0300 (2017-06-07)
parents 1e4e278b2285
children d30a093674f6
files lighttpd/index.cgi modules/pkgdb
line diff
     1.1 --- a/lighttpd/index.cgi	Tue Jun 06 17:29:00 2017 +0300
     1.2 +++ b/lighttpd/index.cgi	Wed Jun 07 21:39:55 2017 +0300
     1.3 @@ -484,8 +484,8 @@
     1.4  				-e 's#^.*No package .* found.*#<b>\0</b>#' \
     1.5  				-e 's#^.*Unable to find.*#<b>\0</b>#' \
     1.6  				-e 's#^.*[Ii]nvalid.*#<b>\0</b>#' \
     1.7 -				-e 's#\([Nn][Oo][Tt] found\)$#<b>\1</b>#' \
     1.8 -				-e 's#\(found\)$#<i>\1</i>#' \
     1.9 +				-e 's#\([Nn][Oo][Tt] found\.*\)$#<b>\1</b>#' \
    1.10 +				-e 's#\(found\.*\)$#<i>\1</i>#' \
    1.11  				\
    1.12  				-e 's#^.*WARNING:.*#<u>\0</u>#' \
    1.13  				-e 's#^.*warning:.*#<u>\0</u>#' \
     2.1 --- a/modules/pkgdb	Tue Jun 06 17:29:00 2017 +0300
     2.2 +++ b/modules/pkgdb	Wed Jun 07 21:39:55 2017 +0300
     2.3 @@ -27,6 +27,7 @@
     2.4  # as well as flavors files for TazLiTo. We don't need logs since we do it
     2.5  # manually to ensure everything is fine before syncing the mirror.
     2.6  
     2.7 +# Find how much time was spent the last time (for web interface)
     2.8  lastcooktime=$(sed '/Time:/!d; s|.*: *\([0-9]*\)s.*|\1|' $LOGS/pkgdb.log 2>/dev/null | sed '$!d')
     2.9  [ -n "$lastcooktime" ] && echo "cook:pkgdb $lastcooktime $(date +%s)" >> $cooktime
    2.10  while read cmd duration start; do
    2.11 @@ -75,34 +76,41 @@
    2.12  _n 'Creating file "%s"' 'descriptions.txt' | dblog
    2.13  rm $PKGS/descriptions.txt 2>/dev/null
    2.14  for i in $(ls $WOK | sort); do
    2.15 -	if [ -e "$WOK/$i/description.txt" ]; then
    2.16 -		echo "$i" >> descriptions.txt
    2.17 -		cat "$WOK/$i/description.txt" | sed 's|^$| |' >> descriptions.txt
    2.18 +	[ -d "$WOK/$i/taz" ] || continue
    2.19 +
    2.20 +	for j in $(ls $WOK/$i/taz | sort); do
    2.21 +		[ -e "$WOK/$i/taz/$j/description.txt" ] || continue
    2.22 +
    2.23 +		pkgname=$(. $WOK/$i/taz/$j/receipt; echo $PACKAGE)
    2.24 +		echo "$pkgname" >> descriptions.txt
    2.25 +		cat "$WOK/$i/taz/$j/description.txt" | sed 's|^$| |' >> descriptions.txt
    2.26  		echo >> descriptions.txt
    2.27 -	fi
    2.28 +	done
    2.29  done
    2.30  echo " ($(filesize $PKGS/descriptions.txt))" | dblog
    2.31  
    2.32  
    2.33  _ 'Creating lists from "%s"' "$WOK" | dblog
    2.34  cd $WOK
    2.35 -for pkg in *; do
    2.36 -	unset_receipt
    2.37 -	. $pkg/receipt
    2.38 -	# PACKED_SIZE and UNPACKED_SIZE are only in built receipt
    2.39 -	[ -s $pkg/taz/*/receipt ] && . $pkg/taz/*/receipt
    2.40 +for i in *; do
    2.41 +	[ -d "$WOK/$i/taz" ] || continue
    2.42  
    2.43 -	if [ -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" ] || \
    2.44 -	   [ -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION-$ARCH.tazpkg" ]; then
    2.45 +	for j in $(ls $WOK/$i/taz | sort); do
    2.46 +		[ -f "$WOK/$i/taz/$j/receipt" ] || continue
    2.47 +		unset_receipt
    2.48 +		. $i/taz/$j/receipt
    2.49  
    2.50 -		# packages.desc lets us search easily in DB
    2.51 -		cat >> $PKGS/packages.desc <<EOT
    2.52 +		if [ -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" -o \
    2.53 +		     -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION-$ARCH.tazpkg" ]; then
    2.54 +
    2.55 +			# packages.desc lets us search easily in DB
    2.56 +			cat >> $PKGS/packages.desc <<EOT
    2.57  $PACKAGE | $VERSION$EXTRAVERSION | $SHORT_DESC | $CATEGORY | $WEB_SITE
    2.58  EOT
    2.59  
    2.60 -		# packages.txt used by tazpkg and tazpkg-web also to provide
    2.61 -		# a human readable package list with version and description.
    2.62 -		cat >> $PKGS/packages.txt <<EOT
    2.63 +			# packages.txt used by tazpkg and tazpkg-web also to provide
    2.64 +			# a human readable package list with version and description.
    2.65 +			cat >> $PKGS/packages.txt <<EOT
    2.66  $PACKAGE
    2.67  $VERSION$EXTRAVERSION
    2.68  $SHORT_DESC
    2.69 @@ -110,38 +118,39 @@
    2.70  
    2.71  EOT
    2.72  
    2.73 -		# packages.info combines TazPkg separate files
    2.74 -		# and will substitute them all
    2.75 -		SIZES=$(echo $PACKED_SIZE $UNPACKED_SIZE | sed 's|\.0||g')
    2.76 -		DEPENDS=$(echo $DEPENDS) # remove newlines from some receipts
    2.77 -		MD5="$(fgrep " $PACKAGE-$VERSION$EXTRAVERSION.tazpkg" $PKGS/packages.md5 | awk '{print $1}')"
    2.78 -		cat >> $PKGS/packages.info <<EOT
    2.79 +			# packages.info combines TazPkg separate files
    2.80 +			# and will substitute them all
    2.81 +			SIZES=$(echo $PACKED_SIZE $UNPACKED_SIZE | sed 's|\.0||g')
    2.82 +			DEPENDS=$(echo $DEPENDS) # remove newlines from some receipts
    2.83 +			MD5="$(fgrep " $PACKAGE-$VERSION$EXTRAVERSION.tazpkg" $PKGS/packages.md5 | awk '{print $1}')"
    2.84 +			cat >> $PKGS/packages.info <<EOT
    2.85  $PACKAGE	$VERSION$EXTRAVERSION	$CATEGORY	$SHORT_DESC	$WEB_SITE	$TAGS	$SIZES	$DEPENDS	$MD5	$PROVIDE
    2.86  EOT
    2.87  
    2.88 -		# packages.equiv is used by tazpkg install to check depends.
    2.89 -		for i in $PROVIDE; do
    2.90 -			DEST=''
    2.91 -			echo $i | fgrep -q : && DEST="${i#*:}:"
    2.92 -			if grep -qs ^${i%:*}= $PKGS/packages.equiv; then
    2.93 -				sed -i "s/^${i%:*}=/${i%:*}=$DEST$PACKAGE /" \
    2.94 -					$PKGS/packages.equiv
    2.95 -			else
    2.96 -				echo "${i%:*}=$DEST$PACKAGE" >> $PKGS/packages.equiv
    2.97 +			# packages.equiv is used by tazpkg install to check depends.
    2.98 +			for k in $PROVIDE; do
    2.99 +				DEST=''
   2.100 +				echo $k | fgrep -q : && DEST="${k#*:}:"
   2.101 +				if grep -qs ^${k%:*}= $PKGS/packages.equiv; then
   2.102 +					sed -i "s/^${k%:*}=/${k%:*}=$DEST$PACKAGE /" \
   2.103 +						$PKGS/packages.equiv
   2.104 +				else
   2.105 +					echo "${k%:*}=$DEST$PACKAGE" >> $PKGS/packages.equiv
   2.106 +				fi
   2.107 +			done
   2.108 +
   2.109 +			# files.list provides a list of all packages files.
   2.110 +			cat $i/taz/$j/files.list | sed s/^/"$i: \0"/ >> $PKGS/files.list
   2.111 +
   2.112 +			# list of unnecessary packages
   2.113 +			sed -i "/ $PACKAGE-$VERSION$EXTRAVERSION.tazpkg/d" $PKGS/packages.toremove
   2.114 +		else
   2.115 +			# if receipt variable HOST_ARCH absent/empty or contains ARCH
   2.116 +			if [ -z "$HOST_ARCH" -o "${HOST_ARCH/$ARCH/}" != "$HOST_ARCH" ]; then
   2.117 +				_ '  - absent: %s (%s)' "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" "$ARCH" | dblog
   2.118  			fi
   2.119 -		done
   2.120 -
   2.121 -		# files.list provides a list of all packages files.
   2.122 -		[ -d $pkg/taz ] && cat $pkg/taz/*/files.list | sed s/^/"$pkg: \0"/ >> $PKGS/files.list
   2.123 -
   2.124 -		# list of unnecessary packages
   2.125 -		sed -i "/ $PACKAGE-$VERSION$EXTRAVERSION.tazpkg/d" $PKGS/packages.toremove
   2.126 -	else
   2.127 -		# if receipt variable HOST_ARCH absent/empty or contains ARCH
   2.128 -		if [ -z "$HOST_ARCH" -o "${HOST_ARCH/$ARCH/}" != "$HOST_ARCH" ]; then
   2.129 -			_ '  - absent: %s (%s)' "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" "$ARCH" | dblog
   2.130  		fi
   2.131 -	fi
   2.132 +	done
   2.133  done
   2.134  
   2.135  # Display list size.