diff options
| author | Steven Knight <knight@baldmt.com> | 2005-10-08 17:25:47 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2005-10-08 17:25:47 (GMT) |
| commit | 7935d8f439453bb30c0db7b1dedcffda71521030 (patch) | |
| tree | 1969a774c96063c2eb3a09d289a1965df7b4fc44 /src/engine/SCons/Node/FS.py | |
| parent | e664e763f95c2e24f1f08f11e61828c68baf9854 (diff) | |
| download | SCons-7935d8f439453bb30c0db7b1dedcffda71521030.zip SCons-7935d8f439453bb30c0db7b1dedcffda71521030.tar.gz SCons-7935d8f439453bb30c0db7b1dedcffda71521030.tar.bz2 | |
Remove old, same-named files from a build directory if the file in the source directory does not exist. (Patrick Mezard)
Diffstat (limited to 'src/engine/SCons/Node/FS.py')
| -rw-r--r-- | src/engine/SCons/Node/FS.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index ffdc1eb..ceec696 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -1866,12 +1866,24 @@ class File(Base): "__cacheable__" # Duplicate from source path if we are set up to do this. if self.duplicate and not self.is_derived() and not self.linked: - src=self.srcnode() + src = self.srcnode() if src is self: return Base.exists(self) + # At this point, src is meant to be copied in a build directory. src = src.rfile() - if src.abspath != self.abspath and src.exists(): - self.do_duplicate(src) + if src.abspath != self.abspath: + if src.exists(): + self.do_duplicate(src) + # Can't return 1 here because the duplication might + # not actually occur if the -n option is being used. + else: + # The source file does not exist. Make sure no old + # copy remains in the build directory. + if Base.exists(self) or self.islink(): + self.fs.unlink(self.path) + # Return None explicitly because the Base.exists() call + # above will have cached its value if the file existed. + return None return Base.exists(self) # |
