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

Side by Side Diff: build/android/gyp/write_ordered_libraries.py

Issue 153743008: Revert of Enable presubmit pylint in build/android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merging with changes to pylib/linker/test_case.py. Created 6 years, 10 months 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
« no previous file with comments | « build/android/gyp/util/md5_check_test.py ('k') | build/android/host_heartbeat.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Writes dependency ordered list of native libraries. 7 """Writes dependency ordered list of native libraries.
8 8
9 The list excludes any Android system libraries, as those are not bundled with 9 The list excludes any Android system libraries, as those are not bundled with
10 the APK. 10 the APK.
11 11
12 This list of libraries is used for several steps of building an APK. 12 This list of libraries is used for several steps of building an APK.
13 In the component build, the --input-libraries only needs to be the top-level 13 In the component build, the --input-libraries only needs to be the top-level
14 library (i.e. libcontent_shell_content_view). This will then use readelf to 14 library (i.e. libcontent_shell_content_view). This will then use readelf to
15 inspect the shared libraries and determine the full list of (non-system) 15 inspect the shared libraries and determine the full list of (non-system)
16 libraries that should be included in the APK. 16 libraries that should be included in the APK.
17 """ 17 """
18 18
19 # TODO(cjhopman): See if we can expose the list of library dependencies from 19 # TODO(cjhopman): See if we can expose the list of library dependencies from
20 # gyp, rather than calculating it ourselves. 20 # gyp, rather than calculating it ourselves.
21 # http://crbug.com/225558 21 # http://crbug.com/225558
22 22
23 import json
23 import optparse 24 import optparse
24 import os 25 import os
25 import re 26 import re
26 import sys 27 import sys
27 28
28 from util import build_utils # pylint: disable=F0401 29 from util import build_utils
29 30
30 _options = None 31 _options = None
31 _library_re = re.compile( 32 _library_re = re.compile(
32 '.*NEEDED.*Shared library: \[(?P<library_name>[\w/.]+)\]') 33 '.*NEEDED.*Shared library: \[(?P<library_name>[\w/.]+)\]')
33 34
34 35
35 def FullLibraryPath(library_name): 36 def FullLibraryPath(library_name):
36 return '%s/%s' % (_options.libraries_dir, library_name) 37 return '%s/%s' % (_options.libraries_dir, library_name)
37 38
38 39
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 85
85 return sorted_deps 86 return sorted_deps
86 87
87 def GetSortedTransitiveDependenciesForExecutable(executable): 88 def GetSortedTransitiveDependenciesForExecutable(executable):
88 """Returns all transitive library dependencies in dependency order.""" 89 """Returns all transitive library dependencies in dependency order."""
89 all_deps = GetDependencies(executable) 90 all_deps = GetDependencies(executable)
90 libraries = [lib for lib in all_deps if not IsSystemLibrary(lib)] 91 libraries = [lib for lib in all_deps if not IsSystemLibrary(lib)]
91 return GetSortedTransitiveDependencies(libraries) 92 return GetSortedTransitiveDependencies(libraries)
92 93
93 94
94 def main(): 95 def main(argv):
95 parser = optparse.OptionParser() 96 parser = optparse.OptionParser()
96 97
97 parser.add_option('--input-libraries', 98 parser.add_option('--input-libraries',
98 help='A list of top-level input libraries.') 99 help='A list of top-level input libraries.')
99 parser.add_option('--libraries-dir', 100 parser.add_option('--libraries-dir',
100 help='The directory which contains shared libraries.') 101 help='The directory which contains shared libraries.')
101 parser.add_option('--readelf', help='Path to the readelf binary.') 102 parser.add_option('--readelf', help='Path to the readelf binary.')
102 parser.add_option('--output', help='Path to the generated .json file.') 103 parser.add_option('--output', help='Path to the generated .json file.')
103 parser.add_option('--stamp', help='Path to touch on success.') 104 parser.add_option('--stamp', help='Path to touch on success.')
104 105
105 global _options 106 global _options
106 _options, _ = parser.parse_args() 107 _options, _ = parser.parse_args()
107 108
108 libraries = build_utils.ParseGypList(_options.input_libraries) 109 libraries = build_utils.ParseGypList(_options.input_libraries)
109 if libraries[0].endswith('.so'): 110 if libraries[0].endswith('.so'):
110 libraries = [os.path.basename(lib) for lib in libraries] 111 libraries = [os.path.basename(lib) for lib in libraries]
111 libraries = GetSortedTransitiveDependencies(libraries) 112 libraries = GetSortedTransitiveDependencies(libraries)
112 else: 113 else:
113 libraries = GetSortedTransitiveDependenciesForExecutable(libraries[0]) 114 libraries = GetSortedTransitiveDependenciesForExecutable(libraries[0])
114 115
115 build_utils.WriteJson(libraries, _options.output, only_if_changed=True) 116 build_utils.WriteJson(libraries, _options.output, only_if_changed=True)
116 117
117 if _options.stamp: 118 if _options.stamp:
118 build_utils.Touch(_options.stamp) 119 build_utils.Touch(_options.stamp)
119 120
120 121
121 if __name__ == '__main__': 122 if __name__ == '__main__':
122 sys.exit(main()) 123 sys.exit(main(sys.argv))
123 124
124 125
OLDNEW
« no previous file with comments | « build/android/gyp/util/md5_check_test.py ('k') | build/android/host_heartbeat.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698