summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script/Main.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2009-02-23 14:55:04 (GMT)
committerSteven Knight <knight@baldmt.com>2009-02-23 14:55:04 (GMT)
commit10009653a53d64a49ca5e3bfd016c34ca2f5d1fb (patch)
tree87333fb00025497dd248a35b690accdda1d78180 /src/engine/SCons/Script/Main.py
parent36ca75113047a8e0bb76e650b9f2e9c4e3ead187 (diff)
downloadSCons-10009653a53d64a49ca5e3bfd016c34ca2f5d1fb.zip
SCons-10009653a53d64a49ca5e3bfd016c34ca2f5d1fb.tar.gz
SCons-10009653a53d64a49ca5e3bfd016c34ca2f5d1fb.tar.bz2
Issue 2152: Fix the ability of --clean to handle / delete broken
symlinks, as well as named pipes. (Mateusz Gruca)
Diffstat (limited to 'src/engine/SCons/Script/Main.py')
-rw-r--r--src/engine/SCons/Script/Main.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index cad241f..883af40 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -305,8 +305,8 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
"""An SCons clean task."""
def fs_delete(self, path, pathstr, remove=1):
try:
- if os.path.exists(path):
- if os.path.isfile(path):
+ if os.path.lexists(path):
+ if os.path.isfile(path) or os.path.islink(path):
if remove: os.unlink(path)
display("Removed " + pathstr)
elif os.path.isdir(path) and not os.path.islink(path):
@@ -326,6 +326,11 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
# then delete dir itself
if remove: os.rmdir(path)
display("Removed directory " + pathstr)
+ else:
+ errstr = "Path '%s' exists but isn't a file or directory."
+ raise SCons.Errors.UserError(errstr % (pathstr))
+ except SCons.Errors.UserError, e:
+ print e
except (IOError, OSError), e:
print "scons: Could not remove '%s':" % pathstr, e.strerror