Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 May 2001 16:12:51 +0300
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Peter Pentchev <roam@orbitel.bg>, Sheldon Hearn <sheldonh@uunet.co.za>, netch@lucky.net, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: -DNOCLEAN - was: Re: cvs commit: src/contrib/amd/include am_defs.h src/usr.sbin/amd/includeconfig.h src/etc/mtree BSD.include.dist src/include Makefilesrc/sbin/mount_msdos mount_msdos.c src/sbin/mountd mountd.csrc/share/man/man7 hier.7 src/sys/boot/forth loader.conf ...
Message-ID:  <20010528161251.A98656@sunbay.com>
In-Reply-To: <Pine.BSF.4.21.0105282147000.1612-100000@besplex.bde.org>; from bde@zeta.org.au on Mon, May 28, 2001 at 10:05:11PM %2B1000
References:  <20010528134222.B588@ringworld.oblivion.bg> <Pine.BSF.4.21.0105282147000.1612-100000@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, May 28, 2001 at 10:05:11PM +1000, Bruce Evans wrote:
> On Mon, 28 May 2001, Peter Pentchev wrote:
> 
> > On Mon, May 28, 2001 at 12:17:23PM +0200, Sheldon Hearn wrote:
> > > 
> > > 
> > > On Mon, 28 May 2001 13:04:02 +0300, Valentin Nechayev wrote:
> > > 
> > > > Is -DNOCLEAN guaranteed to work when /usr/obj/`/bin/pwd` was already
> > > > cleaned manually (rm -rf)?
> > > 
> > > No, because you may have .depend files in your src tree.  Have a look:
> > > 
> > > 	find /usr/src -name '.depend'
> 
> Or other garbage.  Mainly, subdirectories named "obj" that have .depend
> or other garbage in them, or just exist.
> 
> > Hmm.. I thought the src tree was not touched at all during the build
> > process?
> 
> Depends how much garbage is in it.  If buildworld is started with an
> empty /usr/obj, then the initial clean step in it cleans the src tree.
> This will normally touch the src tree iff the src tree contains garbage.
> However, it won't touch the src tree if all the garbage is in subdirs
> named "obj".  This was broken ages ago in rev.1.5 of bsd.obj.mk.  Previous
> versions used rm -fr to kill "obj" in all cases (it was a link by
> default, but the NOOBJLINK made it a subdir, and rm -fr was required to
> handle that case).
> 
> > The only files I could find with a find /usr/src -type f -name .depend
> > were files that I myself had generated, by manually cd'ing into
> > a directory and running make clean depend all there.  The usual process
> > of 'make world' or 'make buildworld' does not generate them there,
> > it places them all within the /usr/obj tree.
> 
> This is normal building, so makeworld should support it.
> 
> > On second thoughts, make(1) appears to use a .depend file in the current
> > directory, even if MAKEOBJDIRPREFIX is set to /usr/obj.  So it might indeed
> > be a good idea to do a 'find /usr/src -name .depend -delete', just in case.
> 
> I think this only happens when ${.OBJDIR} doesn't contain .depend.
> make(1) has an undocumented search path for '.include "foo"'.
> 
Unfortunately not.  If both ${.OBJDIR}/.depend and ${.CURDIR}/.depend exist,
${.CURDIR}/.depend is preffered over:

: $ MAKEOBJDIR=/tmp/obj make whereobj
: /tmp/obj
: $ cat .depend
: foo:
: 	@echo ${.TARGET}
: $ cat /tmp/obj/.depend
: bar:
: 	@echo ${.TARGET}
: $ MAKEOBJDIR=/tmp/obj make foo
: foo
: $ MAKEOBJDIR=/tmp/obj make bar
: make: don't know how to make bar. Stop
: $ rm .depend
: $ MAKEOBJDIR=/tmp/obj make bar
: bar


Cheers,
-- 
Ruslan Ermilov		Oracle Developer/DBA,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		FreeBSD committer,
+380.652.512.251	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010528161251.A98656>