worldtools - simple tools to ease life with make world ====================================================== This package contains a set of simple scripts (2 sh and one perl) to ease maintenance of FreeBSD (and potentially other *BSD systems). The great advantage comes from the fantastic yet really simple whereintheworld script which tracks the progress of the a buildworld, installworld, buildkernel, etc... The other scripts are really just sugar around that. buildit: simple script to run a command, log it to a file, wait for completion and mail the head and tail to the user when finished, all that while tracking the logfile using tail -f . upgrade is a simple script that calls buildit on a cvsup and on a buildworld, and send the output of the buildworld to whereintheworld. How to use ---------- After that, to upgrade your source tree and recompile the world, you just call: # upgrade You'll see upgrade(1) call cvsup and after that buildworld. Everything is logged to /var/log/build.log (by default). The buildworld is started in the background, so you can safely interrupt upgrade without affecting the buildworld. So you can just start upgrade, logoff, then log back in later and take a look at where the buildworld is by calling: # whereintheworld /var/log/build.log or start to follow the output again using: # tail -f /var/log/build.log | whereintheworld (you get the idea). Alternatively, you might want to run upgrade(1) in a screen(1) shell so that you can really hook back up on the terminal. When the build is over, buildit, which upgrade calls, send the head and tail of the logfile to the user by email. To disable that function, use the -m switch to upgrade. Then, the tricky steps of installkernel, installworld and mergemaster are left to the admin, since they are tricky and can cause havoc if done unconsciously. But buildit and whereintheworld can still help there: # buildit -l /var/log/installkern.log -- make installkernel | whereintheworld You'll probably want to reboot at that point to see if your kernel is ok. Then you'll call buildit with a similar line for installworld. Mergemaster usage shouldn't change much. Enjoy!