cookutils diff cook @ rev 932
Add modules/deps: check package's dependencies; cook: make/update split.db and files.list; modules/compressor: use static (i.e. unbreakable) versions of pngquant and optipng.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Sat Jun 17 23:56:37 2017 +0300 (2017-06-17) |
parents | 253b4ffeef27 |
children | 9b8a08ce85c9 |
line diff
1.1 --- a/cook Fri Jun 16 16:40:34 2017 +0300 1.2 +++ b/cook Sat Jun 17 23:56:37 2017 +0300 1.3 @@ -63,6 +63,7 @@ 1.4 --forced $(_ 'force reinstall of chroot packages.') 1.5 cook pkgdb 1.6 --flavors $(_ 'create up-to-date flavors files.') 1.7 +cook splitdb $(_ 'create up-to-date split.db file.') 1.8 1.9 EOT 1.10 exit 0 1.11 @@ -1034,7 +1035,7 @@ 1.12 tazpkg=$(ls *.tazpkg) 1.13 packit_quality 1.14 footer "$(_ 'Package "%s" created' "$tazpkg")" 1.15 - update_packages_info 1.16 + update_packages_db 1.17 } 1.18 1.19 1.20 @@ -1404,18 +1405,53 @@ 1.21 } 1.22 1.23 1.24 -# Update packages.info every time after successful build 1.25 +# Update packages database every time after successful build 1.26 1.27 -update_packages_info() { 1.28 - sed -i "/^$PACKAGE\t/d" $PKGS/packages.info 1.29 +update_packages_db() { 1.30 + # packages.info (unsorted, located near to packages) 1.31 + local pi="$PKGS/packages.info" 1.32 + sed -i "/^$PACKAGE\t/d" $pi 1.33 unset_receipt; . $pack/receipt 1.34 SIZES=$(echo $PACKED_SIZE $UNPACKED_SIZE | sed 's|\.0||g') 1.35 DEPENDS=$(echo $DEPENDS) # remove newlines, tabs and multiple spaces from variable 1.36 MD5="$(md5sum "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" | awk '{print $1}')" 1.37 - cat >> $PKGS/packages.info <<EOT 1.38 + cat >> $pi <<EOT 1.39 $PACKAGE $VERSION$EXTRAVERSION $CATEGORY $SHORT_DESC $WEB_SITE $TAGS $SIZES $DEPENDS $MD5 $PROVIDE 1.40 EOT 1.41 1.42 + # files.list (uncompressed, unsorted, located in $cache) 1.43 + local fl="$cache/files.list" 1.44 + touch $fl 1.45 + sed -i "/^$PACKAGE: /d" $fl 1.46 + sed "s/^/$PACKAGE: \0/" $pack/files.list >> $fl 1.47 +} 1.48 + 1.49 + 1.50 +# Update split.db once for receipt 1.51 + 1.52 +update_split_db() { 1.53 + local db="$cache/split.db" 1.54 + touch $db 1.55 + sed -i "/^$pkg\t/d" $db 1.56 + echo -e "$pkg\t$(all_names)" >> $db 1.57 +} 1.58 + 1.59 + 1.60 +# Recreate whole split.db from scratch 1.61 + 1.62 +recreate_split_db() { 1.63 + # Clean 1.64 + local db="$cache/split.db" 1.65 + touch $db 1.66 + > $db 1.67 + 1.68 + cd $WOK 1.69 + for i in *; do 1.70 + [ -f "$WOK/$i/receipt" ] || continue 1.71 + unset PACKAGE SPLIT 1.72 + . $WOK/$i/receipt 1.73 + echo -e "$PACKAGE\t$(all_names)" >> $db 1.74 + done 1.75 } 1.76 1.77 1.78 @@ -1425,6 +1461,10 @@ 1.79 # Commands 1.80 # 1.81 1.82 +# cook <package> --deps 1.83 +[ -n "$deps" ] && { @@PREFIX@@/libexec/cookutils/deps $1; exit 0; } 1.84 + 1.85 + 1.86 case "$1" in 1.87 usage|help|-u|-h) 1.88 usage ;; 1.89 @@ -1718,6 +1758,11 @@ 1.90 @@PREFIX@@/libexec/cookutils/pkgdb "$2" 1.91 ;; 1.92 1.93 + splitdb) 1.94 + # File split.db is useful for searching for split packages. 1.95 + recreate_split_db 1.96 + ;; 1.97 + 1.98 *) 1.99 # Just cook and generate a package. 1.100 check_root 1.101 @@ -1792,6 +1837,8 @@ 1.102 trap '_ "\n\nCook stopped: control-C\n\n" | \ 1.103 tee -a $LOGS/$pkg.log' INT 1.104 1.105 + update_split_db 1.106 + 1.107 # Handle --options 1.108 case "$2" in 1.109 --clean|-c) 1.110 @@ -1833,9 +1880,6 @@ 1.111 sed -i '$ s|$| [ Done ]|' $activity 1.112 rm -f $command 1.113 exit 0 ;; 1.114 - 1.115 - --cdeps) 1.116 - @@PREFIX@@/libexec/cookutils/cdeps $pkg 1.117 esac 1.118 1.119 # Rotate log