diff options
-rw-r--r-- | clang/tools/ccc/ccclib/Driver.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/clang/tools/ccc/ccclib/Driver.py b/clang/tools/ccc/ccclib/Driver.py index 2015b2f0ed0..25984dd74e0 100644 --- a/clang/tools/ccc/ccclib/Driver.py +++ b/clang/tools/ccc/ccclib/Driver.py @@ -229,19 +229,27 @@ class Driver(object): self.executeJobs(args, jobs) except: if not args.getLastArg(self.parser.saveTempsOption): - for f in self.resultFiles: - # Fail if removing a result fails: - if os.path.exists(f): - os.remove(f) + # Fail if removing a result fails. + self.removeFiles(self.resultFiles, failOnError=True) raise finally: for f in self.tempFiles: # Ignore failures in removing temporary files - try: - os.remove(f) - except: - pass - + self.removeFiles(self.resultFiles, failOnError=False) + + def removeFiles(self, fileList, failOnError=False): + for f in fileList: + try: + os.remove(f) + except OSError,e: + if failOnError: + import errno + if e.errno != errno.ENOENT: + raise + except: + if failOnError: + raise + def executeJobs(self, args, jobs): vArg = args.getLastArg(self.parser.vOption) for j in jobs.iterjobs(): |