On Dec 8, 2012, at 18:15 , Simon Wilkinson wrote:

> 
> On 8 Dec 2012, at 14:47, Jason Edgecombe wrote:
>> 
>> /usr/bin/install -c -m 644  
>> /home/jwedgeco/buildslave/rhel5-x86_64-builder/build/include/rx/rxkad.h
>> /usr/bin/install: missing destination file operand after 
>> `/home/jwedgeco/buildslave/rhel5-x86_64-builder/build/include/rx/rxkad.h'
> 
> I've seen this failure a few times with local builds. It almost always 
> resolves itself with the next run of "make".
> 
> As far as I can tell, it happens because of our use of $? in our installation 
> rules. For example, in this case we have:
> 
> ${TOP_INCDIR}/rx/rxkad.h: rxkad.h
>        ${INSTALL_DATA} $? $@
> 
> The $? automatic variable is defined as expanding to "all of the 
> prerequisites which are newer than the target". It looks like there's
> some kind of a race in make which can result in $? expanding to an empty 
> string, but I'm not enough of a make expert to explain this, or even to say 
> whether there is some kind of subtle reason why this problem occurs.
> 
> The obvious fix for OpenAFS, assuming the we don't want to get in to 
> debugging make issues, is to replace all of the occurrences of $? in install 
> rules with the actual name of the file being installed. This is a relatively 
> simple, if tedious, job to do.

Alternatively, we could replace $? with $< in most places. Less clutter, lower 
potential for cut & paste accidents.

The $< seems to be a GNU make feature? At least it's not understood bye the 
native make on the Solaris System I have access to. But given that it's used in 
our Makefiles already, it should be ok?

Cheers,
        Stephan

> Any volunteers?
> 
> Cheers,
> 
> Simon.

_______________________________________________
OpenAFS-devel mailing list
OpenAFS-devel@openafs.org
https://lists.openafs.org/mailman/listinfo/openafs-devel

Reply via email to