1 #!/usr/bin/python 2 # 3 # Run a test on the ARM version of bcc. 4 5 import unittest 6 import subprocess 7 import os 8 import sys 9 10 def compile(args): 11 proc = subprocess.Popen(["bcc"] + args, stderr=subprocess.PIPE, stdout=subprocess.PIPE) 12 result = proc.communicate() 13 return result 14 15 def runCmd(args): 16 proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 17 result = proc.communicate() 18 return result[0].strip() 19 20 def uname(): 21 return runCmd(["uname"]) 22 23 def unameM(): 24 return runCmd(["uname", "-m"]) 25 26 def which(item): 27 return runCmd(["which", item]) 28 29 def adb(args): 30 return runCmd(["adb"] + args) 31 32 def setupArm(file): 33 print "Setting up arm" 34 adb(["remount"]) 35 adb(["shell", "rm", "/system/bin/bcc"]) 36 adb(["shell", "mkdir", "/system/bin/bccdata"]) 37 adb(["shell", "mkdir", "/system/bin/bccdata/data"]) 38 39 remoteFileName = os.path.join("/system/bin/bccdata", file) 40 adb(["push", file, remoteFileName]) 41 42 # Copy over compiler 43 adb(["sync"]) 44 return remoteFileName 45 46 def compileArm(args): 47 remoteArgs = [] 48 fileName = "" 49 for arg in sys.argv[1:]: 50 if arg.startswith('-'): 51 remoteArgs.append(arg) 52 else: 53 fileName = arg 54 55 remoteFileName = setupArm(fileName) 56 remoteArgs.append(remoteFileName) 57 remoteCmdLine = ["adb", "shell", "/system/bin/bcc"] + remoteArgs 58 proc = subprocess.Popen(remoteCmdLine, stdout=subprocess.PIPE) 59 result = proc.communicate() 60 return result[0].replace("\r","") 61 62 63 def main(): 64 print compileArm(sys.argv[1:]) 65 66 if __name__ == '__main__': 67 main() 68 69 70