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: Boris Kolpackov
Subject: Re: [bug #13976] Regression in :: deps handling between V3.76 and V3.80
Date: Tue, 9 Aug 2005 15:10:10 +0200
User-agent: Mutt/1.5.6+20040907i

Paul,

Sorry, it took me a while to reply. My comments are below.

Paul D. Smith <address@hidden> writes:

> The rules I mentioned in this list apply only between the two
> prerequisites listed, in that pathway.  If the "waited for" prerequisite
> appears on any other path where it is not waited for, then it's fair
> game for parallelization.

I find it somewhat counter-intuitive. The appearance of the .WAIT
"separator" places a restriction on what make can do. Having somewhere
else a rule that relaxes this restriction is a bad idea.


> I think...?  I haven't had my tea yet this morning but I think that's
> right.  If I AM right, then I wonder if .WAIT is really necessary...?
>
>
> Hm.  Actually, the order-only version is much STRONGER than the .WAIT
> version because it applies to the targets as a whole, not just to how
> they appear within a single prerequisite list.  That is, rewriting the
> "odd" examples above this way would give very different answers than the
> ones I gave before.
>
>
> Can you be a little more detailed about what you were thinking, Boris?

Ok, the ordinary TARGET:PREREQUISITE relationship can be defined as:

 (1) If TARGET is brought up-to-date then PREREQUISITE is brought up-to-date

 (2) If PREREQUISITE is newer then TARGET then TARGET is remade

 (3) If both TARGET and PREREQUISITE are remade then PREREQUISITE is
     made before TARGET.


I realize that these definitions are not completely orthogonal but they
are good enough for now.

Then, the so-called order-only relationship, TARGET:|PREREQUISITE, would
be obtained by removing (2) from the above:

 (1) If TARGET is brought up-to-date then PREREQUISITE is brought up-to-date

 (2) If both TARGET and PREREQUISITE are remade then PREREQUISITE is
     made before TARGET.


Now, if we further relax the requirements and remove (1), we will get what
I call "truly order-only" prerequisites:

 (2) If both TARGET and PREREQUISITE are remade then PREREQUISITE is
     made before TARGET.


It is obvious that you don't need such "truly order-only" prerequisites
unless you are doing something behind make's back. That's why I believe
we don't need either .WAIT or "truly order-only" prerequisites. If I had
to chose between the two I would go with the "truly order-only"
prerequisites for it is a clean, coherent and easy to explain extension.

For example, if the syntax for such a feature were TARGET:&PREREQUISITE
then instead of

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

we would write

all: foo fox
foo fox: bar baz
bar: &baz


hth,
-boris

Attachment: signature.asc
Description: Digital signature


reply via email to

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