Index: tools/nacl-run.py |
diff --git a/tools/nacl-run.py b/tools/nacl-run.py |
deleted file mode 100755 |
index 32055feb0f269d1e414270222dd2c114b071a30d..0000000000000000000000000000000000000000 |
--- a/tools/nacl-run.py |
+++ /dev/null |
@@ -1,147 +0,0 @@ |
-#!/usr/bin/env python |
-# |
-# Copyright 2013 the V8 project authors. All rights reserved. |
-# Redistribution and use in source and binary forms, with or without |
-# modification, are permitted provided that the following conditions are |
-# met: |
-# |
-# * Redistributions of source code must retain the above copyright |
-# notice, this list of conditions and the following disclaimer. |
-# * Redistributions in binary form must reproduce the above |
-# copyright notice, this list of conditions and the following |
-# disclaimer in the documentation and/or other materials provided |
-# with the distribution. |
-# * Neither the name of Google Inc. nor the names of its |
-# contributors may be used to endorse or promote products derived |
-# from this software without specific prior written permission. |
-# |
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
-# This script executes the passed command line using the Native Client |
-# 'sel_ldr' container. It is derived from android-run.py. |
- |
-import os |
-from os.path import join, dirname, abspath |
-import re |
-import subprocess |
-import sys |
-import tempfile |
- |
-def Check(output, errors): |
- failed = any([s.startswith('/system/bin/sh:') or s.startswith('ANDROID') |
- for s in output.split('\n')]) |
- return 1 if failed else 0 |
- |
-def Execute(cmdline): |
- (fd_out, outname) = tempfile.mkstemp() |
- (fd_err, errname) = tempfile.mkstemp() |
- process = subprocess.Popen( |
- args=cmdline, |
- shell=True, |
- stdout=fd_out, |
- stderr=fd_err, |
- ) |
- exit_code = process.wait() |
- os.close(fd_out) |
- os.close(fd_err) |
- output = file(outname).read() |
- errors = file(errname).read() |
- os.unlink(outname) |
- os.unlink(errname) |
- sys.stdout.write(output) |
- sys.stderr.write(errors) |
- return exit_code or Check(output, errors) |
- |
-def Escape(arg): |
- def ShouldEscape(): |
- for x in arg: |
- if not x.isalnum() and x != '-' and x != '_': |
- return True |
- return False |
- |
- return arg if not ShouldEscape() else '"%s"' % (arg.replace('"', '\\"')) |
- |
-def WriteToTemporaryFile(data): |
- (fd, fname) = tempfile.mkstemp() |
- os.close(fd) |
- tmp_file = open(fname, "w") |
- tmp_file.write(data) |
- tmp_file.close() |
- return fname |
- |
-def GetNaClArchFromNexe(nexe): |
- try: |
- p = subprocess.Popen(['file', nexe], stdout=subprocess.PIPE) |
- out, err = p.communicate() |
- lines = [re.sub("\s+", " " , line) for line in out.split('\n')] |
- if lines[0].find(": ELF 32-bit LSB executable, Intel 80386") > 0: |
- return "x86_32" |
- if lines[0].find(": ELF 64-bit LSB executable, x86-64") > 0: |
- return "x86_64" |
- except: |
- print 'file ' + sys.argv[1] + ' failed' |
- return None |
- |
-def GetNaClResources(nexe): |
- nacl_sdk_dir = os.environ["NACL_SDK_ROOT"] |
- nacl_arch = GetNaClArchFromNexe(nexe) |
- if sys.platform.startswith("linux"): |
- platform = "linux" |
- elif sys.platform == "darwin": |
- platform = "mac" |
- else: |
- print("NaCl V8 testing is supported on Linux and MacOS only.") |
- sys.exit(1) |
- |
- if nacl_arch is "x86_64": |
- toolchain = platform + "_x86_glibc" |
- sel_ldr = "sel_ldr_x86_64" |
- irt = "irt_core_x86_64.nexe" |
- libdir = "lib64" |
- elif nacl_arch is "x86_32": |
- toolchain = platform + "_x86_glibc" |
- sel_ldr = "sel_ldr_x86_32" |
- irt = "irt_core_x86_32.nexe" |
- libdir = "lib32" |
- elif nacl_arch is "arm": |
- print("NaCl V8 ARM support is not ready yet.") |
- sys.exit(1) |
- else: |
- print("Invalid nexe %s with NaCl arch %s" % (nexe, nacl_arch)) |
- sys.exit(1) |
- |
- nacl_sel_ldr = os.path.join(nacl_sdk_dir, "tools", sel_ldr) |
- nacl_irt = os.path.join(nacl_sdk_dir, "tools", irt) |
- |
- return (nacl_sdk_dir, nacl_sel_ldr, nacl_irt) |
- |
-def Main(): |
- if (len(sys.argv) == 1): |
- print("Usage: %s <command-to-run-on-device>" % sys.argv[0]) |
- return 1 |
- |
- args = [Escape(arg) for arg in sys.argv[1:]] |
- |
- (nacl_sdk_dir, nacl_sel_ldr, nacl_irt) = GetNaClResources(sys.argv[1]) |
- |
- # sel_ldr Options: |
- # -c -c: disable validation (for performance) |
- # -a: allow file access |
- # -B <irt>: load the IRT |
- command = ' '.join([nacl_sel_ldr, '-c', '-c', '-a', '-B', nacl_irt, '--'] + |
- args) |
- error_code = Execute(command) |
- return error_code |
- |
-if __name__ == '__main__': |
- sys.exit(Main()) |