Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 May 2013 23:20:18 -0700
From:      Garrett Cooper <yaneurabeya@gmail.com>
To:        Brooks Davis <brooks@freebsd.org>
Cc:        sjg@freebsd.org, toolchain@freebsd.org, russell.cattelan@isilon.com, joel@freebsd.org
Subject:   Re: Fwd: docs/178286: [PATCH] document the LOCAL_* vars in build(7)
Message-ID:  <CAGHfRMDihg0Nmy%2B2PXNbncm4bcMuycSXSJa7f1EYT-nCy=DEmQ@mail.gmail.com>
In-Reply-To: <20130501220750.GD45806@lor.one-eyed-alien.net>
References:  <201305012123.r41LNcEL048006@red.freebsd.org> <201305012130.r41LU031023258@freefall.freebsd.org> <CAGHfRMBtumFoaEDXavpo16z18bwHJC83O75CbcZpEvYcK7GCnA@mail.gmail.com> <20130501220750.GD45806@lor.one-eyed-alien.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, May 1, 2013 at 3:07 PM, Brooks Davis <brooks@freebsd.org> wrote:
>
> On Wed, May 01, 2013 at 02:35:17PM -0700, Garrett Cooper wrote:
>> Hi Brooks and Joel,
>>     I'd really appreciate if you guys could help out with this. I'm
>> having to fix the Isilon build system due to severe lack of
>> documentation in build(7). So many mistakes have been made because
>> people don't understand how to write FreeBSD Makefiles...
>
> One minor concern I have with this patch is documenting LOCAL_LIB_DIRS.
> I've not posted to the lists yet, but now that I understand buildworld
> better, I think I implemented it wrong.  It should have required that
> the directories be also be listed in LOCAL_DIRS.  The reason is that you
> could then have LOCAL_DIRS=foo and LOCAL_LIB_DIRS=foo/lib so you only
> added one directory to the FreeBSD tree but could still have libs.  I
> feared that someone might have started using this feature which would
> mean we can't easily change that.

That's assuming that someone hasn't hacked the base system (e.g.
bin/cp, etc) and introduced awesome build dependencies on external
libraries that don't cleanly fit into the current structure for
buildworld :). This is part of the reason why I opened up
http://www.freebsd.org/cgi/query-pr.cgi?pr=conf/178066 , but I realize
that this is starting to turn into a slippery slope and could be
articulated via meta-make and proper DPADD definitions _much_ better
than it is today... Makefile.inc1 is full of pixie dust and carefully
placed dependencies today, such that once you step outside that box
it's difficult to work within the system due to its lack of
flexibility and hooks.

It's nice that the __L ".PHONY" rules are automatically generated by
Makefile.inc1 because I really want buildworld-ish encapsulation; in
particular, the way things are done in the OneFS build system could
really be done better -- I'm not confident that some of my
predecessors working on the build system truly understood how the
FreeBSD build process works or were under extreme time crunches and
thus didn't look for a perfect/good solution and instead resorted to
some nasty build hacks that I'm now trying to unwind.

> Is Isilon using it?

Russell and I started using it recently. I'd like this support to
stick around until meta-make can be realized (even if it's going to
get ripped out eventually...) as it does make things cleaner when
people hack away at the base system.

Thanks!
-Garrett



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGHfRMDihg0Nmy%2B2PXNbncm4bcMuycSXSJa7f1EYT-nCy=DEmQ>