No rule to make foo.cpp needed by foo.o ???

David Holmes - Sun Microsystems David.Holmes at Sun.COM
Wed Dec 23 05:55:30 UTC 2009


Hi Martin,

Martin Buchholz said the following on 12/22/09 12:53:
> On Mon, Dec 21, 2009 at 18:42, David Holmes - Sun Microsystems
> <David.Holmes at sun.com> wrote:
>> Igor Nekrestyanov said the following on 12/22/09 11:45:
>>> Check the output of "gnumake -dd" looking for everything related to files
>>> in question. It will tell you why rules are not fired.
>> Surprisingly the answer was because "Foo.cpp does not exist" which of course
>> is nonsense.
>>
>> I'm guessing this must be some kind of NFS caching issue. I rsync the
>> updated files to the build location and then run the build on another
>> machine.
> 
> If the problem goes away if you add a
> sleep 30
> after the NFS copy, you are probably right.
> NFS has always worked thus.

No it's not that simple. If I update 5 files the first build reports the 
1st is missing, the second reports the 2nd is missing and so forth and a 
lot longer than 30 seconds has passed in between. :(

> It is just like the consistency considerations with the
> java memory model, except that the cache lifetimes
> are typically much longer.

You mean I need to declare my files as volatile ? ;-)

> You can fix it by rsyncing to the machine where the
> build will happen, so that there will be no caching
> of stale bits.

Will have to try that.

Cheers,
David

> Martin



More information about the build-dev mailing list