Tracking for Multiple Machines

George Allan d1945 at sbcglobal.net
Thu Nov 16 18:48:48 PST 2006


The section in the Handbook presents a solution for a scenario in which
all machines in a build set are more less identical, or sufficiently
generic enough that each machine's make.conf is the same, the exception
being the build machine's own make.conf (which can specify that multiple
kernels are built).

Sounds reasonable, but I imagine a more likely (or at least common)
scenario is one in which there's a variety of hardware and functions,
and each system requires a customized make.conf, in addition to a custom
kernel.

With respect to the approach presented below, which of the following is
most true:

	(a)	It will work;
	(b)	It won't work;
	(c)	It might work, but I'd do it differently;
	(d) A build machine is a dumb idea; or
	(e) My name's not Dave you insensitive clod.

-----------------------------------------------------------
#!/bin/sh
# 
# Rudimentary build script. 
# /etc/make.conf.[hostname] sets KERNCONF

BUILD_SET="host1 host2 host3 host4 host5 host6 host7 host8 host9 host10"

echo "This is really going to take some time, Dave."
echo "Maybe you want to come back tomorrow?"

for MACHINE in ${BUILD_SET} ; do
	MAKECONF="/etc/make.conf.${MACHINE}"
	BUILD_DIR="/usr/obj/${MACHINE}"
	WORLD_LOG="/var/log/buildworld.${MACHINE}.log"
	KERNEL_LOG="/var/log/buildkernel.${MACHINE}.log"

	echo "Building world for ${MACHINE}."
	env MAKEOBJDIRPREFIX=${BUILD_DIR} __MAKE_CONF=${MAKECONF} \
	make buildworld -j 4 | tee ${WORLD_LOG}

	echo "Building kernel for ${MACHINE}."
	env MAKEOBJDIRPREFIX=${BUILD_DIR} __MAKE_CONF=${MAKECONF} \
	make buildkernel -j 4 | tee ${KERNEL_LOG}
done
-----------------------------------------------------------

Comments, questions and complaints all welcomed.

Thanks.


More information about the freebsd-questions mailing list