Date: Tue, 16 Aug 2011 19:51:47 +0200 From: Pieter de Goeje <pieter@degoeje.nl> To: freebsd-hackers@freebsd.org Cc: Matt Burke <mattblists@icritical.com> Subject: Re: Alternate source trees Message-ID: <201108161951.48553.pieter@degoeje.nl> In-Reply-To: <4E4A5DFC.7010807@icritical.com> References: <4E4A5DFC.7010807@icritical.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 16 August 2011 14:09:32 Matt Burke wrote: > I'm trying to setup a box to do automated FreeBSD builds for other hosts > from multiple source trees. > > I have a couple of source trees mounted - for legibility's sake let's say > /build/stable and /build/current. I also have a few obj dirs for different > targets. The current obj tree is symlinked to /usr/obj, and this works > fine. > > The problem comes when I symlink /usr/src: when I buildworld, I get > /usr/obj/build/current/[...] instead of the desired /usr/obj/usr/src/[...] > This is presumably fine when installing on the same machine, but it breaks > when using it on another host with /usr/src and /usr/obj mounted over nfs. > > The only way I can see around this is a hack using a nullfs mount of > /usr/src instead of a symlink. > > Am I missing something? An environment variable perhaps? > > How does the build process know about the non-symlinked path anyway? I > can't see where (or understand why) it uses "pwd -P" If you use make installworld && make installkernel on the client, then you must recreate the exact directories on the client as used on the build server. So you would probably need to mount /build as well on the client. Note that you can also do the installworld/installkernel part on the build server, by using DESTDIR to point to the client's (NFS mounted) root directory. This method has the advantage that it works regardless of the state of the client (NFS still has to work of course). - Pieter
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201108161951.48553.pieter>