18 messages in com.perforce.jamming[jamming] New LAZY builtin
FromSent OnAttachments
Matt Armstrong03 Jan 2002 16:37 
Craig McPheeters03 Jan 2002 18:49 
Roesler, Randy03 Jan 2002 19:04 
Arnt Gulbrandsen04 Jan 2002 04:39 
Matt Armstrong04 Jan 2002 14:27 
David Abrahams" <david.abrahams@rcn.com (David Abrahams)04 Jan 2002 14:36 
Craig McPheeters04 Jan 2002 14:59 
David Abrahams" <david.abrahams@rcn.com (David Abrahams)04 Jan 2002 15:08 
Matt Armstrong04 Jan 2002 23:48 
Matt Armstrong05 Jan 2002 00:20 
Arnt Gulbrandsen07 Jan 2002 02:33 
Matt Armstrong07 Jan 2002 09:16 
Craig McPheeters07 Jan 2002 13:28 
Craig McPheeters07 Jan 2002 13:57 
David Abrahams" <david.abrahams@rcn.com (David Abrahams)11 Jan 2002 15:18 
Matt Armstrong11 Jan 2002 16:15 
David Abrahams" <david.abrahams@rcn.com (David Abrahams)11 Jan 2002 16:40 
Lex Spoon12 Jan 2002 07:48 
Subject:[jamming] New LAZY builtin
From: ()
Date:01/11/2002 04:40:50 PM
List:com.perforce.jamming

----- Original Message ----- From: "Matt Armstrong" <matt+dated+2002@lickey.com> To: "David Abrahams" <davi@rcn.com> Cc: "Craig McPheeters" <cmcp@aw.sgi.com>; <jamm@perforce.com> Sent: Friday, January 11, 2002 7:16 PM Subject: Re: [jamming] New LAZY builtin

"David Abrahams" <davi@rcn.com> writes:

Why not just make this the meaning of ALWAYS + TEMPORARY? That was the first thing I tried when I wanted this behavior. That avoids introducing a new rule, too.

Yeah, that's certainly a possibility (I tried that combination too).

Do the current semantics of ALWAYS + TEMPORARY have any useful purpose? Let's see:

ALWAYS - mark the target for update regardless of its age on disk TEMPORARY - if the target isn't on disk, take its age from its oldest dependency, otherwise treat it as normal.

So it seems like right now, with a target marked ALWAYS and TEMPORARY, ALWAYS "wins", so any current use of the combination is probably accidental. I don't think giving new meaning to ALWAYS + TEMPORARY would be so bad.

BTW, TEMPORARY is broken in stock Jam - it doesn't work right if the target has multiple parents. My patch is:

*************** *** 175,180 **** --- 201,217 ---- printf( "warning: %s depends on itself\n", t->name ); return;

+ /* Deal with TEMPORARY targets with multiple parents. When a missing + * TEMPORARY target is determined to be stable, it inherits the + * timestamp of the parent being checked, and is given a binding of + * T_BIND_PARENTS. To avoid outdating parents with earlier modification + * times, we set the target's time to the minimum time of all parents. + */ + case T_FATE_STABLE: + if ( t->binding == T_BIND_PARENTS && t->time > ptime && t->flags & T_FLAG_TEMP ) + t->time = ptime; + return; + default: return;