Date: Tue, 27 Aug 2019 16:29:14 -0400
On Tue, Aug 27, 2019 at 15:24:23 -0400, Matthew Woehlke via SG15 wrote:
> The BMI? No. Dependents... well, that depends whether or not the BMI
> changes (i.e. is there something line line number information or build
> time encoded in it?). If dependents get rebuilt when the "meaning" of
> the interface has not changed, we're probably doing something wrong.
This is a Quality of Implementation detail as far as I'm concerned. If
the BMI contains line numbers (for warning purposes), it could change
for arbitrary changes to the input. If the source is in the BMI for even
better diagnostics, then it will always change.
Remember that tools like make *assume* that if a recipe is run, its
specified outputs are out-of-date (there is no equivalent of ninja's
`restat = 1`). Better build tools that do hash comparison rather than
mtime comparison may perform better. But BMI-writers should write
outputs when they're told to do so. The *least* you can do to be
reliable is to update the output mtime to the max(input_mtimes) because
otherwise the rule will continue to be rerun because it is "out of
date".
--Ben
> The BMI? No. Dependents... well, that depends whether or not the BMI
> changes (i.e. is there something line line number information or build
> time encoded in it?). If dependents get rebuilt when the "meaning" of
> the interface has not changed, we're probably doing something wrong.
This is a Quality of Implementation detail as far as I'm concerned. If
the BMI contains line numbers (for warning purposes), it could change
for arbitrary changes to the input. If the source is in the BMI for even
better diagnostics, then it will always change.
Remember that tools like make *assume* that if a recipe is run, its
specified outputs are out-of-date (there is no equivalent of ninja's
`restat = 1`). Better build tools that do hash comparison rather than
mtime comparison may perform better. But BMI-writers should write
outputs when they're told to do so. The *least* you can do to be
reliable is to update the output mtime to the max(input_mtimes) because
otherwise the rule will continue to be rerun because it is "out of
date".
--Ben
Received on 2019-08-27 15:31:20