Change 4336

matt_armstrong (Matt Armstrong)
Matt Armstrong committed this change into //guest/matt_armstrong/jam/patched_version
Request Review
Download .zip
Fix bug for strange make.c and RULE_UPDATED interaction.

If you have a rule with flag RULE_UPDATED, then any dependents
must have fate greater than T_FATE_STABLE to be included.

However, make.c can get confused for dependency trees like
this:

a --> b --> d
  \-> c --> d

In this case, make.c can set the fate of "d" before it ever
gets to "c".  So you will end up with a T_FATE_MISSING target
"c" with dependents with T_FATE_STABLE.

If "c" happens to have a RULE_UPDATED action, RULE_UPDATED,
make1list() will refrain from including it in the list of
targets.

We hack around this here by explicitly checking for this case
and manually tweaking the dependents fate to at least
T_FATE_NEWER.

An alternate fix is to modify make1cmds() to take a TARGET*
instead of an ACTIONS* and, when the target is T_FATE_MISSING,
have it mask off the RULE_UPDATED flag when calling
make1list().
  • Files 3
  • Comments 0
3 edited 0 added 0 deleted
Jamfile#34
Loading...
make.c#19
Loading...
patchlevel.h#35
Loading...
Tip: Use n and p to cycle through the changes.