#!/usr/local/plan9/bin/rc

nl='
'

fn comma {
	if(! ~ $#* 0 1){
		echo -n $1
		shift
		sep=' '
		len=0
		for(i){
			echo -n $sep$i
			sep=', '
			l=`{echo -n $sep$i|9 wc -c}
			len=`{echo $l+$len | hoc}
			if(test $len -gt 60){
				sep=','^$nl^' '
				len=0
			}
		}
		echo
	}
}

if(~ $#* 1 && ~ $1 all)
	*=`{9 ls -p ../pkg | grep -v CVS}

if(~ $#TREE9 0)
	TREE9=$PLAN9

date=`{u date +%Y%m%d}
march=`{uname -m}
arch=all
switch($march){
case i*86
	march=i386
}

for(i)@{
	if(! test -f ../pkg/$i){
		echo no package ../pkg/$i
		exit 1
	}
	package=plan9port-$i
	grepfor=$i
	. ../pkg/$i
	deb=$package^_$date^_$arch.deb
	rm -rf $i $deb
	mkdir $i $i/DEBIAN
	whatis grepfor
	awk -v'grepfor='$grepfor -v 'pkg='$i -v 'plan9='$TREE9 '
	BEGIN { print "grep for " grepfor >"/dev/stderr" }
	$2==grepfor {
		dir=$1
		sub("/[^/]+$", "/", dir)
		if(dir != lastdir){
			printf("mkdir -p ''%s''\n", pkg "/usr/local/plan9/" dir);
			lastdir = dir
		}
		if($1 !~ /\/$/)
			printf("cp ''%s'' ''%s''\n", plan9 "/" $1, pkg "/usr/local/plan9/" $1)
	}' $TREE9/dist/filelist | rc
	size=`{du -sk $i | awk '{print $1}'}
	{
		echo Package: $package
		echo Version: $date
		echo Architecture: $arch
		comma Depends: $depends
		comma Suggests: $suggests
		comma Conflicts: $conflicts
		echo Source: plan9port-src
		echo Installed-Size: $size
		echo Maintainer: 'Russ Cox <rsc@swtch.com>'
		echo Description: $desc
	} >$i/DEBIAN/control
	if(test -d $i/usr){
		@{
			cd $i
			find usr -type f -print0 | xargs -0 -n 100 u md5sum
		} >$i/DEBIAN/md5sums
	}
	if not
		echo '>>>' $package is a virtual package.
	dpkg -b $i pool/$deb
	rm -rf $i
}

