Fix fallout from having everything return a list.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 6 Aug 2004 13:12:16 +0000 (13:12 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 6 Aug 2004 13:12:16 +0000 (13:12 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@1023 fdb21ef1-2011-0410-befe-b5e4ea1792b1

doc/man/scons.1
src/engine/SCons/Environment.py
test/option-c.py

index fac9635f7c5f9516902ef625cb516bca6d474b75..957853e91b4456ba15ba469ba1a30ad828db0a81 100644 (file)
@@ -2359,18 +2359,20 @@ or retrieved from the cache.
 
 '\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 .TP 
-.RI Clean( target ", " files_or_dirs )
+.RI Clean( targets ", " files_or_dirs )
 .TP 
-.RI env.Clean( target ", " files_or_dirs )
+.RI env.Clean( targets ", " files_or_dirs )
 This specifies a list of files or directories which should be removed
-whenever the target is specified with the
+whenever the targets are specified with the
 .B -c
 command line option.
+The specified targets may be a list
+or an individual target.
 Multiple calls to
 .BR Clean ()
 are legal,
-and create a new target or add files and directories to the
-clean list for the specified target.
+and create new targets or add files and directories to the
+clean list for the specified targets.
 
 Multiple files or directories should be specified
 either as separate arguments to the
@@ -2384,6 +2386,7 @@ Examples:
 .ES
 Clean('foo', ['bar', 'baz'])
 Clean('dist', env.Program('hello', 'hello.c'))
+Clean(['foo', 'bar'], 'something_else_to_clean')
 .EE
 
 '\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
index 8e0c5ee896e13ba49f067d6f80311afe7d43a4e2..e38ebbb26df1a0a7a48bff5f0a84e8d5c13663ec 100644 (file)
@@ -356,15 +356,15 @@ class Base:
                         n = self.subst(n, raw=1)
                         if node_factory:
                             n = node_factory(n)
-                    try:
+                    if SCons.Util.is_List(n):
                         nodes.extend(n)
-                    except TypeError:
+                    else:
                         nodes.append(n)
                 elif node_factory:
                     v = node_factory(self.subst(v, raw=1))
-                    try:
+                    if SCons.Util.is_List(v):
                         nodes.extend(v)
-                    except TypeError:
+                    else:
                         nodes.append(v)
             else:
                 nodes.append(v)
@@ -994,27 +994,15 @@ class Base:
     def CacheDir(self, path):
         self.fs.CacheDir(self.subst(path))
 
-    def Clean(self, target, files):
+    def Clean(self, targets, files):
         global CleanTargets
-
-        if not isinstance(target, SCons.Node.Node):
-            target = self.subst(target)
-            target = self.fs.Entry(target, create=1)
-    
-        if not SCons.Util.is_List(files):
-            files = [files]
-    
-        nodes = []
-        for f in files:
-            if isinstance(f, SCons.Node.Node):
-                nodes.append(f)
-            else:
-                nodes.extend(self.arg2nodes(f, self.fs.Entry))
-    
-        try:
-            CleanTargets[target].extend(nodes)
-        except KeyError:
-            CleanTargets[target] = nodes
+        tlist = self.arg2nodes(targets, self.fs.Entry)
+        flist = self.arg2nodes(files, self.fs.Entry)
+        for t in tlist:
+            try:
+                CleanTargets[t].extend(flist)
+            except KeyError:
+                CleanTargets[t] = flist
 
     def Configure(self, *args, **kw):
         nargs = [self]
index 1596d9ff7ebf62732dc0617f18ed55e84c7f4411..26d40ea8e7e3ef4d43f2203dff29303c9975991e 100644 (file)
@@ -167,11 +167,11 @@ B = Builder(action = r'%s build.py $TARGETS $SOURCES')
 env = Environment(BUILDERS = { 'B' : B }, FOO = 'foo2')
 env.B(target = 'foo1.out', source = 'foo1.in')
 env.B(target = 'foo2.out', source = 'foo2.xxx')
-env.B(target = 'foo2.xxx', source = 'foo2.in')
+foo2_xxx = env.B(target = 'foo2.xxx', source = 'foo2.in')
 env.B(target = 'foo3.out', source = 'foo3.in')
 SConscript('subd/SConscript')
-Clean('foo2.xxx', ['aux1.x'])
-env.Clean('${FOO}.xxx', ['aux2.x'])
+Clean(foo2_xxx, ['aux1.x'])
+env.Clean(['${FOO}.xxx'], ['aux2.x'])
 Clean('.', ['subd'])
 """ % python)