[Top][All Lists]
[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
signature.asc
Description: Digital signature
Re: [bug #13976] Regression in :: deps handling between V3.76 and V3.80, Paul D. Smith, 2005/08/05