summaryrefslogtreecommitdiffstats
path: root/build/android/devil_chromium.py
blob: 50f412856d72bec64e83e6e56902d30124a933fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Configures devil for use in chromium."""

import os

from devil import devil_env


_DEVIL_CONFIG = os.path.abspath(
    os.path.join(os.path.dirname(__file__), 'devil_chromium.json'))

_DEVIL_BUILD_PRODUCT_DEPS = {
  'forwarder_device': {
    'armeabi-v7a': 'forwarder_dist',
    'arm64-v8a': 'forwarder_dist',
  },
  'forwarder_host': {
    'any': 'host_forwarder',
  },
  'md5sum_device': {
    'armeabi-v7a': 'md5sum_dist',
    'arm64-v8a': 'md5sum_dist',
  },
  'md5sum_host': {
    'any': 'md5sum_bin_host',
  },
}


def Initialize(output_directory=None):
  """Initializes devil with chromium's binaries and third-party libraries.

  This includes:
    - Libraries:
      - the android SDK ("android_sdk")
      - pymock ("pymock")
    - Build products:
      - host & device forwarder binaries
          ("forwarder_device" and "forwarder_host")
      - host & device md5sum binaries ("md5sum_device" and "md5sum_host")

  Args:
    output_directory: An optional path to the output directory. If not set,
      no built dependencies are configured.
  """

  devil_dynamic_deps = {}

  if output_directory:
    for dep_name, arch_dict in _DEVIL_BUILD_PRODUCT_DEPS.iteritems():
      devil_dynamic_deps[dep_name] = {}
      for arch, name in arch_dict.iteritems():
        devil_dynamic_deps[dep_name][arch] = os.path.join(
            output_directory, name)

  devil_dynamic_config = {
    'config_type': 'BaseConfig',
    'dependencies': {
      dep_name: {
        'file_info': {
          'android_%s' % arch: {
            'local_paths': [path]
          }
          for arch, path in arch_dict.iteritems()
        }
      }
      for dep_name, arch_dict in devil_dynamic_deps.iteritems()
    }
  }

  devil_env.config.Initialize(
      configs=[devil_dynamic_config], config_files=[_DEVIL_CONFIG])