Alternate source trees

Pieter de Goeje pieter at
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
> 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

More information about the freebsd-hackers mailing list