[Cook] (ingredients-)fingerprint question.
Aryeh M. Friedman
aryeh.friedman at gmail.com
Mon Nov 16 01:35:00 EST 2009
I forgot to ask last time (and I guess this time) why your using [glob
*.txt] instead of %.txt or %0%.txt as your ingredient list (it shouldn't
matter in this case but it is non-standard)
Aryeh M. Friedman wrote:
> 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