Opened 12 years ago
#233 new defect
property.refine removes features but not derived subfeatures
| Reported by: | Md Abdur Rahim | Owned by: | somebody |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | component1 | Version: | |
| Keywords: | Cc: |
Description
property.refine will remove overridden features but fails to remove any sub-features of the removed features. Details of a fix that has worked for me in the past (before the recent optimizations to refine): http://article.gmane.org/gmane.comp.lib.boost.build/26117/match=dependencies+dropped+during+concurrent+builds
A couple examples of this issue are reported here: http://article.gmane.org/gmane.comp.lib.boost.build/24345/match=toolset+contention.
I have also attached a sample project with this issue exhibiting itself in a couple different ways. I don't use the attached mechanism anymore but something similar. You can see the 1st failure if you do:
bjam.exe msvc-9.0 TEST1
and the 2nd failure if you do:
bjam.exe gcc msvc TEST
Both are resolved with this fix:
local required-value = $(require$(p:G)) ; if $(required-value) {
if $(p:G=) != $(required-value) {
result += $(p:G)$(required-value) ;
} else {
result += $(p) ;
}
} else {
---> local subfeature = [ MATCH <(.*)-(.*):.*> : $(p:G) ] ; ---> local required-value = $(require<$(subfeature[1])>) ;
---> if ! $(required-value) $(required-value) = $(subfeature[2]) ---> {
result += $(p) ;
---> }
}
