URL: <https://savannah.gnu.org/bugs/?62809>
Summary: Make grouped targets not evaluated as single logical file Project: make Submitter: jogravel Submitted: Mon 25 Jul 2022 03:01:35 PM UTC Severity: 3 - Normal Item Group: Bug Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Component Version: 4.3 Operating System: Any Fixed Release: None Triage Status: None _______________________________________________________ Follow-up Comments: ------------------------------------------------------- Date: Mon 25 Jul 2022 03:01:35 PM UTC By: Jonathan Gravel <jogravel> The presence of the grouped target's peers are not considered when checking if the target needs to be rebuilt. For example, if `a` and `b` are grouped target peers (`a b &:`), and only `a` is explicitly referenced in the DAG, the presence of `b` isn't considered. `b` missing would not trigger the rule. This is inconsistent with how the dependencies of `a` and `b` are treated. In the example above, if `b`'s dependencies were newer than `a`, out-of-date, or missing, `a` and `b` would ultimately be rebuilt as a consequence, even though `b` isn't referenced in the DAG. For better consistency, it is appropriate to rebuild `a` whenever any of its peers are missing. This would additionally solve a scenario where `c` depends on `a`, and `d` depends on `b`, and both `c` and `d` are goal targets. If only `a` is considered out of date, `c` is rebuilt, but not `d`. However, `b` is rebuilt, so on the next invocation of make (with no changes), `d` will be rebuilt due to it being older than `b`. See attachment "0001-Fix-grouped-targets-consistency.patch" for proposed set of changes. _______________________________________________________ File Attachments: ------------------------------------------------------- Date: Mon 25 Jul 2022 03:01:35 PM UTC Name: 0001-Fix-grouped-targets-consistency.patch Size: 4KiB By: jogravel <http://savannah.gnu.org/bugs/download.php?file_id=53471> _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?62809> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/