Alternate source trees
Pieter de Goeje
pieter at degoeje.nl
Tue Aug 16 18:14:31 UTC 2011
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
> 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).
More information about the freebsd-hackers