John Waugh | 24 Dec 2010 08:57
Picon

Re: Is -j broken, or is it just me?

Thanks for the patch Chunk - I got it this time (yay).

I tried coding up the version I described, and here's that patch -
thoughts anyone?
It essentially does this:
   If I depend on X, then I also depend on X's co-dependents.

These dependencies would be hard to specify generically in the Jamfile
itself since you can't really say "who are my children," but in the
source it's easy.

I built some test cases to exercise Craig's issues (1) and (2), and
they both pass after applying this, but I don't really have any large
projects that use multi-output actions.
Feedback welcome.

(note: I attached the patch as a file, too. Gmail likes to force-wrap things)

diff a/make.c b/make.c
--- a/make.c
+++ b/make.c
 <at>  <at>  -169,7 +169,8  <at>  <at> 
 	COUNTS  *counts,        /* for reporting */
 	int     anyhow )        /* forcibly touch all (real) targets */
 {
-	TARGETS *c, *incs;
+	TARGETS *c, *extras, *acttarg;
+	ACTIONS *act;
 	TARGET  *ptime = t;
 	time_t  last, leaf, hlast;
(Continue reading)

Graeme Gill | 28 Dec 2010 03:40

Re: Is -j broken, or is it just me?

John Waugh wrote:
> I built some test cases to exercise Craig's issues (1) and (2), and
> they both pass after applying this, but I don't really have any large
> projects that use multi-output actions.
> Feedback welcome.

I ended up working around the problem in my Jambase by creating a
dummy file copy rule. One output then has the usual dependency, and
tall the other outputs become dummy copies of the first output.

This won't help if random output files get deleted, but it at least
makes sure that the right actions happen if all the outputs are
out of date or missing.

Graeme Gill.
_______________________________________________
jamming mailing list  -  jamming <at> maillist.perforce.com
http://maillist.perforce.com/mailman/listinfo/jamming


Gmane