cvs commit: src/usr.sbin/config main.c

M. Warner Losh imp at bsdimp.com
Mon Jan 16 08:27:08 PST 2006


In message: <20060116083922.GD81316 at ip.net.ua>
            Ruslan Ermilov <ru at FreeBSD.org> writes:
: On Sun, Jan 15, 2006 at 11:52:25PM -0700, Scott Long wrote:
: > M. Warner Losh wrote:
: > 
: > >In message: <20060116041146.GA23438 at dragon.NUXI.org>
: > >            "David O'Brien" <obrien at FreeBSD.org> writes:
: > >: On Sat, Jan 14, 2006 at 08:12:25AM +0000, Florent Thoumie wrote:
: > >: >   Modified files:
: > >: >     usr.sbin/config      main.c 
: > >: >   Log:
: > >: >   - Change the exit message from "make cleandepend; make depend" to
: > >: >   "make cleandepend && make depend".
: > >: 
: > >: I still think we should go back to the traditional:
: > >:     "Don't forget to do ``make depend''\n"
: > >: 
: > >: The 'make cleandepend' step was to work around brokeness in 'make 
: > >depend'.
: > >: If 'make depend' is still so broken that one must do 'make cleandepend'
: > >: first, then 'make depend' should just blow away all the .depend files
: > >: first.
: > >
: > >Sadly, that won't work.
: > >
: > >Warner
: > 
: > Not that I don't believe you, but can you explain why it won't work? 
: > What happened that caused 10+ years of 'working' to turn to 'not working'?
: > 
: Several reasons:
: 
: -  Before we were always regenerating the kernel .depend file, even if
:    nothing has changed.  This was contrary to other .depend files that
:    are only regenerated if some of the sources or their known dependencies
:    have changed.  The config/main.c commit log said this on the subject:
:    : Ask that "make cleandepend" be run before "make depend", now that
:    : we don't do this automatically.
: 
: - "make cleandepend" wasn't to work around brokenness in "make depend".
:   Instead, it's to make things work when make(1) cannot figure out by
:   itself that it should regenerate .depend, e.g. when supporting .mk
:   files change (kern.{pre,post}.mk, Makefile.<arch>, Makefile built by
:   config(8), etc.).
: 
: In short, not runnign "make cleandepend" is equivalent to building world
: with -DNO_CLEAN, which is often possible but not guaranteed to work, and
: for the same set of reasons.

The problem with removing .depend in the depend target happens too
late.  Before we get to the meat of the depend target, the error
happens.  The error happens, btw, when a .h file is deleted, which the
.depend file depends on...  There might be other clever ways around this.

Warner


More information about the cvs-src mailing list