Per the bug report, this patch improves the "Do not know how to make
authorgaryo <garyo@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 15 Apr 2009 10:10:41 +0000 (10:10 +0000)
committergaryo <garyo@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 15 Apr 2009 10:10:41 +0000 (10:10 +0000)
target X" to say what type of node is being built, and the full path (if
it's a file or dir).

git-svn-id: http://scons.tigris.org/svn/scons/trunk@4092 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Script/Main.py
test/Climb/U-Default-no-target.py
test/builderrors.py
test/nonexistent.py

index fb9cbe52b1787a18c3947bc987b29d572e12716c..f7ea9c02b9df3927836728874430ef4c6e5a79db 100644 (file)
@@ -207,7 +207,12 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
         t = self.targets[0]
         if self.top and not t.has_builder() and not t.side_effect:
             if not t.exists():
-                errstr="Do not know how to make target `%s'." % t
+                def classname(obj):
+                    return string.split(str(obj.__class__), '.')[-1]
+                if classname(t) in ('File', 'Dir', 'Entry'):
+                    errstr="Do not know how to make %s target `%s' (%s)." % (classname(t), t, t.abspath)
+                else: # Alias or Python or ...
+                    errstr="Do not know how to make %s target `%s'." % (classname(t), t)
                 sys.stderr.write("scons: *** " + errstr)
                 if not self.options.keep_going:
                     sys.stderr.write("  Stop.")
index b53c29517450b91f11c7368b3485eabc21e080f9..ca03416ccbe6a4bc9e9552e555ed0f4fb0486bdc 100644 (file)
@@ -37,8 +37,8 @@ test.write('SConstruct', """
 Default('not_a_target.in')
 """)
 
-test.run(arguments = '-U', status=2, stderr="""\
-scons: *** Do not know how to make target `not_a_target.in'.  Stop.
+test.run(arguments = '-U', status=2, match=TestSCons.match_re, stderr="""\
+scons: \*\*\* Do not know how to make File target `not_a_target.in' \(.*not_a_target.in\).  Stop.
 """)
 
 test.pass_test()
index 72b856f3f235da06676cc649c409222e2f879e38..e5d8866e6480f9304f22f2c00cb5326c8a35c30a 100644 (file)
@@ -201,6 +201,16 @@ test.run(status=2, stderr=None)
 test.must_not_contain_any_line(test.stderr(), ['Exception', 'Traceback'])
 
 
+# Bug #1053: Alias is called "all", but default is the File "all"
+test.write('SConstruct', """
+env = Environment()
+env.Default("all")
+env.Alias("all", env.Install("dir", "file.txt"))
+""")
+test.run(status=2, match=TestSCons.match_re, stderr="""\
+scons: \*\*\* Do not know how to make File target `all' \(.*all\).  Stop.
+""")
+
 # No tests failed; OK.
 test.pass_test()
 
index 0a6947cc008b619cf34a84280a671795797746a8..770f3b70f1d15c9b28d6199ab86c1a8d4b16f7fa 100644 (file)
@@ -46,13 +46,14 @@ Dir('ddd')
 """)
 
 test.run(arguments = 'foo',
-         stderr = "scons: \\*\\*\\* Do not know how to make target `foo'.( *Stop.)?\n",
+         stderr = "scons: \\*\\*\\* Do not know how to make File target `foo' \\(.*foo\\).( *Stop.)?\n",
          status = 2,
          match=TestSCons.match_re_dotall)
 
 test.run(arguments = '-k foo/bar foo',
-         stderr = "scons: *** Do not know how to make target `%s'.\n" % foo_bar,
-         status = 2)
+         stderr = "scons: \\*\\*\\* Do not know how to make File target `%s' \\(.*foo.bar\\).\n" % foo_bar,
+         status = 2,
+         match=TestSCons.match_re_dotall)
 
 test.run(arguments = "aaa.out",
          stderr = "scons: *** [aaa.out] Source `aaa.in' not found, needed by target `aaa.out'.\n",
@@ -65,14 +66,15 @@ scons: *** [aaa.out] Source `aaa.in' not found, needed by target `aaa.out'.
          status = 2)
 
 test.run(arguments = '-k aaa.in bbb.in',
-         stderr = """scons: *** Do not know how to make target `aaa.in'.
-scons: *** Do not know how to make target `bbb.in'.
+         stderr = """scons: \\*\\*\\* Do not know how to make File target `aaa.in' \\(.*aaa.in\\).
+scons: \\*\\*\\* Do not know how to make File target `bbb.in' \\(.*bbb.in\\).
 """,
-         status = 2)
+         status = 2,
+         match=TestSCons.match_re_dotall)
 
 
 test.run(arguments = 'xxx',
-         stderr = "scons: \\*\\*\\* Do not know how to make target `xxx'.( *Stop.)?\n",
+         stderr = "scons: \\*\\*\\* Do not know how to make File target `xxx' \\(.*xxx\\).( *Stop.)?\n",
          status = 2,
          match=TestSCons.match_re_dotall)