Date: Thu, 16 Nov 2006 21:10:47 -0600 From: Jonathan Horne <freebsd@dfwlp.com> To: freebsd-questions@freebsd.org Subject: Re: Tracking for Multiple Machines Message-ID: <200611162110.47628.freebsd@dfwlp.com> In-Reply-To: <20061117024846.GA892@home> References: <20061117024846.GA892@home>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611162110.47628.freebsd>