Boost logo

Boost-Build :

From: Mark Evans (evans_mark_at_[hidden])
Date: 2006-04-29 14:14:18

This is an observation of what seems like quirky behavior of the <conditional>@somerule feature.

I am trying to use stage.install in the following manner:

install dummy1 : $(some-files) : <conditional>set-install-loc <subdir>xxx ;

install dummy2 : $(other-files) : <conditional>set-install-loc <subdir>yyy ;

(I talked about the need for unique dummy[x] names in a different thread.)

The <subdir> feature is intended to be used by my set-install-loc rule to add subdir (xxx, yyy, etc.) to the path (which includes other stuff gotten dynamically).

rule set-install-loc ( properties * )

I was hoping that set-install-loc would be called separately for dummy1 and dummy2, but this is not the case. It gets invoked as follows:

1. $(properties) has no <location> attribute; has <subdir>xxx. Results are $(properties) <location>blah/blah/xxx

The next callback, I think, is made to ensure that properties are stable:

2. $(properties) has <location>blah/blah/xxx and <subdir>xxx. Results are $(properties)

There are no further callbacks to set-install-loc, as expected, for install dummy2, where I was hoping/expecting there to be no <location> attribute and <subdir>yyy.
The workaround is to have separate callback rules <conditional>@set-install-loc-xxx and <conditional>@set-install-loc-yyy that manage putting xxx and yyy subdirs in the install path.

FWIW and HTH someone else down the road,

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at