cookutils diff modules/pkgdb @ 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 | ea11d3c96873 |
children | 5f0da70605b6 |
line diff
1.1 --- a/modules/pkgdb Thu May 11 00:36:43 2017 +0300 1.2 +++ b/modules/pkgdb Wed Jun 07 21:39:55 2017 +0300 1.3 @@ -27,6 +27,7 @@ 1.4 # as well as flavors files for TazLiTo. We don't need logs since we do it 1.5 # manually to ensure everything is fine before syncing the mirror. 1.6 1.7 +# Find how much time was spent the last time (for web interface) 1.8 lastcooktime=$(sed '/Time:/!d; s|.*: *\([0-9]*\)s.*|\1|' $LOGS/pkgdb.log 2>/dev/null | sed '$!d') 1.9 [ -n "$lastcooktime" ] && echo "cook:pkgdb $lastcooktime $(date +%s)" >> $cooktime 1.10 while read cmd duration start; do 1.11 @@ -75,34 +76,41 @@ 1.12 _n 'Creating file "%s"' 'descriptions.txt' | dblog 1.13 rm $PKGS/descriptions.txt 2>/dev/null 1.14 for i in $(ls $WOK | sort); do 1.15 - if [ -e "$WOK/$i/description.txt" ]; then 1.16 - echo "$i" >> descriptions.txt 1.17 - cat "$WOK/$i/description.txt" | sed 's|^$| |' >> descriptions.txt 1.18 + [ -d "$WOK/$i/taz" ] || continue 1.19 + 1.20 + for j in $(ls $WOK/$i/taz | sort); do 1.21 + [ -e "$WOK/$i/taz/$j/description.txt" ] || continue 1.22 + 1.23 + pkgname=$(. $WOK/$i/taz/$j/receipt; echo $PACKAGE) 1.24 + echo "$pkgname" >> descriptions.txt 1.25 + cat "$WOK/$i/taz/$j/description.txt" | sed 's|^$| |' >> descriptions.txt 1.26 echo >> descriptions.txt 1.27 - fi 1.28 + done 1.29 done 1.30 echo " ($(filesize $PKGS/descriptions.txt))" | dblog 1.31 1.32 1.33 _ 'Creating lists from "%s"' "$WOK" | dblog 1.34 cd $WOK 1.35 -for pkg in *; do 1.36 - unset_receipt 1.37 - . $pkg/receipt 1.38 - # PACKED_SIZE and UNPACKED_SIZE are only in built receipt 1.39 - [ -s $pkg/taz/*/receipt ] && . $pkg/taz/*/receipt 1.40 +for i in *; do 1.41 + [ -d "$WOK/$i/taz" ] || continue 1.42 1.43 - if [ -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" ] || \ 1.44 - [ -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION-$ARCH.tazpkg" ]; then 1.45 + for j in $(ls $WOK/$i/taz | sort); do 1.46 + [ -f "$WOK/$i/taz/$j/receipt" ] || continue 1.47 + unset_receipt 1.48 + . $i/taz/$j/receipt 1.49 1.50 - # packages.desc lets us search easily in DB 1.51 - cat >> $PKGS/packages.desc <<EOT 1.52 + if [ -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" -o \ 1.53 + -f "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION-$ARCH.tazpkg" ]; then 1.54 + 1.55 + # packages.desc lets us search easily in DB 1.56 + cat >> $PKGS/packages.desc <<EOT 1.57 $PACKAGE | $VERSION$EXTRAVERSION | $SHORT_DESC | $CATEGORY | $WEB_SITE 1.58 EOT 1.59 1.60 - # packages.txt used by tazpkg and tazpkg-web also to provide 1.61 - # a human readable package list with version and description. 1.62 - cat >> $PKGS/packages.txt <<EOT 1.63 + # packages.txt used by tazpkg and tazpkg-web also to provide 1.64 + # a human readable package list with version and description. 1.65 + cat >> $PKGS/packages.txt <<EOT 1.66 $PACKAGE 1.67 $VERSION$EXTRAVERSION 1.68 $SHORT_DESC 1.69 @@ -110,38 +118,39 @@ 1.70 1.71 EOT 1.72 1.73 - # packages.info combines TazPkg separate files 1.74 - # and will substitute them all 1.75 - SIZES=$(echo $PACKED_SIZE $UNPACKED_SIZE | sed 's|\.0||g') 1.76 - DEPENDS=$(echo $DEPENDS) # remove newlines from some receipts 1.77 - MD5="$(fgrep " $PACKAGE-$VERSION$EXTRAVERSION.tazpkg" $PKGS/packages.md5 | awk '{print $1}')" 1.78 - cat >> $PKGS/packages.info <<EOT 1.79 + # packages.info combines TazPkg separate files 1.80 + # and will substitute them all 1.81 + SIZES=$(echo $PACKED_SIZE $UNPACKED_SIZE | sed 's|\.0||g') 1.82 + DEPENDS=$(echo $DEPENDS) # remove newlines from some receipts 1.83 + MD5="$(fgrep " $PACKAGE-$VERSION$EXTRAVERSION.tazpkg" $PKGS/packages.md5 | awk '{print $1}')" 1.84 + cat >> $PKGS/packages.info <<EOT 1.85 $PACKAGE $VERSION$EXTRAVERSION $CATEGORY $SHORT_DESC $WEB_SITE $TAGS $SIZES $DEPENDS $MD5 $PROVIDE 1.86 EOT 1.87 1.88 - # packages.equiv is used by tazpkg install to check depends. 1.89 - for i in $PROVIDE; do 1.90 - DEST='' 1.91 - echo $i | fgrep -q : && DEST="${i#*:}:" 1.92 - if grep -qs ^${i%:*}= $PKGS/packages.equiv; then 1.93 - sed -i "s/^${i%:*}=/${i%:*}=$DEST$PACKAGE /" \ 1.94 - $PKGS/packages.equiv 1.95 - else 1.96 - echo "${i%:*}=$DEST$PACKAGE" >> $PKGS/packages.equiv 1.97 + # packages.equiv is used by tazpkg install to check depends. 1.98 + for k in $PROVIDE; do 1.99 + DEST='' 1.100 + echo $k | fgrep -q : && DEST="${k#*:}:" 1.101 + if grep -qs ^${k%:*}= $PKGS/packages.equiv; then 1.102 + sed -i "s/^${k%:*}=/${k%:*}=$DEST$PACKAGE /" \ 1.103 + $PKGS/packages.equiv 1.104 + else 1.105 + echo "${k%:*}=$DEST$PACKAGE" >> $PKGS/packages.equiv 1.106 + fi 1.107 + done 1.108 + 1.109 + # files.list provides a list of all packages files. 1.110 + cat $i/taz/$j/files.list | sed s/^/"$i: \0"/ >> $PKGS/files.list 1.111 + 1.112 + # list of unnecessary packages 1.113 + sed -i "/ $PACKAGE-$VERSION$EXTRAVERSION.tazpkg/d" $PKGS/packages.toremove 1.114 + else 1.115 + # if receipt variable HOST_ARCH absent/empty or contains ARCH 1.116 + if [ -z "$HOST_ARCH" -o "${HOST_ARCH/$ARCH/}" != "$HOST_ARCH" ]; then 1.117 + _ ' - absent: %s (%s)' "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" "$ARCH" | dblog 1.118 fi 1.119 - done 1.120 - 1.121 - # files.list provides a list of all packages files. 1.122 - [ -d $pkg/taz ] && cat $pkg/taz/*/files.list | sed s/^/"$pkg: \0"/ >> $PKGS/files.list 1.123 - 1.124 - # list of unnecessary packages 1.125 - sed -i "/ $PACKAGE-$VERSION$EXTRAVERSION.tazpkg/d" $PKGS/packages.toremove 1.126 - else 1.127 - # if receipt variable HOST_ARCH absent/empty or contains ARCH 1.128 - if [ -z "$HOST_ARCH" -o "${HOST_ARCH/$ARCH/}" != "$HOST_ARCH" ]; then 1.129 - _ ' - absent: %s (%s)' "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" "$ARCH" | dblog 1.130 fi 1.131 - fi 1.132 + done 1.133 done 1.134 1.135 # Display list size.