[OpenAFS-devel] RHEL5 builder is failing

Stephan Wiesand stephan.wiesand@desy.de
Sun, 9 Dec 2012 11:16:55 +0100


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

>=20
> On 8 Dec 2012, at 14:47, Jason Edgecombe wrote:
>>=20
>> /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'
>=20
> I've seen this failure a few times with local builds. It almost always =
resolves itself with the next run of "make".
>=20
> As far as I can tell, it happens because of our use of $? in our =
installation rules. For example, in this case we have:
>=20
> ${TOP_INCDIR}/rx/rxkad.h: rxkad.h
>        ${INSTALL_DATA} $? $@
>=20
> 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.
>=20
> 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?
>=20
> Cheers,
>=20
> Simon.