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