cvs commit: src/usr.bin/make make.1
M. Warner Losh
imp at bsdimp.com
Thu Oct 13 09:15:26 PDT 2005
In message: <20051013143010.GC91109 at ip.net.ua>
Ruslan Ermilov <ru at freebsd.org> writes:
: Having /etc/make.conf included with every make(1) run is a
: design bug.
Definitely. That's why I'm working on fixing it. However, we gotta
document what we have today...
: It's a bug because the implementation doesn't
: match the goal. The goal (as advertised in the make.conf
: manpage) is to "contain settings that control the compilation
: of the FreeBSD sources and ported applications" and "it is
: included by the various makefiles in /usr/src, /usr/ports
: and /usr/doc". I mean, the visibility of /etc/make.conf
: would better be constrained by src/, ports/, and doc/
: makefiles, not the universe under the control of FreeBSD.
: I think it's too late to change that, so we'll have to
: live with this backward compatibility bug or come up
: with a better replacement.
Agreed. But including an empty file is no big deal for BC.
: NetBSD, for example, that
: has a very elegant build system, doesn't suffer from this
: bug. They only include their mk.conf for system builds.
NetBSD's system suffers from other issues... However, many of the
good ideas in there I have prototyped in my tree. NetBSD requires an
entire tree to build. Well, most of one anyway. That would break
stand-alone builds. Last time we talked about that, you really didn't
want to see us go further down that path than we already are (just try
to build amdq w/o the rest of amd checked out to see one example). I
have a scheme in mind, and phk kindly implemented a 'sinclude'[*] which
does the right thing for climbing up the tree. This is what NetBSD
does, and what we do at work very successfully. I'll try to
re-establish carrier with you on this subject, since we seem to have
lost it a while ago.
The general idea is two fold. First, we revamp how we subset FreeBSD.
That's a huge bikeshed, so let's just say it is happening and I'll
talk more baout that piece when I have a workign prototype. The
second part is working on how we get that data into the build system.
I have a prototype of it working right now in one of my trees (not yet
in p4), but it suffers from the 'can't build it unless you have all
the directories checked out' problem. Now that phk has implemented
sinclude, I can mostly fix that problem as well.
I'm purposely trying to keep quiet about this rework until I have a
working prototype. We've had long-ranging discussions in the past,
and I'd rather see the effort spent at having something to evaluate
rather than on theoretical vaporware.
[*] s == silent. include this, if you can, but if you can't solder on
and don't bother me with a complaint.
More information about the cvs-src