bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug #13976] Regression in :: deps handling between V3.76 and V3.80


From: Paul D. Smith
Subject: Re: [bug #13976] Regression in :: deps handling between V3.76 and V3.80
Date: Wed, 10 Aug 2005 10:04:30 -0400

%% Boris Kolpackov <address@hidden> writes:

  bk> Yes it does. It's not clear to me whether it's good or bad, though.
  bk> I don't see how "result depends on how we got here" type of logic
  bk> is of any usefulness especially in the context of make (read "build
  bk> reproducibility").

  bk> In this particular case, consider the following makefile:

  bk> all: foo fox
  bk> foo: bar .WAIT baz
  bk> fox: baz

  bk> Isn't it according to your logic that execution of command scripts
  bk> for both 'bar' and 'baz' can start simultaneously? One is via
  bk> all->foo->bar chain and the other is via all->fox->baz.

Exactly correct.  In fact I think I used this precise example in one of
my earlier posts :-).

I don't see a better-defined alternative though, that still provides the
same behavior (a serialization that doesn't require every target to list
every prerequisite).

This doesn't bother me that much.  After all, alternatives (such as you
suggested) are no less error-prone and have even more potential
problems: they rely on the user defining a dependency relationship for
every single target and if you miss one you'll have the same issue.

  bk> That's why I also think that inheritance of
  bk> pattern/target-specific variables, the way it is implemented now,
  bk> is of limited use.

Yes, it is of limited use.  However, what are the alternatives?  One is
that a target inherits from all its potential parents: then we'd have to
define an order of inheritance, and we'd have to implement it... which
would be really extremely difficult I believe.

Or, we could do away with inheritance altogether.  This is something to
consider, as it can potentially be a problem if both the target and its
and parent use the same variables.  On the other hand, the current
behavior is what other versions of make do, and it is _marginally_
useful (mainly in the "debug" rule case).  On the gripping hand, the
kinds of things inheritance is used for could be done using other
features of GNU make.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist




reply via email to

[Prev in Thread] Current Thread [Next in Thread]