From 2220853307b318d00aefd2d1c1c5d960c2e4b7a9 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Thu, 16 Jun 2005 07:47:22 +0000 Subject: [PATCH] Fix an error when a 'install' target has another 'install' target in sources. We managed to create property set with two 'location' properties, and then crashed when deciding where to put the target. [SVN r29603] --- src/tools/stage.jam | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/tools/stage.jam b/src/tools/stage.jam index 053b3b25a..9aafa9974 100644 --- a/src/tools/stage.jam +++ b/src/tools/stage.jam @@ -77,6 +77,11 @@ class install-target-class : basic-target # Remove the feature on original targets. ps-raw = [ property.change $(ps-raw) : ] ; + # And . If stage target has another stage target + # in sources, then we'll get virtual targets with + # property set. + ps-raw = [ property.change $(ps-raw) : ] ; + local d = [ $(build-property-set).get ] ; ps-raw += $(d:G=) ; @@ -110,7 +115,7 @@ class install-target-class : basic-target targets-to-stage $(source-targets) : $(property-set) ] ; property-set = [ update-location $(property-set) ] ; - + local result ; for local i in $(source-targets) { @@ -118,7 +123,7 @@ class install-target-class : basic-target local new-properties = [ adjust-properties $(i) : $(property-set) ] ; - + # See if something special should be done when staging this # type. It is indicated by presense of special "staged" type local t = [ $(i).type ] ; @@ -386,7 +391,6 @@ rule install ( name : sources * : requirements * : default-build * ) if in $(requirements:G) { - ECHO "NAME IS " $(name) ; errors.user-error "The property is not allowed for the 'install' rule" ; }