| Index: trunk/src/build/android/pylib/forwarder.py
|
| ===================================================================
|
| --- trunk/src/build/android/pylib/forwarder.py (revision 222006)
|
| +++ trunk/src/build/android/pylib/forwarder.py (working copy)
|
| @@ -17,6 +17,10 @@
|
| from pylib import valgrind_tools
|
|
|
|
|
| +def _MakeBinaryPath(build_type, binary_name):
|
| + return os.path.join(cmd_helper.OutDirectory.get(), build_type, binary_name)
|
| +
|
| +
|
| def _GetProcessStartTime(pid):
|
| return psutil.Process(pid).create_time
|
|
|
| @@ -60,7 +64,7 @@
|
| os.environ[Forwarder._MULTIPROCESSING_ENV_VAR] = '1'
|
|
|
| @staticmethod
|
| - def Map(port_pairs, adb, tool=None):
|
| + def Map(port_pairs, adb, build_type='Debug', tool=None):
|
| """Runs the forwarder.
|
|
|
| Args:
|
| @@ -79,7 +83,7 @@
|
| if not tool:
|
| tool = valgrind_tools.CreateTool(None, adb)
|
| with _FileLock(Forwarder._LOCK_PATH):
|
| - instance = Forwarder._GetInstanceLocked(tool)
|
| + instance = Forwarder._GetInstanceLocked(build_type, tool)
|
| instance._InitDeviceLocked(adb, tool)
|
|
|
| device_serial = adb.Adb().GetSerialNumber()
|
| @@ -133,7 +137,7 @@
|
| """
|
| with _FileLock(Forwarder._LOCK_PATH):
|
| port_map = Forwarder._GetInstanceLocked(
|
| - None)._device_to_host_port_map
|
| + None, None)._device_to_host_port_map
|
| adb_serial = adb.Adb().GetSerialNumber()
|
| for (device_serial, device_port) in port_map.keys():
|
| if adb_serial == device_serial:
|
| @@ -144,43 +148,51 @@
|
| """Returns the device port that corresponds to a given host port."""
|
| with _FileLock(Forwarder._LOCK_PATH):
|
| (device_serial, device_port) = Forwarder._GetInstanceLocked(
|
| - None)._host_to_device_port_map.get(host_port)
|
| + None, None)._host_to_device_port_map.get(host_port)
|
| return device_port
|
|
|
| @staticmethod
|
| - def _GetInstanceLocked(tool):
|
| + def _GetInstanceLocked(build_type, tool):
|
| """Returns the singleton instance.
|
|
|
| Note that the global lock must be acquired before calling this method.
|
|
|
| Args:
|
| + build_type: 'Release' or 'Debug'
|
| tool: Tool class to use to get wrapper, if necessary, for executing the
|
| forwarder (see valgrind_tools.py).
|
| """
|
| if not Forwarder._instance:
|
| - Forwarder._instance = Forwarder(tool)
|
| + Forwarder._instance = Forwarder(build_type, tool)
|
| return Forwarder._instance
|
|
|
| - def __init__(self, tool):
|
| + def __init__(self, build_type, tool):
|
| """Constructs a new instance of Forwarder.
|
|
|
| Note that Forwarder is a singleton therefore this constructor should be
|
| called only once.
|
|
|
| Args:
|
| + build_type: 'Release' or 'Debug'
|
| tool: Tool class to use to get wrapper, if necessary, for executing the
|
| forwarder (see valgrind_tools.py).
|
| """
|
| assert not Forwarder._instance
|
| + self._build_type = build_type
|
| self._tool = tool
|
| self._initialized_devices = set()
|
| self._device_to_host_port_map = dict()
|
| self._host_to_device_port_map = dict()
|
| - self._host_forwarder_path = os.path.join(
|
| - constants.GetOutDirectory(), 'host_forwarder')
|
| - assert os.path.exists(self._host_forwarder_path), 'Please build forwarder2'
|
| + self._host_forwarder_path = _MakeBinaryPath(
|
| + self._build_type, 'host_forwarder')
|
| + if not os.path.exists(self._host_forwarder_path):
|
| + self._build_type = 'Release' if self._build_type == 'Debug' else 'Debug'
|
| + self._host_forwarder_path = _MakeBinaryPath(
|
| + self._build_type, 'host_forwarder')
|
| + assert os.path.exists(
|
| + self._host_forwarder_path), 'Please build forwarder2'
|
| self._device_forwarder_path_on_host = os.path.join(
|
| - constants.GetOutDirectory(), 'forwarder_dist')
|
| + cmd_helper.OutDirectory.get(), self._build_type, 'forwarder_dist')
|
| self._InitHostLocked()
|
|
|
| @staticmethod
|
| @@ -189,7 +201,7 @@
|
|
|
| Note that the global lock must be acquired before calling this method.
|
| """
|
| - instance = Forwarder._GetInstanceLocked(None)
|
| + instance = Forwarder._GetInstanceLocked(None, None)
|
| serial = adb.Adb().GetSerialNumber()
|
| serial_with_port = (serial, device_port)
|
| if not serial_with_port in instance._device_to_host_port_map:
|
|
|