Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: build/android/pylib/utils/device_dependencies.py

Issue 2514453003: Revert of [android] Stop using isolate.py for data dependency management. (Closed)
Patch Set: manual rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import os
6 import re
7
8 from pylib import constants
9
10
11 _BLACKLIST = [
12 re.compile(r'.*OWNERS'), # Should never be included.
13 re.compile(r'.*\.crx'), # Chrome extension zip files.
14 re.compile(r'.*\.so'), # Libraries packed into .apk.
15 re.compile(r'.*Mojo.*manifest\.json'), # Some source_set()s pull these in.
16 re.compile(r'.*\.py'), # Some test_support targets include python deps.
17
18 # Some test_support targets include python deps.
19 re.compile(r'.*\.mojom\.js'),
20
21 # Chrome external extensions config file.
22 re.compile(r'.*external_extensions\.json'),
23
24 # Exists just to test the compile, not to be run.
25 re.compile(r'.*jni_generator_tests'),
26
27 # v8's blobs get packaged into APKs.
28 re.compile(r'.*natives_blob.*\.bin'),
29 re.compile(r'.*snapshot_blob.*\.bin'),
30 ]
31
32
33 def DevicePathComponentsFor(host_path, output_directory):
34 """Returns the device path components for a given host path.
35
36 This returns the device path as a list of joinable path components,
37 with None as the first element to indicate that the path should be
38 rooted at $EXTERNAL_STORAGE.
39
40 e.g., given
41
42 '$CHROMIUM_SRC/foo/bar/baz.txt'
43
44 this would return
45
46 [None, 'foo', 'bar', 'baz.txt']
47
48 This handles a couple classes of paths differently than it otherwise would:
49 - All .pak files get mapped to top-level paks/
50 - Anything in the output directory gets mapped relative to the output
51 directory rather than the source directory.
52
53 e.g. given
54
55 '$CHROMIUM_SRC/out/Release/icu_fake_dir/icudtl.dat'
56
57 this would return
58
59 [None, 'icu_fake_dir', 'icudtl.dat']
60
61 Args:
62 host_path: The absolute path to the host file.
63 Returns:
64 A list of device path components.
65 """
66 if host_path.startswith(output_directory):
67 if os.path.splitext(host_path)[1] == '.pak':
68 return [None, 'paks', os.path.basename(host_path)]
69 rel_host_path = os.path.relpath(host_path, output_directory)
70 else:
71 rel_host_path = os.path.relpath(host_path, constants.DIR_SOURCE_ROOT)
72
73 device_path_components = [None]
74 p = rel_host_path
75 while p:
76 p, d = os.path.split(p)
77 if d:
78 device_path_components.insert(1, d)
79 return device_path_components
80
81
82 def GetDataDependencies(runtime_deps_path):
83 """Returns a list of device data dependencies.
84
85 Args:
86 runtime_deps_path: A str path to the .runtime_deps file.
87 Returns:
88 A list of (host_path, device_path) tuples.
89 """
90 if not runtime_deps_path:
91 return []
92
93 with open(runtime_deps_path, 'r') as runtime_deps_file:
94 rel_host_files = [l.strip() for l in runtime_deps_file if l]
95
96 output_directory = constants.GetOutDirectory()
97 abs_host_files = [
98 os.path.abspath(os.path.join(output_directory, r))
99 for r in rel_host_files]
100 filtered_abs_host_files = [
101 host_file for host_file in abs_host_files
102 if not any(blacklist_re.match(host_file) for blacklist_re in _BLACKLIST)]
103 return [(f, DevicePathComponentsFor(f, output_directory))
104 for f in filtered_abs_host_files]
OLDNEW
« no previous file with comments | « build/android/pylib/local/device/local_device_test_run_test.py ('k') | build/android/pylib/utils/device_dependencies_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698