OSDN Git Service

Subzero: Make python clean up after itself by removing its /tmp subdir.
authorJim Stichnoth <stichnot@chromium.org>
Tue, 16 Sep 2014 17:22:26 +0000 (10:22 -0700)
committerJim Stichnoth <stichnot@chromium.org>
Tue, 16 Sep 2014 17:22:26 +0000 (10:22 -0700)
BUG= none
R=jvoung@chromium.org

Review URL: https://codereview.chromium.org/551723003

pydir/build-pnacl-ir.py

index 5c4c9e8..96b4741 100755 (executable)
@@ -1,7 +1,9 @@
 #!/usr/bin/env python2
 
 import argparse
+import errno
 import os
+import shutil
 import tempfile
 from utils import shellcmd
 from utils import FindBaseNaCl
@@ -21,18 +23,25 @@ if __name__ == '__main__':
         nacl_root + '/toolchain/linux_x86/pnacl_newlib/bin' + os.pathsep +
         os.pathsep + os.environ['PATH'])
 
-    tempdir = tempfile.mkdtemp()
+    try:
+        tempdir = tempfile.mkdtemp()
 
-    for cname in args.cfile:
-        basename = os.path.splitext(cname)[0]
-        llname = os.path.join(tempdir, basename + '.ll')
-        pnaclname = basename + '.pnacl.ll'
-        pnaclname = os.path.join(args.dir, pnaclname)
+        for cname in args.cfile:
+            basename = os.path.splitext(cname)[0]
+            llname = os.path.join(tempdir, basename + '.ll')
+            pnaclname = basename + '.pnacl.ll'
+            pnaclname = os.path.join(args.dir, pnaclname)
 
-        shellcmd('pnacl-clang -O2 -c {0} -o {1}'.format(cname, llname))
-        shellcmd('pnacl-opt ' +
-                 '-pnacl-abi-simplify-preopt -pnacl-abi-simplify-postopt' +
-                 ('' if args.disable_verify else
-                  ' -verify-pnaclabi-module -verify-pnaclabi-functions') +
-                 ' -pnaclabi-allow-debug-metadata'
-                 ' {0} -S -o {1}'.format(llname, pnaclname))
+            shellcmd('pnacl-clang -O2 -c {0} -o {1}'.format(cname, llname))
+            shellcmd('pnacl-opt ' +
+                     '-pnacl-abi-simplify-preopt -pnacl-abi-simplify-postopt' +
+                     ('' if args.disable_verify else
+                      ' -verify-pnaclabi-module -verify-pnaclabi-functions') +
+                     ' -pnaclabi-allow-debug-metadata'
+                     ' {0} -S -o {1}'.format(llname, pnaclname))
+    finally:
+        try:
+            shutil.rmtree(tempdir)
+        except OSError as exc:
+            if exc.errno != errno.ENOENT: # ENOENT - no such file or directory
+                raise # re-raise exception