From owner-cvs-all Fri Aug 28 22:23:41 1998 Return-Path: Received: (from daemon@localhost) by hub.freebsd.org (8.8.8/8.8.8) id WAA12949 for cvs-all-outgoing; Fri, 28 Aug 1998 22:23:41 -0700 (PDT) (envelope-from owner-cvs-all) Received: from rover.village.org (rover.village.org [204.144.255.49]) by hub.freebsd.org (8.8.8/8.8.8) with SMTP id WAA12941 for ; Fri, 28 Aug 1998 22:23:39 -0700 (PDT) (envelope-from imp@village.org) Received: from harmony [10.0.0.6] by rover.village.org with esmtp (Exim 1.71 #1) id 0zCdTC-0004Fb-00; Fri, 28 Aug 1998 23:22:38 -0600 Received: from harmony.village.org (localhost.village.org [127.0.0.1]) by harmony.village.org (8.9.1/8.8.3) with ESMTP id XAA11009 for ; Fri, 28 Aug 1998 23:22:02 -0600 (MDT) Message-Id: <199808290522.XAA11009@harmony.village.org> Subject: Re: make.conf To: committers@freebsd.org In-reply-to: Your message of "Fri, 28 Aug 1998 22:16:33 MDT." <199808290422.WAA18049@pluto.plutotech.com> References: <199808290422.WAA18049@pluto.plutotech.com> Date: Fri, 28 Aug 1998 23:22:02 -0600 From: Warner Losh Sender: owner-cvs-all@freebsd.org X-Loop: FreeBSD.org Precedence: bulk In message <199808290422.WAA18049@pluto.plutotech.com> "Justin T. Gibbs" writes: : If others share this view, perhaps we should work towards providing a : mechanism for our user community to configure how the system src trees : are built that is completely localized to the source files we wish to : target. At first I thought /etc/make.conf was really cool. Then I had several discussions about this with others in the BSD community, especially in relationship to the "ports" collection on OpenBSD. I too think that the more we add to /etc/make.conf, the more we're painting a huge "kick me" sign on ourselves. And I'm not even thinking about the upgrade issues surrounding it. I've been racking my brains trying to come up with some way to globally affect some things (like /usr/src), while not having it be really global (eg things not in /usr/src or /usr/ports). Some solutions are trivial (eg adding .include to all make files in the system (as their first line)), others are harder, but involve fewer files being edited. Some involve hacks to make to look for configuration information "locally". None of the harder ones will solve all the problems. It is almost as if you wanted to have the gcc-like flag '-include mk.conf' in make to have it do the right thing. Doing this from the top of the tree is easy (just hack it into a simple /usr/src/Makefile that calls a more complicated /usr/src/Makefile.build), but leaving people the ability to build part of the tree is harder. Then you think, oh, I'll just put something in /usr/src and somehow have make magically read it (for any value of /usr/src, btw). One way to do that would be to have a Makefile.inc-like file at all levels of the tree (except the leaves) that gets included before things (eg like the -include ../mk.conf). This would allow one to build, and allow one to stop at the top level (if each level except the top level included it). There are problems with this approach as well, when /usr has a mk.conf in it. However, it would solve the read-only source tree problem (as the /usr/src/mk.conf could have an include directive in it that is variable and defaults to /etc/make.conf). I'm not sure that committers is the place to talk about these ideas at length, so I'll leave it at that and go off and see how hard this[*] idea would be to implement... Warner [*] The "just include ../mk.conf, if it exists" idea, properly parameterized, of course.