[Cook] (ingredients-)fingerprint question.

Aryeh M. Friedman aryeh.friedman at gmail.com
Mon Nov 16 01:26:16 EST 2009


Does set force do the job?

Also unless I am not sure of what your doing this seems more like a job 
for aegis or an other cms then for cook (I am assuming that XXX.txt are 
infrequently updated in the real world)

pdh wrote:
> In this case I'm just working with text files where the actual content 
> and presence
> of the input files are more important than timestamps... (it is not 
> about building a
> program)... timestamps are messed up by other tools beyond my control...
>
> The recipe actually works, except for the second run ... and as far as 
> I can tell,
> that's because the ingredients-list is not fingerprinted on the first 
> run.
>
> Using only the ingredients-fingerprint feature, I still have strange 
> results:
>
> recipe:
>
> summ : [glob "*.txt"]
>    set ingredients-fingerprint
> {
>    cat [need] > [target];
> }
> then
> {
>    function print "Ingredients-list:" [need];
> }
>
> Starting with an empty directory with only this recipe present:
>
> $ echo 1 > 1.txt
> $ cook
> /* .cookrc.list, /home/pdh/dev/buildtools/cook, Sun Nov 15 15:06 2009 */
> cook: cat 1.txt > summ
> cook: Ingredients-list: 1.txt
> $
> $ echo 2 > 2.txt
> $ touch summ
> $ cook
> /* .cookrc.list, /home/pdh/dev/buildtools/cook, Sun Nov 15 15:06 2009 */
> cook: Ingredients-list: 1.txt 2.txt
> cook: the "summ" file is already up to date, no action required
> $
>
> From the documentation I expected cook to rebuild the target (regardless
> of its timestamp) because it's ingredients-list changed but that's not 
> the
> case.
>
> So, it that correct behavior then?  I am not a programmer so this could
> very well be desired behaviour for cook as a build tool for programs.
> (If so, I need to solve my problem through other means).
>
> Thanks
>
>
> Aryeh M. Friedman wrote:
>> Fingerprints are based on file content not on time stamp (i.e. I can 
>> "touch" the file and cook will still see it as the same)... the only 
>> way to fix this is to use time stamps not finger print on the 
>> particular file (I don't have the manual handy so you will have to 
>> look the syntex up)... but you really should be sure if this is what 
>> you *REALLY* want because fingerprint using actual file contents is 
>> 99.9999...% of the time correct (namely every time I think I have a 
>> problem like this it turns out to be something else)
>>
>> dwark wrote:
>>> Hi List,
>>>
>>> I am new to cook and I'm trying to create a recipe that will
>>> create a summary out of a changing set of files.  The summary
>>> should be rebuilt whenever a file is added/removed or updated
>>> (i.e. contents changed).
>>>
>>> The combination of fingerprints and ingredients-fingerprint
>>> looks to be a perfect match and indeed works largely as advertised.
>>> Except for when the set of input files grows from 1 to 2 files,
>>> for the first time.
>>>
>>> It looks like the ingredients-fingerprint is not taken when
>>> the target is being built for the first time. The second
>>> time around, cook can't see if the list has changed.
>>>
>>> Another thing is that fingerprinting the target itself, seems
>>> to rejuvenate the target file to an age younger than it should
>>> be (in the example below, summ should not be younger than 2.txt
>>> during the second run).
>>>
>>> Am I missing something, like an additional flag or something? The 
>>> current workaround is to force the recipe when there are only 2 
>>> input files.
>>>
>>> Any hints/pointers would be appreciated.
>>>
>>> Thanks,
>>>
>>>   
>
>



More information about the Cook-users mailing list