On 9/9/16 5:37 PM, Simon J. Gerraty wrote:
> Bryan Drewery <bdrew...@freebsd.org> wrote:
> 
>>> +# some targets involve old pre-built targets
>>> +# ignore mtime of shell
>>> +# and mtime of makefiles does not matter in meta mode
>>> +.MAKE.META.IGNORE_PATHS += \
>>> +        ${MAKEFILE} \
>>> +        ${SHELL} \
>>> +        ${SYS_MK_DIR}
>>
>> I think it could be problematic to ignore *.mk changes.  The build
> 
> If you're not concerned with build optimization,
> this can be disabled - but pretty much any sub-make for which there is a
> .meta file will be out-of-date by any changed to *.mk
> 
>> commands may stay the same, but targets could grow new dependencies.  If
>> those dependencies are already "met" then meta mode won't reconsider them.
> 
> I'm not sure how easy it is to accomplish that situation.

Can you at least wrap it in something like .if
!defined(META_CONSIDER_MK_FILES) ?

>  
>> Consider:
>> Build 1:
>> bar:
>>      touch dep
>>      touch bar
>>
>> foo:
>>      touch foo
>>
>> all: bar foo
>>
>> In the first build, all generates dep, bar and foo.
>>
>> Then the code is changed to:
>>
>> bar:
>>      touch bar
>>
>> dep:
>>      touch notmade
>>      touch dep
>>
>> foo: dep
>>      touch foo
>>
>> all: foo bar
>>
>> Now in the second build, all finds bar command changes and rebuilds,
>> finds foo command is the same and that dep is already satisfied from the
>> last build.  So 'notmade' is never made.
> 
> Actually given you have missing-meta=yes
> target dep would be remade, either because there is no .meta file, or
> because its commands changed. 
> Thus notmade should be.
> 

Good point.

-- 
Regards,
Bryan Drewery

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to