summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-12-27 04:52:10 (GMT)
committerSteven Knight <knight@baldmt.com>2002-12-27 04:52:10 (GMT)
commit38d41c10db89f34f72a62d6ada1a4122d4a1cc3f (patch)
tree3d694990b638eddffb9ff187c4be58e9a9004ab2 /src/engine/SCons/Script
parented5697feb65d129a082d59408ddfcfac4ee2134b (diff)
downloadSCons-38d41c10db89f34f72a62d6ada1a4122d4a1cc3f.zip
SCons-38d41c10db89f34f72a62d6ada1a4122d4a1cc3f.tar.gz
SCons-38d41c10db89f34f72a62d6ada1a4122d4a1cc3f.tar.bz2
Implement the Clean() function.
Diffstat (limited to 'src/engine/SCons/Script')
-rw-r--r--src/engine/SCons/Script/SConscript.py17
-rw-r--r--src/engine/SCons/Script/__init__.py25
2 files changed, 29 insertions, 13 deletions
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 15f116f..fcb08cf 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -51,6 +51,7 @@ def do_nothing(text): pass
HelpFunction = do_nothing
default_targets = []
+clean_targets = {}
arguments = {}
launch_dir = os.path.abspath(os.curdir)
@@ -315,6 +316,21 @@ def SetJobs(num):
except ValueError, x:
raise SCons.Errors.UserError, "A positive integer is required: %s"%repr(num)
+def Clean(target, files):
+ target = str(target)
+ 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(SCons.Node.arg2nodes(f, SCons.Node.FS.default_fs.Entry))
+ if clean_targets.has_key(target):
+ clean_targets[target].extend(nodes)
+ else:
+ clean_targets[target] = nodes
+
def BuildDefaultGlobals():
"""
Create a dictionary containing all the default globals for
@@ -326,6 +342,7 @@ def BuildDefaultGlobals():
globals['ARGUMENTS'] = arguments
globals['BuildDir'] = BuildDir
globals['Builder'] = SCons.Builder.Builder
+ globals['Clean'] = Clean
globals['CScan'] = SCons.Defaults.CScan
globals['Default'] = Default
globals['Dir'] = SCons.Node.FS.default_fs.Dir
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index 0068e8c..b4afb3c 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -65,6 +65,7 @@ import SCons.Builder
import SCons.Script.SConscript
import SCons.Warnings
from SCons.Optik import OptionParser, SUPPRESS_HELP, OptionValueError
+from SCons.Util import display
#
@@ -146,6 +147,10 @@ class CleanTask(SCons.Taskmaster.Task):
def show(self):
if self.targets[0].builder or self.targets[0].side_effect:
display("Removed " + str(self.targets[0]))
+ if SCons.Script.SConscript.clean_targets.has_key(str(self.targets[0])):
+ files = SCons.Script.SConscript.clean_targets[str(self.targets[0])]
+ for f in files:
+ SCons.Utils.fs_delete(str(f), 0)
def remove(self):
if self.targets[0].builder or self.targets[0].side_effect:
@@ -157,6 +162,10 @@ class CleanTask(SCons.Taskmaster.Task):
else:
if removed:
display("Removed " + str(t))
+ if SCons.Script.SConscript.clean_targets.has_key(str(self.targets[0])):
+ files = SCons.Script.SConscript.clean_targets[str(self.targets[0])]
+ for f in files:
+ SCons.Util.fs_delete(str(f))
execute = remove
@@ -192,11 +201,6 @@ repositories = []
sig_module = None
num_jobs = 1 # this is modifed by SConscript.SetJobs()
-def print_it(text):
- print text
-
-display = print_it
-
# Exceptions for this module
class PrintHelp(Exception):
pass
@@ -408,10 +412,8 @@ class OptParser(OptionParser):
"--touch", action="callback", callback=opt_ignore,
help="Ignored for compatibility.")
- def opt_c(option, opt, value, parser):
- setattr(parser.values, 'clean', 1)
- self.add_option('-c', '--clean', '--remove', action="callback",
- callback=opt_c,
+ self.add_option('-c', '--clean', '--remove', action="store_true",
+ default=0, dest="clean",
help="Remove specified targets and dependencies.")
self.add_option('-C', '--directory', type="string", action = "append",
@@ -662,10 +664,7 @@ def _main():
SCons.Node.FS.execute_actions = None
CleanTask.execute = CleanTask.show
if options.no_progress or options.silent:
- global display
- def dont_print_it(text):
- pass
- display = dont_print_it
+ display.set_mode(0)
if options.silent:
SCons.Action.print_actions = None
if options.directory: