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