cookutils rev 904

Introduce SliTaz packages receipts v2. Tune 'cook' and 'lighttpd/index.cgi' for it. Small improvements to CSS styles.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri May 26 16:22:26 2017 +0300 (2017-05-26)
parents f3a90eaf1154
children c711ef2e51a9
files cook lighttpd/cooker-midnight.css lighttpd/cooker.css lighttpd/index.cgi
line diff
     1.1 --- a/cook	Thu May 18 13:14:23 2017 +0300
     1.2 +++ b/cook	Fri May 26 16:22:26 2017 +0300
     1.3 @@ -84,12 +84,6 @@
     1.4  }
     1.5  
     1.6  
     1.7 -if_empty_value() {
     1.8 -	# L10n: QA is quality assurance
     1.9 -	[ -n "$value" ] || die 'QA: empty variable: %s' "$var=\"\""
    1.10 -}
    1.11 -
    1.12 -
    1.13  # Initialize files used in $CACHE
    1.14  
    1.15  init_db_files() {
    1.16 @@ -104,19 +98,15 @@
    1.17  
    1.18  receipt_quality() {
    1.19  	_ 'QA: checking package receipt...'
    1.20 -	unset online
    1.21 -	if ifconfig | grep -q -A 1 "^[a-z]*[0-9]" | fgrep 'addr:'; then
    1.22 -		online='online'
    1.23 -	fi
    1.24 +
    1.25  	for var in PACKAGE VERSION CATEGORY SHORT_DESC MAINTAINER WEB_SITE; do
    1.26  		unset value
    1.27  		value="$(. $receipt; eval echo \$$var)"
    1.28 +		# L10n: QA is quality assurance
    1.29 +		[ -n "$value" ] || die 'QA: empty variable: %s' "$var=\"\""
    1.30 +
    1.31  		case "$var" in
    1.32 -			PACKAGE|VERSION|SHORT_DESC)
    1.33 -				if_empty_value
    1.34 -				;;
    1.35  			CATEGORY)
    1.36 -				value="${value:-empty}"
    1.37  				valid="$(echo $PKGS_CATEGORIES)" # avoid newlines
    1.38  				if ! echo " $valid " | grep -q " $value "; then
    1.39  					_ 'QA: unknown category "%s"' "$value"
    1.40 @@ -126,9 +116,8 @@
    1.41  			WEB_SITE)
    1.42  				# We don't check WGET_URL since if dl is needed it will fail.
    1.43  				# Break also if we're not online. Here error is not fatal.
    1.44 -				if_empty_value
    1.45 -				[ -z "$online" ] && break
    1.46 -				if ! busybox wget -T 12 -s $value 2>/dev/null; then
    1.47 +				if ifconfig | grep -A1 '^[a-z]*[0-9]' | fgrep -q 'addr:' && \
    1.48 +				! busybox wget -T 12 --spider $value 2>/dev/null; then
    1.49  					_ 'QA: unable to reach "%s"' "$value"
    1.50  				fi
    1.51  				;;
    1.52 @@ -140,46 +129,45 @@
    1.53  # Paths used in receipt and by cook itself.
    1.54  
    1.55  set_paths() {
    1.56 -	pkgdir="$WOK/$PACKAGE"
    1.57 +	pkgdir="$WOK/$pkg"
    1.58  	. "$pkgdir/receipt"
    1.59  	basesrc="$pkgdir/source"
    1.60  	tmpsrc="$basesrc/tmp"
    1.61  	src="$basesrc/$PACKAGE-$VERSION"
    1.62  	taz="$pkgdir/taz"
    1.63 -	pack="$taz/$PACKAGE-$VERSION$EXTRAVERSION"
    1.64 +	pack="$taz/${1:-$PACKAGE}-$VERSION$EXTRAVERSION"	# v2: multiple taz/* folders
    1.65  	fs="$pack/fs"
    1.66  	stuff="$pkgdir/stuff"
    1.67  	install="$pkgdir/install"
    1.68 +
    1.69  	pkgsrc="${SOURCE:-$PACKAGE}-${KBASEVER:-$VERSION}"
    1.70  	lzma_tarball="$pkgsrc.tar.lzma"
    1.71 -	if [ -n "$PATCH" ]; then
    1.72 -		[ -z "$PTARBALL" ] && PTARBALL="$(basename $PATCH)"
    1.73 -	fi
    1.74 +
    1.75 +	[ -n "$PATCH" -a -z "$PTARBALL" ] && PTARBALL="$(basename $PATCH)"
    1.76 +
    1.77  	if [ -n "$WANTED" ]; then
    1.78  		basesrc="$WOK/$WANTED/source"
    1.79  		src="$basesrc/$WANTED-$VERSION"
    1.80  		install="$WOK/$WANTED/install"
    1.81  		wanted_stuff="$WOK/$WANTED/stuff"
    1.82  	fi
    1.83 -	if [ -n "$SOURCE" ]; then
    1.84 -		source_stuff="$WOK/$SOURCE/stuff"
    1.85 -	fi
    1.86 +
    1.87 +	[ -n "$SOURCE" ] && source_stuff="$WOK/$SOURCE/stuff"
    1.88 +
    1.89  	# Kernel version is set from wok/linux or installed/linux-api-headers(wok-undigest)
    1.90  	if [ -f "$WOK/linux/receipt" ]; then
    1.91 -		kvers=$(grep ^VERSION= $WOK/linux/receipt | cut -d\" -f2)
    1.92 -		kbasevers=${kvers:0:3}
    1.93 +		kvers=$(. $WOK/linux/receipt; echo $VERSION)
    1.94 +		kbasevers=$(echo $kvers | cut -d. -f1,2)
    1.95  	elif [ -f "$INSTALLED/linux-api-headers/receipt" ]; then
    1.96 -		kvers=$(grep ^VERSION= $INSTALLED/linux-api-headers/receipt | cut -d\" -f2)
    1.97 -		kbasevers=${kvers:0:3}
    1.98 +		kvers=$(. $INSTALLED/linux-api-headers/receipt; echo $VERSION)
    1.99 +		kbasevers=$(echo $kvers | cut -d. -f1,2)
   1.100  	fi
   1.101 +
   1.102  	# Python version
   1.103 -	if [ -f "$WOK/python/receipt" ]; then
   1.104 -		pyvers=$(grep ^VERSION= $WOK/python/receipt | cut -d\" -f2)
   1.105 -	fi
   1.106 +	[ -f "$WOK/python/receipt" ] && pyvers=$(. $WOK/python/receipt; echo $VERSION)
   1.107  	# Perl version for some packages needed it
   1.108 -	if [ -f "$WOK/perl/receipt" ]; then
   1.109 -		perlvers=$(grep ^VERSION= $WOK/perl/receipt | cut -d\" -f2)
   1.110 -	fi
   1.111 +	[ -f "$WOK/perl/receipt" ] && perlvers=$(. $WOK/perl/receipt; echo $VERSION)
   1.112 +
   1.113  	# Old way compatibility.
   1.114  	_pkg="$install"
   1.115  }
   1.116 @@ -349,25 +337,32 @@
   1.117  	cd $WOK/$pkg
   1.118  	[ -d $WOK/$pkg/install ] && prod=$(du -sh $WOK/$pkg/install | awk '{print $1}' 2>/dev/null)
   1.119  	[ -d $WOK/$pkg/source ] && srcdir=$(du -sh $WOK/$pkg/source | awk '{print $1}' 2>/dev/null)
   1.120 -	fs=$(du -sh $WOK/$pkg/taz/* | awk '{print $1}')
   1.121 -	size=$(ls -lh $PKGS/$pkg-${VERSION}*.tazpkg | awk '{print $5}')
   1.122 -	files=$(cat $WOK/$pkg/taz/$pkg-*/files.list | wc -l)		# please keep cat here, otherwise it'll not work
   1.123  	[ -n "$TARBALL" ] && srcsize=$(du -sh $SRC/$TARBALL | awk '{print $1}')
   1.124  
   1.125  	_ 'Summary for: %s' "$PACKAGE $VERSION"
   1.126  	separator
   1.127  
   1.128  	# L10n: keep the same width of translations to get a consistent view
   1.129 -	[ -n "$srcdir" ]  && _ 'Source dir  : %s' "$srcdir"
   1.130  	[ -n "$TARBALL" ] && _ 'Src file    : %s' "$TARBALL"
   1.131  	[ -n "$srcsize" ] && _ 'Src size    : %s' "$srcsize"
   1.132 +	[ -n "$srcdir" ]  && _ 'Source dir  : %s' "$srcdir"
   1.133  	[ -n "$prod" ]    && _ 'Produced    : %s' "$prod"
   1.134 -	_ 'Packed      : %s' "$fs"
   1.135 -	_ 'Compressed  : %s' "$size"
   1.136 -	_ 'Files       : %s' "$files"
   1.137  	_ 'Cook time   : %s' "$(disp_time "$time")"
   1.138  	_ 'Cook date   : %s' "$(date "$(_ '+%%F %%R')")"
   1.139  	_ 'Host arch   : %s' "$ARCH"
   1.140 +
   1.141 +	separator -
   1.142 +	_ ' # : Packed : Compressed : Files : Package name'
   1.143 +	separator -
   1.144 +	pkgi=1
   1.145 +	for i in $PACKAGE $SPLIT; do
   1.146 +		fs=$(du -sh $WOK/$pkg/taz/$i-$VERSION | awk '{print $1}')
   1.147 +		pkgname="$i-$VERSION.tazpkg"
   1.148 +		size=$(ls -lh $PKGS/$pkgname | awk '{print $5}')
   1.149 +		files=$(wc -l < $WOK/$pkg/taz/$i-$VERSION/files.list)
   1.150 +		printf "%2d : %6s : %10s : %5s : %s\n" "$pkgi" "$fs" "$size" "$files" "$pkgname"
   1.151 +		pkgi=$((pkgi + 1))
   1.152 +	done
   1.153  	separator
   1.154  }
   1.155  
   1.156 @@ -381,7 +376,7 @@
   1.157  	_ 'Cook date: %s' "$(date "$(_ '+%%F %%R')")"
   1.158  	if [ -n "$time" ]; then
   1.159  		times="$(($(date +%s) - $time))"
   1.160 -		_ 'Cook time   : %s' "$(disp_time "$times")"
   1.161 +		_ 'Wasted time : %s' "$(disp_time "$times")"
   1.162  	fi
   1.163  	for error in \
   1.164  		ERROR 'No package' "cp: can't" "can't open" "can't cd" \
   1.165 @@ -588,6 +583,7 @@
   1.166  	esac
   1.167  
   1.168  	[ -n "$QA" ] && receipt_quality
   1.169 +
   1.170  	cd $pkgdir
   1.171  	[ -z "$continue" ] && rm -rf source 2>/dev/null
   1.172  	rm -rf install taz 2>/dev/null
   1.173 @@ -607,6 +603,12 @@
   1.174  	export DESTDIR MAKEFLAGS CFLAGS CXXFLAGS CONFIG_SITE LC_ALL=C LANG=C
   1.175  	#LDFLAGS
   1.176  
   1.177 +	# BUILD_DEPENDS may vary depending on the ARCH
   1.178 +	case "$ARCH" in
   1.179 +		arm*)   [ -n "$BUILD_DEPENDS_arm" ]    && BUILD_DEPENDS=$BUILD_DEPENDS_arm    ;;
   1.180 +		x86_64) [ -n "$BUILD_DEPENDS_x86_64" ] && BUILD_DEPENDS=$BUILD_DEPENDS_x86_64 ;;
   1.181 +	esac
   1.182 +
   1.183  	# Check for build deps and handle implicit depends of *-dev packages
   1.184  	# (ex: libusb-dev :: libusb).
   1.185  	rm -f $CACHE/installed.local $CACHE/installed.web $CACHE/missing.dep
   1.186 @@ -616,6 +618,8 @@
   1.187  	for dep in $BUILD_DEPENDS; do
   1.188  		implicit="${dep%-dev}"; [ "$implicit" == "$dep" ] && implicit=''
   1.189  		for i in $dep $implicit; do
   1.190 +#			echo "i='$i'"
   1.191 +			# Check if package already installed
   1.192  			[ -f "$root$INSTALLED/$i/receipt" ] && continue
   1.193  
   1.194  			# Try local package first.
   1.195 @@ -688,7 +692,7 @@
   1.196  	# use local packages).
   1.197  	for i in $(uniq $CACHE/installed.web); do
   1.198  		# _ 'Installing dep (web/cache): %s' "$i"
   1.199 -		tazpkg get-install $i --root=$root --quiet --cookmode
   1.200 +		tazpkg get-install $i --root=$root --local --quiet --cookmode
   1.201  	done
   1.202  
   1.203  	update_installed_cook_diff
   1.204 @@ -796,29 +800,29 @@
   1.205  
   1.206  mk_pkg_receipt() {
   1.207  	orig_receipt="$1"
   1.208 -	# $pkg is package name
   1.209  
   1.210  	# Receipt's signature is important, although some receipts may miss it
   1.211  	signature=$(head -n1 "$orig_receipt")
   1.212  	[ "${signature:0:1}" == '#' ] || signature='# SliTaz package receipt.'
   1.213  
   1.214 +	save_PACKAGE="$PACKAGE"; save_DEPENDS="$DEPENDS"; save_PROVIDE="$PROVIDE"
   1.215 +	unset_receipt
   1.216  	. "$orig_receipt"
   1.217 -
   1.218 -	# Is package split one?
   1.219 -	[ -n "$SPLIT" -a "${SPLIT/$pkg/}" != "$SPLIT" ]; splitted=$?
   1.220 +	PACKAGE="$save_PACKAGE"; DEPENDS="$save_DEPENDS"; PROVIDE="$save_PROVIDE"
   1.221  
   1.222  	# Manage split packages
   1.223 -	if $splitted; then
   1.224 +	SPLIT=" $SPLIT "
   1.225 +	if [ "$SPLIT" != '  ' -a "${SPLIT/ $PACKAGE /}" != "$SPLIT" ]; then
   1.226  		# For packages with empty $DEPENDS
   1.227 -		[ -n "$DEPENDS" ] || DEPENDS="$PACKAGE"
   1.228 +		[ -n "$DEPENDS" ] || DEPENDS="$pkg"
   1.229  
   1.230  		# Default $CAT
   1.231  		[ -z "$CAT" ] &&
   1.232 -		case $pkg in
   1.233 +		case $PACKAGE in
   1.234  			*-dev) CAT="development|development files" ;;
   1.235  		esac
   1.236  
   1.237 -		# Manage $CAT
   1.238 +		# Manage two-in-one $CAT="$CATEGORY|$SHORT_DESC_ADDITION"
   1.239  		CATEGORY="${CAT%|*}"
   1.240  		SHORT_DESC="$SHORT_DESC (${CAT#*|})"
   1.241  	fi
   1.242 @@ -838,12 +842,13 @@
   1.243  
   1.244  	# Optional variables
   1.245  	[ -n "$TAGS" ]    && echo "TAGS=\"$TAGS\""
   1.246 -	[ -n "$DEPENDS" ] && echo "DEPENDS=\"$DEPENDS\""
   1.247 +	[ -n "$DEPENDS" ] && echo "DEPENDS=\"$DEPENDS\"" | tr -ds '\t' ' '
   1.248 +	[ -n "$PROVIDE" ] && echo "PROVIDE=\"$PROVIDE\""
   1.249  
   1.250  	# Extract {pre,post}_{install,remove} functions
   1.251  	for i in pre post; do
   1.252  		for j in install remove; do
   1.253 -			if grep -q "^${i}_$j()"; then
   1.254 +			if grep -q "^${i}_$j()" "$orig_receipt"; then
   1.255  				echo
   1.256  				sed "/^${i}_$j()/,/}/!d" "$orig_receipt"
   1.257  			fi
   1.258 @@ -856,7 +861,8 @@
   1.259  # but it doesn't handle EXTRAVERSION.
   1.260  
   1.261  packit() {
   1.262 -	set_paths
   1.263 +	set_paths "$1"
   1.264 +	PACKAGE="${1:-$PACKAGE}"
   1.265  
   1.266  	# Handle cross compilation
   1.267  	case "$ARCH" in
   1.268 @@ -894,11 +900,18 @@
   1.269  	fi
   1.270  
   1.271  	cd $taz
   1.272 -	for file in receipt description.txt; do
   1.273 -		[ ! -f "../$file" ] && continue
   1.274 -		action 'Copying "%s"...' "$file"
   1.275 -		cp -f ../$file $pack; chown 0.0 $pack/$file; status
   1.276 -	done
   1.277 +	action 'Copying "%s"...' 'receipt'
   1.278 +	mk_pkg_receipt ../receipt > $pack/receipt
   1.279 +	chown 0.0 $pack/receipt; status
   1.280 +
   1.281 +	unset desc
   1.282 +	[ "$pkg" == "$PACKAGE" -a -f "../description.txt" ] && desc="../description.txt"
   1.283 +	[ -f "../description.$PACKAGE.txt" ] && desc="../description.$PACKAGE.txt"
   1.284 +	if [ -n "$desc" ]; then
   1.285 +		action 'Copying "%s"...' "$(basename "$desc")"
   1.286 +		cp -f $desc $pack/description.txt; chown 0.0 $pack/description.txt; status
   1.287 +	fi
   1.288 +
   1.289  	copy_generic_files
   1.290  
   1.291  	# Strip and stuff files.
   1.292 @@ -927,11 +940,11 @@
   1.293  	UNPACKED_SIZE=$(du -chs fs receipt files.list md5sum description.txt \
   1.294  		2>/dev/null | awk 'END{ print $1 }')
   1.295  
   1.296 -	# Build cpio archives.
   1.297 +	# Build cpio archive.
   1.298  	action 'Compressing the FS...'
   1.299 -	find fs -newer $receipt -exec touch -hr $receipt {} \;
   1.300 +	find fs -newer $receipt -exec touch -hr $receipt '{}' \;
   1.301  	find fs | cpio -o -H newc --quiet | lzma e fs.cpio.lzma -si
   1.302 -	rm -rf fs
   1.303 +	mv fs ../
   1.304  	status
   1.305  
   1.306  	PACKED_SIZE=$(du -chs fs.cpio.lzma receipt files.list md5sum description.txt \
   1.307 @@ -953,12 +966,12 @@
   1.308  
   1.309  	# Compress.
   1.310  	action 'Creating full cpio archive...'
   1.311 -	find . -print | cpio -o -H newc --quiet > \
   1.312 -		../$PACKAGE-$VERSION$EXTRAVERSION$arch.tazpkg
   1.313 +	find . -newer $receipt -exec touch -hr $receipt '{}' \;
   1.314 +	find . | cpio -o -H newc --quiet > ../$PACKAGE-$VERSION$EXTRAVERSION$arch.tazpkg
   1.315  	status
   1.316  
   1.317  	action 'Restoring original package tree...'
   1.318 -	unlzma -c fs.cpio.lzma | cpio -idm --quiet
   1.319 +	mv ../fs .
   1.320  	status
   1.321  
   1.322  	rm fs.cpio.lzma; cd ..
   1.323 @@ -967,6 +980,7 @@
   1.324  	tazpkg=$(ls *.tazpkg)
   1.325  	packit_quality
   1.326  	footer "$(_ 'Package "%s" created' "$tazpkg")"
   1.327 +	update_packages_info
   1.328  }
   1.329  
   1.330  
   1.331 @@ -986,7 +1000,7 @@
   1.332  	fi
   1.333  
   1.334  	action 'QA: checking for empty package...'
   1.335 -	files=$(cat $WOK/$pkg/taz/$pkg-*/files.list | wc -l)
   1.336 +	files=$(cat $WOK/$pkg/taz/$PACKAGE-$VERSION/files.list | wc -l)
   1.337  	if [ "$files" -eq 0 -a "$CATEGORY" != 'meta' ]; then
   1.338  		broken
   1.339  		rm -f $command
   1.340 @@ -996,25 +1010,40 @@
   1.341  	:; status
   1.342  	# Find and remove old package(s)
   1.343  	tempd="$(mktemp -d)"; cd "$tempd"
   1.344 -	for testpkg in $(ls $PKGS/$pkg-*.tazpkg 2> /dev/null); do
   1.345 +	for testpkg in $(ls $PKGS/$PACKAGE-*.tazpkg 2> /dev/null); do
   1.346  		# Extract receipt from each matched package
   1.347  		cpio -F "$testpkg" -i receipt >/dev/null 2>&1
   1.348  		name=$(. receipt; echo $PACKAGE)
   1.349  		rm receipt
   1.350 -		if [ "$name" == "$pkg" ]; then
   1.351 +		if [ "$name" == "$PACKAGE" ]; then
   1.352  			action 'Removing old package "%s"' "$(basename "$testpkg")"
   1.353  			rm -f "$testpkg"
   1.354  			status
   1.355  		fi
   1.356  	done
   1.357  	rm -r "$tempd"
   1.358 -	mv -f $pkgdir/taz/$pkg-*.tazpkg $PKGS
   1.359 +	mv -f $pkgdir/taz/$PACKAGE-$VERSION.tazpkg $PKGS
   1.360  	sed -i /^${pkg}$/d $broken
   1.361  	#action 'Removing source tree...'
   1.362  	#rm -f $WOK/$pkg/source; status
   1.363  }
   1.364  
   1.365  
   1.366 +# v2: pack all packages using compiled files
   1.367 +
   1.368 +packall() {
   1.369 +	set_paths
   1.370 +	if head -n1 "$pkgdir/receipt" | fgrep -q 'v2'; then
   1.371 +		for i in $PACKAGE $SPLIT; do
   1.372 +			unset DEPENDS CAT
   1.373 +			packit $i
   1.374 +		done
   1.375 +	else
   1.376 +		packit
   1.377 +	fi
   1.378 +}
   1.379 +
   1.380 +
   1.381  # Reverse "cat" command: prints input lines in the reverse order
   1.382  
   1.383  tac() {
   1.384 @@ -1227,8 +1256,9 @@
   1.385  				sed '/\.h$/d; /\.hxx$/d; /\.a$/d; /\.la$/d; /\.pc$/d; /bin\/.*-config$/d;
   1.386  					/\.m4$/d; /\.gir$/d; /\.typelib$/d; /\.vapi$/d; /\.deps$/d;
   1.387  					/\/include\//d;
   1.388 -					/\/share\/man\//d; /\/share\/doc\//d; /\/share\/info\//d; /\/share\/locale\//d;
   1.389 -					/\/share\/bash-completion\//d;
   1.390 +					/\/share\/man\//d; /\/share\/doc\//d; /\/share\/gtk-doc\//d; /\/share\/info\//d;
   1.391 +					/\/share\/devhelp\//d; /\/share\/locale\//d;
   1.392 +					/\/share\/bash-completion\//d; /\/lib\/systemd\//d;
   1.393  					' $filelist > $tmplist
   1.394  				while read j; do
   1.395  					mkdir -p $fs$(dirname $j)
   1.396 @@ -1287,11 +1317,10 @@
   1.397  # Update packages.info every time after successful build
   1.398  
   1.399  update_packages_info() {
   1.400 -	sed -i "/^$pkg\t/d" $PKGS/packages.info
   1.401 -	PACKAGE="$pkg"; set_paths
   1.402 +	sed -i "/^$PACKAGE\t/d" $PKGS/packages.info
   1.403  	unset_receipt; . $pack/receipt
   1.404  	SIZES=$(echo $PACKED_SIZE $UNPACKED_SIZE | sed 's|\.0||g')
   1.405 -	DEPENDS=$(echo $DEPENDS) # remove newlines from some receipts
   1.406 +	DEPENDS=$(echo $DEPENDS) # remove newlines, tabs and multiple spaces from variable
   1.407  	MD5="$(md5sum "$PKGS/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" | awk '{print $1}')"
   1.408  	cat >> $PKGS/packages.info <<EOT
   1.409  $PACKAGE	$VERSION$EXTRAVERSION	$CATEGORY	$SHORT_DESC	$WEB_SITE	$TAGS	$SIZES	$DEPENDS	$MD5	$PROVIDE
   1.410 @@ -1736,7 +1765,7 @@
   1.411  		cookit $@ 2>&1 | loglimit 50 > $LOGS/$pkg.log
   1.412  		remove_deps | tee -a $LOGS/$pkg.log
   1.413  		cookit_quality
   1.414 -		packit 2>&1 | loglimit 5 >> $LOGS/$pkg.log
   1.415 +		packall 2>&1 | loglimit 5 >> $LOGS/$pkg.log
   1.416  		clean_log
   1.417  
   1.418  		# Exit if any error in packing.
   1.419 @@ -1761,7 +1790,6 @@
   1.420  		[ -s /aufs-umount.sh ] || install_package
   1.421  
   1.422  		sed -i '$ s|$| [ Done ]|' $activity
   1.423 -		update_packages_info
   1.424  
   1.425  		# Finally we DON'T WANT to build the *-dev or packages with WANTED="$pkg"
   1.426  		# If you want automation, use the Cooker Build Bot.
     2.1 --- a/lighttpd/cooker-midnight.css	Thu May 18 13:14:23 2017 +0300
     2.2 +++ b/lighttpd/cooker-midnight.css	Fri May 26 16:22:26 2017 +0300
     2.3 @@ -3,7 +3,7 @@
     2.4  section{background-color:#222;box-shadow:none}
     2.5  tr:nth-child(2n){background:#2E2E2E!important}
     2.6  tr:nth-child(2n+1){background:#222!important}
     2.7 -h2,h3{color:#999}
     2.8 +h2,h3,th{color:#999}
     2.9  section,div.list{padding:2px}
    2.10  section h2,section h3{background:#333}
    2.11  .activity td:first-child,.cooknotes td:first-child,td.m{color:#888}
    2.12 @@ -22,3 +22,6 @@
    2.13  .button.browse{background:hsl(170,100%,15%)}
    2.14  .button.doc{background:hsl(300,100%,15%)}
    2.15  .button.log{background:hsl(0,0%,15%)}
    2.16 +.log em{background:#456}
    2.17 +[class*="bigicon-"]{color:#222}
    2.18 +.log a[name]:hover{color:#88C}
     3.1 --- a/lighttpd/cooker.css	Thu May 18 13:14:23 2017 +0300
     3.2 +++ b/lighttpd/cooker.css	Fri May 26 16:22:26 2017 +0300
     3.3 @@ -311,7 +311,7 @@
     3.4  /* Table */
     3.5  
     3.6  table { width: 100%; box-sizing: border-box; border-collapse: collapse; /*box-shadow: 0 0 4px rgba(0,0,0,0.3);*/ }
     3.7 -th { background-color: rgba(0,0,0,0.2); padding: 3px; }
     3.8 +th { color: rgba(0,0,0,0.6); background-color: rgba(0,0,0,0.2); padding: 3px; }
     3.9  td { padding: 2px; vertical-align: top; }
    3.10  td:first-child { white-space: nowrap; width: 5rem; }
    3.11  td+td, th+th { border-left: 1px solid rgba(0,0,0,0.1); }
    3.12 @@ -323,6 +323,10 @@
    3.13  tbody tr:nth-child(even) {
    3.14  	background-color: hsla(0, 0%,   0%, 0.05);
    3.15  }
    3.16 +.pkgslist { margin-top: 1.6em; }
    3.17 +.pkgslist td:nth-child(1), .pkgslist td:nth-child(2), .pkgslist td:nth-child(3), .pkgslist td:nth-child(4) {
    3.18 +	white-space: nowrap; width: 1rem; text-align: right;
    3.19 +}
    3.20  
    3.21  
    3.22  
     4.1 --- a/lighttpd/index.cgi	Thu May 18 13:14:23 2017 +0300
     4.2 +++ b/lighttpd/index.cgi	Fri May 26 16:22:26 2017 +0300
     4.3 @@ -575,15 +575,28 @@
     4.4  		if grep -q "cook:$pkg$" $command; then
     4.5  			show_note i "The Cooker is currently building $pkg"
     4.6  		elif fgrep -q "Summary for:" $log; then
     4.7 -			sed '/^Summary for:/,$!d' $log | head -n13 | awk '
     4.8 +			sed '/^Summary for:/,$!d' $log | awk '
     4.9  			BEGIN { print "<section>" }
    4.10 +			function row(line) {
    4.11 +				split(line, s, " : ");
    4.12 +				printf("\t<tr><td>%s</td><td>%s</td></tr>\n", s[1], s[2]);
    4.13 +			}
    4.14 +			function row2(line, rowNum) {
    4.15 +				split(line, s, " : ");
    4.16 +				if (rowNum == 1)
    4.17 +					printf("\t<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>\n", s[1], s[2], s[3], s[4], s[5]);
    4.18 +				else
    4.19 +					printf("\t<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", s[1], s[2], s[3], s[4], s[5]);
    4.20 +			}
    4.21  			{
    4.22 -				if (NR==1) {
    4.23 -					printf("<h3>%s</h3>\n<table>\n", $0)
    4.24 -				} else if ($0 !~ "===") {
    4.25 -					split($0, s, " : ");
    4.26 -					printf("<tr><td>%s</td><td>%s</td></tr>", s[1], s[2]);
    4.27 +				if (NR==1) { printf("<h3>%s</h3>\n<table>\n", $0); next }
    4.28 +				if ($0 ~ "===") { seen++; if (seen == 1) next; else exit; }
    4.29 +				if ($0 ~ "---") {
    4.30 +					seen2++;
    4.31 +					if (seen2 == 1) printf("</table>\n<table class=\"pkgslist\">\n")
    4.32 +					next
    4.33  				}
    4.34 +				if (seen2) row2($0, seen2); else row($0);
    4.35  			}
    4.36  			END { print "</table></section>" }
    4.37  			'
    4.38 @@ -1022,7 +1035,7 @@
    4.39  			echo -n '<section><h3>Unpackaged files:</h3><pre class="files">'
    4.40  			echo "$orphans" | awk '
    4.41  			function tag(text, color) { printf("<span class=\"c%s1\">%s</span> %s\n", color, text, $0); }
    4.42 -			/\/perllocal.pod$/ || /\/\.packlist$/ || /\/share\/bash-completion\// { tag("---", 0); next }
    4.43 +			/\/perllocal.pod$/ || /\/\.packlist$/ || /\/share\/bash-completion\// || /\/lib\/systemd\// { tag("---", 0); next }
    4.44  			/\.pod$/  { tag("pod", 5); next }
    4.45  			/\/share\/man\// { tag("man", 5); next }
    4.46  			/\/share\/doc\// || /\/share\/gtk-doc\// || /\/share\/info\// || /\/share\/devhelp\// { tag("doc", 5); next }