1*1fa4b3daSHector Dearman#!/usr/bin/env python2 2*1fa4b3daSHector Dearman 3*1fa4b3daSHector Dearman# Copyright (c) 2015 The Chromium Authors. All rights reserved. 4*1fa4b3daSHector Dearman# Use of this source code is governed by a BSD-style license that can be 5*1fa4b3daSHector Dearman# found in the LICENSE file. 6*1fa4b3daSHector Dearman 7*1fa4b3daSHector Dearmanimport os 8*1fa4b3daSHector Dearmanimport sys 9*1fa4b3daSHector Dearman 10*1fa4b3daSHector Dearmanversion = sys.version_info[:2] 11*1fa4b3daSHector Dearmanif version != (2, 7): 12*1fa4b3daSHector Dearman sys.stderr.write('Systrace does not support Python %d.%d. ' 13*1fa4b3daSHector Dearman 'Please use Python 2.7.\n' % version) 14*1fa4b3daSHector Dearman sys.exit(1) 15*1fa4b3daSHector Dearman 16*1fa4b3daSHector Dearmansystrace_dir = os.path.abspath( 17*1fa4b3daSHector Dearman os.path.join(os.path.dirname(__file__), 'catapult', 'systrace')) 18*1fa4b3daSHector Dearmansys.path.insert(0, systrace_dir) 19*1fa4b3daSHector Dearman 20*1fa4b3daSHector Dearmandef RemoveAllStalePycFiles(base_dir): 21*1fa4b3daSHector Dearman """Scan directories for old .pyc files without a .py file and delete them.""" 22*1fa4b3daSHector Dearman for dirname, _, filenames in os.walk(base_dir): 23*1fa4b3daSHector Dearman if '.git' in dirname: 24*1fa4b3daSHector Dearman continue 25*1fa4b3daSHector Dearman for filename in filenames: 26*1fa4b3daSHector Dearman root, ext = os.path.splitext(filename) 27*1fa4b3daSHector Dearman if ext != '.pyc': 28*1fa4b3daSHector Dearman continue 29*1fa4b3daSHector Dearman 30*1fa4b3daSHector Dearman pyc_path = os.path.join(dirname, filename) 31*1fa4b3daSHector Dearman py_path = os.path.join(dirname, root + '.py') 32*1fa4b3daSHector Dearman 33*1fa4b3daSHector Dearman try: 34*1fa4b3daSHector Dearman if not os.path.exists(py_path): 35*1fa4b3daSHector Dearman os.remove(pyc_path) 36*1fa4b3daSHector Dearman except OSError: 37*1fa4b3daSHector Dearman # Wrap OS calls in try/except in case another process touched this file. 38*1fa4b3daSHector Dearman pass 39*1fa4b3daSHector Dearman 40*1fa4b3daSHector Dearman try: 41*1fa4b3daSHector Dearman os.removedirs(dirname) 42*1fa4b3daSHector Dearman except OSError: 43*1fa4b3daSHector Dearman # Wrap OS calls in try/except in case another process touched this dir. 44*1fa4b3daSHector Dearman pass 45*1fa4b3daSHector Dearman 46*1fa4b3daSHector Dearmanif __name__ == '__main__': 47*1fa4b3daSHector Dearman RemoveAllStalePycFiles(os.path.dirname(__file__)) 48*1fa4b3daSHector Dearman from systrace import run_systrace 49*1fa4b3daSHector Dearman sys.exit(run_systrace.main()) 50