Subject: Re: the best way to stay current
To: Jochen Kunz <jkunz@unixag-kl.fh-kl.de>
From: George Michaelson <ggm@apnic.net>
List: current-users
Date: 03/04/2005 08:57:27
I do:
	-1)	mount srcs on some realpath /data/src
		mount /usr/src ro,null from /data/src

	0)	If worried /usr/obj is corrupt/changed (eg racoon/racoon/
		occluding making a file called racoon/racoon)

		cd /usr/obj; rm -rf ./*

		(but if no indications this is needed, skip this step)

	1)	cd /usr/src
		nice ./build.sh -u -x -M /usr/obj build >& /var/tmp/build.log &

	2)	if 1) completes

		halt

	3)	boot -s, remount the fs rw

	4)	cd /usr/obj/data/src/destdir.<arch>
		tar cBpf - . | (cd /; tar --unlink -xBpf -)

	5)	cd /
		etcupdate -s /data/src/etc

	6)	cd /data/src/sys/arch/<arch>/conf
		config <KERNEL>
		cd ../compile/<KERNEL>
		make depend && make && make install

This is a sequence Luke Mewburn suggested to me. making /usr/src ro traps
things writing in the 'apparent' path of the src. the explicit use of
/data/src above is caused by the /usr/obj linking off the real mountpath
not the apparent mountpath, and etcupdate needs write perms into its src
tree for reasons I don't understand. Kernel build seems to work best in the
true mountpath for src as well.

This sequence makes the decision to commit a build state manual. This is
deliberate: you get to decide if you feel like loosing your running
machine.

-George