2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-15 13:02:11 +00:00

Fix a hard error whenever a target is skipped. Thanks to

Christopher Currie for spotting this bug.


[SVN r19854]
This commit is contained in:
Vladimir Prus
2003-08-29 08:48:15 +00:00
parent 734d7f1031
commit a57311af2f
6 changed files with 96 additions and 0 deletions

View File

@@ -512,6 +512,11 @@ class main-target : abstract-target
return $(usage-requirements) $(result) ;
}
# Generates the main target with the given property set
# and returns a list which first element is property-set object
# containing usage-requirements of generated target and with
# generated virtual target in other elements. It's possible
# that no targets are generated.
local rule generate-really ( property-set )
{
if $(self.property-adjuster)
@@ -530,6 +535,7 @@ class main-target : abstract-target
"with properties" [ $(property-set).raw ]
"because no best-matching alternative could be found"
;
return [ property-set.empty ] ;
}
else if $(best-alternatives[2])
{

41
test/skipping.py Normal file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2003. Permission to copy, use, modify, sell and
# distribute this software is granted provided this copyright notice appears in
# all copies. This software is provided "as is" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Test that V2 does not fail gracelessy when any target is skipped.
from BoostBuild import Tester, List
# Create a temporary working directory
t = Tester()
t.write("a.cpp", """
int main() {}
""")
t.write("b.cpp", """
int main() {}
""")
t.write("c.cpp", """
int main() {}
""")
t.write("Jamfile", """
import feature : feature ;
feature foo : 1 2 : link-incompatible ;
exe a : a.cpp : <foo>1 ;
exe b : b.cpp : <foo>2 ;
exe c : c.cpp ;
""")
t.write("project-root.jam", """
""")
t.run_build_system("foo=1")
t.cleanup()

View File

@@ -105,6 +105,7 @@ tests = [ "project_test1",
"tag",
"suffix",
"inherit_toolset",
"skipping",
]
if os.name == 'posix':

View File

@@ -512,6 +512,11 @@ class main-target : abstract-target
return $(usage-requirements) $(result) ;
}
# Generates the main target with the given property set
# and returns a list which first element is property-set object
# containing usage-requirements of generated target and with
# generated virtual target in other elements. It's possible
# that no targets are generated.
local rule generate-really ( property-set )
{
if $(self.property-adjuster)
@@ -530,6 +535,7 @@ class main-target : abstract-target
"with properties" [ $(property-set).raw ]
"because no best-matching alternative could be found"
;
return [ property-set.empty ] ;
}
else if $(best-alternatives[2])
{

41
v2/test/skipping.py Normal file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2003. Permission to copy, use, modify, sell and
# distribute this software is granted provided this copyright notice appears in
# all copies. This software is provided "as is" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Test that V2 does not fail gracelessy when any target is skipped.
from BoostBuild import Tester, List
# Create a temporary working directory
t = Tester()
t.write("a.cpp", """
int main() {}
""")
t.write("b.cpp", """
int main() {}
""")
t.write("c.cpp", """
int main() {}
""")
t.write("Jamfile", """
import feature : feature ;
feature foo : 1 2 : link-incompatible ;
exe a : a.cpp : <foo>1 ;
exe b : b.cpp : <foo>2 ;
exe c : c.cpp ;
""")
t.write("project-root.jam", """
""")
t.run_build_system("foo=1")
t.cleanup()

View File

@@ -105,6 +105,7 @@ tests = [ "project_test1",
"tag",
"suffix",
"inherit_toolset",
"skipping",
]
if os.name == 'posix':