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,
Mark