Tracking for Multiple Machines

Jonathan Horne freebsd at dfwlp.com
Thu Nov 16 19:10:52 PST 2006


On Thursday 16 November 2006 20:48, George Allan wrote:
> 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.

so have you tried your theorized method, or are you just laying it out on 
paper for discussion?  i track for several machines, but my approach is the 
simpleton "i dont understand all the scripting" approach.

on my build machine, i have no special settings in make.conf.  i just cvsup 
the sources, and then build the world, and a kernel for each config file i 
have in sys/i386/conf.  then, on each machine that will get kernel, world, 
and ports from the build server, i specify this one setting in make.conf:

WRKDIRPREFIX=/tmp

(building ports in the actual NFS mounted ports directory works hardly ever).  
other than that, i just mount /usr/src /usr/obj and /usr/ports from the 
target to the build server, and install the world and its designated kernel 
as normal.

the night before, yours truly (aka, the non-sciptable simpleton) just strings 
a bunch of 'make buildkernel KERNCONF's together with ; between them.

cheers,
jonathan


More information about the freebsd-questions mailing list