Index: build/android/gyp/write_ordered_libraries.py |
diff --git a/build/android/gyp/write_ordered_libraries.py b/build/android/gyp/write_ordered_libraries.py |
deleted file mode 100755 |
index 0fc9a8ca3ef2de04b7283362603ed4556d94c354..0000000000000000000000000000000000000000 |
--- a/build/android/gyp/write_ordered_libraries.py |
+++ /dev/null |
@@ -1,144 +0,0 @@ |
-#!/usr/bin/env python |
-# |
-# Copyright 2013 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. |
- |
-"""Writes dependency ordered list of native libraries. |
- |
-The list excludes any Android system libraries, as those are not bundled with |
-the APK. |
- |
-This list of libraries is used for several steps of building an APK. |
-In the component build, the --input-libraries only needs to be the top-level |
-library (i.e. libcontent_shell_content_view). This will then use readelf to |
-inspect the shared libraries and determine the full list of (non-system) |
-libraries that should be included in the APK. |
-""" |
- |
-# TODO(cjhopman): See if we can expose the list of library dependencies from |
-# gyp, rather than calculating it ourselves. |
-# http://crbug.com/225558 |
- |
-import optparse |
-import os |
-import re |
-import sys |
- |
-from util import build_utils |
- |
-_readelf = None |
-_library_dirs = None |
- |
-_library_re = re.compile( |
- '.*NEEDED.*Shared library: \[(?P<library_name>.+)\]') |
- |
- |
-def SetReadelfPath(path): |
- global _readelf |
- _readelf = path |
- |
- |
-def SetLibraryDirs(dirs): |
- global _library_dirs |
- _library_dirs = dirs |
- |
- |
-def FullLibraryPath(library_name): |
- assert _library_dirs is not None |
- for directory in _library_dirs: |
- path = '%s/%s' % (directory, library_name) |
- if os.path.exists(path): |
- return path |
- return library_name |
- |
- |
-def IsSystemLibrary(library_name): |
- # If the library doesn't exist in the libraries directory, assume that it is |
- # an Android system library. |
- return not os.path.exists(FullLibraryPath(library_name)) |
- |
- |
-def CallReadElf(library_or_executable): |
- assert _readelf is not None |
- readelf_cmd = [_readelf, |
- '-d', |
- FullLibraryPath(library_or_executable)] |
- return build_utils.CheckOutput(readelf_cmd) |
- |
- |
-def GetDependencies(library_or_executable): |
- elf = CallReadElf(library_or_executable) |
- return set(_library_re.findall(elf)) |
- |
- |
-def GetNonSystemDependencies(library_name): |
- all_deps = GetDependencies(library_name) |
- return set((lib for lib in all_deps if not IsSystemLibrary(lib))) |
- |
- |
-def GetSortedTransitiveDependencies(libraries): |
- """Returns all transitive library dependencies in dependency order.""" |
- return build_utils.GetSortedTransitiveDependencies( |
- libraries, GetNonSystemDependencies) |
- |
- |
-def GetSortedTransitiveDependenciesForBinaries(binaries): |
- if binaries[0].endswith('.so'): |
- libraries = [os.path.basename(lib) for lib in binaries] |
- else: |
- assert len(binaries) == 1 |
- all_deps = GetDependencies(binaries[0]) |
- libraries = [lib for lib in all_deps if not IsSystemLibrary(lib)] |
- |
- return GetSortedTransitiveDependencies(libraries) |
- |
- |
-def main(): |
- parser = optparse.OptionParser() |
- build_utils.AddDepfileOption(parser) |
- |
- parser.add_option('--input-libraries', |
- help='A list of top-level input libraries.') |
- parser.add_option('--libraries-dir', |
- help='The directory which contains shared libraries.') |
- parser.add_option('--readelf', help='Path to the readelf binary.') |
- parser.add_option('--output', help='Path to the generated .json file.') |
- parser.add_option('--stamp', help='Path to touch on success.') |
- |
- options, _ = parser.parse_args() |
- |
- SetReadelfPath(options.readelf) |
- SetLibraryDirs(options.libraries_dir.split(',')) |
- |
- libraries = build_utils.ParseGypList(options.input_libraries) |
- if len(libraries): |
- libraries = GetSortedTransitiveDependenciesForBinaries(libraries) |
- |
- # Convert to "base" library names: e.g. libfoo.so -> foo |
- java_libraries_list = ( |
- '{%s}' % ','.join(['"%s"' % s[3:-3] for s in libraries])) |
- |
- out_json = { |
- 'libraries': libraries, |
- 'lib_paths': [FullLibraryPath(l) for l in libraries], |
- 'java_libraries_list': java_libraries_list |
- } |
- build_utils.WriteJson( |
- out_json, |
- options.output, |
- only_if_changed=True) |
- |
- if options.stamp: |
- build_utils.Touch(options.stamp) |
- |
- if options.depfile: |
- build_utils.WriteDepfile( |
- options.depfile, |
- libraries + build_utils.GetPythonDependencies()) |
- |
- |
-if __name__ == '__main__': |
- sys.exit(main()) |
- |
- |