conf/144079: Makefile.inc1 ${DESTDIR} make dependency enhancement

Garrett Cooper yanegomi at gmail.com
Fri Feb 19 20:50:05 UTC 2010


The following reply was made to PR conf/144079; it has been noted by GNATS.

From: Garrett Cooper <yanegomi at gmail.com>
To: Ruslan Ermilov <ru at freebsd.org>
Cc: bug-followup at freebsd.org
Subject: Re: conf/144079: Makefile.inc1 ${DESTDIR} make dependency enhancement
Date: Fri, 19 Feb 2010 12:47:08 -0800

 Hi Ruslan!
 
 On Fri, Feb 19, 2010 at 4:38 AM, Ruslan Ermilov <ru at freebsd.org> wrote:
 > Garrett,
 >
 > On Thu, Feb 18, 2010 at 11:30:03PM +0000, Garrett Cooper wrote:
 >> =A0 =A0 =A0The patch on the right track,
 >
 > I don't think so. =A0Our install-related targets never create
 > directories themselves; instead, they expect them to be pre-
 > created, e.g. by mtree.
 
 Yes, but mtree doesn't handle creating DESTDIR beforehand AFAIK on
 RELENG_8, which is where I was getting shot at... I did some more
 hunting and after figuring out the proper terminology for the method,
 it turns out that the overall `build process' is discussed under
 http://www.freebsd.org/doc/handbook/jails-build.html -- which is a bit
 different from what I expected because the general topic applies to
 installing out-of-build tree, in general, which is paramount for
 releases and building for embedded devices, etc.
 
 >> =A0but wasn't complete, so I had to be
 >> =A0a bit more invasive with where the DESTDIR dependencies went (filled
 >> =A0in all missing dependencies based on inspection) and where the goal
 >> =A0itself goes (bsd.own.mk).
 >> =A0 =A0 =A0I'm not happy about the placement of the goal, and I'm open t=
 o
 >> =A0move it to another location if one exists, as bsd.own.mk seems to be
 >> =A0purely variable driven data setting without goals.
 >
 > Why all this churn, what are you trying to achieve? =A0Save
 > one mkdir command? =A0Why the proposed ${DESTDIR} dependency
 > only covers etc/, include/, and sys/modules/ makefiles?
 
 The intent was to cover the implied ${DESTDIR} dependency for the sake
 of completeness, because determining that an issue is present (and
 recovering automatically if possible) via make is much quicker than
 discovering after an install command failed that you have an issue
 with your environment setup because some assumptions that are made
 about it haven't been fulfilled (in this case ${DESTDIR} doesn't
 exist).
 
 There are a few niceties thrown about the tree, and if you execute a
 set of goals in any particular order, depending on what -j you specify
 you'll run into non-deterministic cases because base directories (in
 some targets) are being created via mkdir -p, whilst others aren't
 (build32 and an etc distribute-dirs is an excellent example of what
 I'm trying to illustrate, if it executes the latter step before the
 former one and gets to the install before mkdir -p is executed).
 
 Thanks!
 -Garrett


More information about the freebsd-bugs mailing list