# /sys/lib/dist/mkfile
d=/n/sources/plan9
dist=/sys/lib/dist
# import /sys/lib/dist/web.protect from the outside
x=`{setup}

cd:V: /n/other/dist/plan9.iso

ncd:V: /n/other/dist/plan9-new.iso.bz2

ncd-dist:V: /n/other/dist/plan9-new.iso.bz2
	mk $dist/web.protect/plan9-new.iso.bz2

cd-dist:V: /n/other/dist/plan9.iso.bz2
	mk $dist/web.protect/plan9.iso.bz2

contrib-cd:V: /n/other/dist/contrib.iso.bz2
#	mk $dist/web.protect/contrib.iso.bz2

/n/other/dist/%.iso:D: /n/sources/plan9/dist/replica/plan9.log
	@{cd pc; mk cddisk; cd ..}
	rm -f $target
	bind pc/cddisk cdstub/bootdisk.img
	if(! test -f $d/bootdisk.img)
		bind -a cdstub $d
	title=`{date | sed 's/(...) (...) (..) (..:..):.. (...) (....)/Plan 9 - \2 \3 \6 \4/'}
	title=$"title
	echo 'CD:' $title
	disk/mk9660 -9cj -v $title -s $d -b bootdisk.img $target

# try not to clobber downloads in progress
$dist/web.protect/%.iso.bz2:	/n/other/dist/%.iso.bz2
	cp $prereq $target.new
	chmod +t $target.new		# don't waste venti on it
	if (test -e $target)
		mv $target $target.old
	mv $target.new $target

scan:V:
	test -d /n/other/dist		# make sure other was mounted above
	test -d $d
	test -d $dist/web.protect
	replica/scan $dist/sources.replica <scan.lock

compresslog:V:
	{
	awk -f logcompress.awk $d/dist/replica/plan9.log |
		awk -f logtime.awk -v 't='^`{date -n} >/tmp/plan9.log
	rm -f $d/dist/replica/plan9.new.log
	cp /tmp/plan9.log $d/dist/replica/plan9.new.log &&
		mv $d/dist/replica/plan9.new.log $d/dist/replica/plan9.log
	} <scan.lock

#restart:V:
#	rm -f $d/dist/replica/plan9.db
#	rm -f $d/dist/replica/plan9.log
#	chmod 664 $d/dist/replica/plan9.db >$d/dist/replica/plan9.db
#	chmod 664 $d/dist/replica/plan9.log >$d/dist/replica/plan9.log
#	chmod +a $d/dist/replica/plan9.log
#	mk scan

odump:V:
	disk/dump9660 -9cj -v 'Plan 9 4e Dumps' -s $d \
		-p /sys/lib/sysconfig/proto/allproto /n/other/dist/distdump.iso

cd.install:V:
	if(~ $sysname achille){
		echo; echo; echo '*** run this on a real machine, like olive.'
		exit bad
	}
	bzip2 -9 < /n/other/dist/plan9.iso >web.protect/nplan9.iso.bz2

D.install:V:
	D=/n/roro/usr/rob/testplan9
	9fs roro
	test -d $D
	cp $D$dist/pc/ndisk $dist/web.protect/ndisk
	cp $D$dist/pc/9loaddebug $dist/web.protect/n9loaddebug

reallyinstall:V:
	if(! ~ $sysname achille){
		echo; echo; echo '*** this needs to run on achille.'
		exit bad
	}
	cd web.protect
	for (i in plan9.iso.bz2 disk 9loaddebug vmware.zip)
		if(test -f n$i){
			mv $i _$i && { mv n$i $i || mv _$i $i }
		}
	rm /srv/ramfs.9down4e
	$dist/startcache

dump:V:
	rm -f /srv/9660.xxx
	9660srv 9660.xxx
	mount /srv/9660.xxx /n/kremvax /n/other/dist/plan9.iso
	now=`{mtime $dist/web.protect/plan9.iso.bz2 | awk '{print $1}'}
	ls -l /rls/plan9/4e.iso
	disk/dump9660 -9cj -s /n/kremvax -n $now /rls/plan9/4e.iso
	ls -l /rls/plan9/4e.iso
	rm /srv/9660.xxx

reencode:V:
	rm -f /n/other/dist/nplan9.iso
	rm -f /srv/9660.xxx
	9660srv 9660.xxx
	mount /srv/9660.xxx /n/kremvax /n/other/dist/plan9.iso
	disk/mk9660 -9cj -v 'Plan 9 4th Edition' -s /n/kremvax \
		-b bootdisk.img /n/other/dist/nplan9.iso
	rm /srv/9660.xxx

/n/other/dist/%.iso.bz2:D: /n/other/dist/%.iso
	@ {
		cd /n/other/dist
		bzip2 -9 <$stem.iso >n$stem.iso.bz2 &&
		{
			if (test -e $stem.iso.bz2)
				mv  $stem.iso.bz2 _$stem.iso.bz2
			mv n$stem.iso.bz2 $stem.iso.bz2
		}
		echo `{date} md5 `{md5sum <$stem.iso.bz2} \
			sha1 `{sha1sum <$stem.iso.bz2} \
			$stem.iso.bz2 >>/usr/web/plan9checksums.txt
	}

/n/other/dist/contrib.iso:DV:
	rm -f $target
	disk/mk9660 -9cj -v 'Plan 9 Extras' -s /n/sources \
		-p ./contrib.proto $target

rebuild:V:
	rebuild

rebuild-mail:V:
	rebuild
	datemail 'nightly build errors' 9trouble <buildit.out
	datemail 'nightly build differences' 9trouble <checkbuild.out
	status=''

scansources-mail:V:
	scansources | datemail 'nightly fs vs. martha scan' 9trouble

worldwritable-mail:V:
	test -e /n/sources/plan9
	@ {cd /n/sources; /usr/rsc/bin/$cputype/lsr -t -d} |
		awk '$2 ~ /[2367]$/' | grep -vf ok-writable |
		datemail 'WRITABLE FILES ON SOURCES' 9trouble || status=''
	status=''
	@ {
		cd /n/sources/plan9
		/usr/rsc/bin/$cputype/lsr -t -d /n/sources/plan9
	} |
		awk '$2 ~ /[2367][^2367].$/' |
		datemail 'non-group-writable files on sources' 9trouble
	status=''
	# use /n/boot to avoid walking the archives mounted under
	# /lib/vac, or other mounts or binds.
	rfork n
	9fs boot
	test -e /n/boot/sys
	/usr/rsc/bin/$cputype/lsr -t -d /n/boot/sys /n/boot/lib |
		grep -v '/lib/audio/|/sys/src/cmd/vac/test/' |		# give us a break
		awk '$2 ~ /[2367][^2367].$/' |
		datemail 'non-group-writable files on fs' 9trouble
	status=''

9.tar.gz:V:
	@{
		rfork n
		9fs sources
		test -e /n/sources/plan9
		bind -a /n/sources/plan9 /n/sources/plan9/sys/src
		cd /n/sources/plan9/sys/src
		tar c LICENSE NOTICE 9
	} | gzip >$target

9-export:V: 9.tar.gz
	9fs sources
	cp 9.tar.gz /n/sources/extra/9.tgz
	chmod +t    /n/sources/extra/9.tgz

plan9.tar.bz2:V:
	@{
		rfork n
		9fs sources
		cd /n/sources
		test -e /n/sources/plan9
		bind /n/empty /n/sources/plan9/lib/font
		bind /n/empty /n/sources/plan9/sys/lib/postscript/font
		bind /n/empty /n/sources/plan9/sys/lib/ghostscript
		bind /n/empty /n/sources/plan9/sys/src/cmd/gs
		tar c plan9/LICENSE* plan9/NOTICE plan9/*/mkfile plan9/*/include \
			plan9/acme/*/src plan9/acme/bin/source \
			plan9/^(adm cron lib lp mail rc sys tmp usr)
	} | bzip2 >$target

plan9-export:V: plan9.tar.bz2
	9fs sources
	mv plan9.tar.bz2 /n/sources/extra/plan9.tar.bz2
	chmod +t	 /n/sources/extra/plan9.tar.bz2
