On Sun, Jul 19, 2015 at 10:31:36AM -0600, Ian Lepore wrote:
> ....
> I've been following this saga (on irc and here) as much as I have time
> for, and I can't escape the feeling that it is the directory structure
> at fault somehow, but I can't quite put my finger on it.
> I never (ever) build from /usr/src or use /usr/obj as an object dir
> (they're both empty dirs on all my machines).  But one thing that is
> always true for me is that the source dir and its related object dir are
> siblings in the same parent dir.  That is, it's always
>    /any/path/here
>       obj/
>       src/

Well, as counterpoint....  The systems where I do FreeBSD builds are
usually set up (and have been since about 1999) so that:

* The sources reside in /usr/src.

* The file system layput is such that:
  + /usr is on a different file system from /, but these reside in
    partitions 4 and 1 (respectively) of the same slice.
  + /var is a file system that resides on a partition on slice 4.
  + swap is on slice 4, partition 2.
  + /tmp is a swap-backed tmpfs.  (Well, the implementation of that has
    changed over the years -- used to be mfs.)
  + My home directory resides in a file system on a partition in slice
    4 mounted on /common -- along with quite a few other things that do
    not need to physically be on the same slice that I booted from.
  + /usr/ports is a symlink to an SVN working copy (was a CVS working
    directory once upon a time) that's in the same file system as
    my home directory.
  + Historically, /usr/local was also a symlink to a hierarchy in that
    same file system.  (I only built ports under stable, but used them
    under both stable and head.)
  + /usr/obj is also a symlink to a hierarchy in that same file system
    (/common) -- I had one for each slice (/common/S{1,2,3,4}).

* Each of slices 1, 2, and 3 has a / and a /usr file system (as
  described above); slice 4 has those, as well as swap, /var, /common, and
  (often) a few others (e.g., /repo or /bkp).

* If I'm merely booting to single-user mode, each of the 4 slices is
  independent of the others, and I can boot any of them.  As soon as I
  start setting up swap, I become dependent on slice 4 (if I wasn't
  already booted from it).

It is not at all uncommon for me to "clone" one slice to another using a
'dump | restore' pipeline; by having the actual contents of /usr/obj in a
separate file system, it is easy to make copying that optional -- and if
my intent is to move it (vs. copy), renaming a directory is pretty fast
and cheap.

> Given that we have (or at least had at one time) some of those magical
> "..." paths that cause bmake to search up the hierarchy for its .mk
> files, I wonder if an odd relationship between src and obj dir confuses
> it, or if it somehow wanders into a wrong src tree while searching?
> ...

Well, I suspect that if that were an issue, I'd likely have encountered
it (while muttering further deprecation against realpath all the while).

David H. Wolfskill                              da...@catwhisker.org
Those who murder in the name of God or prophet are blasphemous cowards.

See http://www.catwhisker.org/~david/publickey.gpg for my public key.

Attachment: pgpsYPDXAjyiE.pgp
Description: PGP signature

Reply via email to