summaryrefslogtreecommitdiff
path: root/chromium/build
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-24 11:30:15 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-30 12:56:19 +0000
commit6036726eb981b6c4b42047513b9d3f4ac865daac (patch)
tree673593e70678e7789766d1f732eb51f613a2703b /chromium/build
parent466052c4e7c052268fd931888cd58961da94c586 (diff)
downloadqtwebengine-chromium-6036726eb981b6c4b42047513b9d3f4ac865daac.tar.gz
BASELINE: Update Chromium to 70.0.3538.78
Change-Id: Ie634710bf039e26c1957f4ae45e101bd4c434ae7 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/build')
-rw-r--r--chromium/build/OWNERS1
-rw-r--r--chromium/build/android/BUILD.gn18
-rw-r--r--chromium/build/android/PRESUBMIT.py1
-rwxr-xr-xchromium/build/android/apk_operations.py237
-rwxr-xr-xchromium/build/android/asan_symbolize.py1
-rw-r--r--chromium/build/android/devil_chromium.py1
-rw-r--r--chromium/build/android/docs/android_app_bundles.md199
-rwxr-xr-xchromium/build/android/gradle/generate_gradle.py65
-rw-r--r--chromium/build/android/gradle/root.jinja2
-rw-r--r--chromium/build/android/gyp/aar.pydeps7
-rwxr-xr-xchromium/build/android/gyp/aidl.py4
-rw-r--r--chromium/build/android/gyp/aidl.pydeps7
-rw-r--r--chromium/build/android/gyp/apkbuilder.pydeps8
-rw-r--r--chromium/build/android/gyp/app_bundle_to_apks.pydeps8
-rw-r--r--chromium/build/android/gyp/bytecode_processor.pydeps7
-rwxr-xr-xchromium/build/android/gyp/compile_resources.py3
-rw-r--r--chromium/build/android/gyp/compile_resources.pydeps29
-rwxr-xr-xchromium/build/android/gyp/copy_ex.py10
-rw-r--r--chromium/build/android/gyp/copy_ex.pydeps7
-rw-r--r--chromium/build/android/gyp/create_apk_operations_script.pydeps3
-rw-r--r--chromium/build/android/gyp/create_app_bundle.pydeps30
-rwxr-xr-xchromium/build/android/gyp/create_bundle_wrapper_script.py94
-rw-r--r--chromium/build/android/gyp/create_bundle_wrapper_script.pydeps7
-rwxr-xr-xchromium/build/android/gyp/create_dist_jar.py3
-rw-r--r--chromium/build/android/gyp/create_dist_jar.pydeps7
-rw-r--r--chromium/build/android/gyp/create_java_binary_script.pydeps7
-rw-r--r--chromium/build/android/gyp/create_stack_script.pydeps7
-rw-r--r--chromium/build/android/gyp/create_test_runner_script.pydeps7
-rw-r--r--chromium/build/android/gyp/create_tool_wrapper.pydeps3
-rw-r--r--chromium/build/android/gyp/desugar.pydeps7
-rw-r--r--chromium/build/android/gyp/dex.pydeps7
-rwxr-xr-xchromium/build/android/gyp/dist_aar.py3
-rw-r--r--chromium/build/android/gyp/dist_aar.pydeps7
-rw-r--r--chromium/build/android/gyp/emma_instr.pydeps7
-rw-r--r--chromium/build/android/gyp/filter_zip.pydeps7
-rwxr-xr-xchromium/build/android/gyp/gcc_preprocess.py2
-rw-r--r--chromium/build/android/gyp/gcc_preprocess.pydeps7
-rwxr-xr-xchromium/build/android/gyp/generate_proguarded_module_jar.py159
-rw-r--r--chromium/build/android/gyp/generate_proguarded_module_jar.pydeps7
-rwxr-xr-xchromium/build/android/gyp/generate_resource_rewriter.py1
-rw-r--r--chromium/build/android/gyp/ijar.pydeps7
-rwxr-xr-xchromium/build/android/gyp/java_cpp_enum.py2
-rw-r--r--chromium/build/android/gyp/java_cpp_enum.pydeps7
-rwxr-xr-xchromium/build/android/gyp/java_google_api_keys.py1
-rwxr-xr-xchromium/build/android/gyp/javac.py11
-rw-r--r--chromium/build/android/gyp/javac.pydeps15
-rwxr-xr-xchromium/build/android/gyp/jinja_template.py7
-rw-r--r--chromium/build/android/gyp/jinja_template.pydeps41
-rw-r--r--chromium/build/android/gyp/lint.pydeps7
-rwxr-xr-xchromium/build/android/gyp/main_dex_list.py1
-rw-r--r--chromium/build/android/gyp/main_dex_list.pydeps8
-rwxr-xr-xchromium/build/android/gyp/merge_jar_info_files.py2
-rw-r--r--chromium/build/android/gyp/merge_jar_info_files.pydeps8
-rw-r--r--chromium/build/android/gyp/merge_manifest.pydeps7
-rwxr-xr-xchromium/build/android/gyp/prepare_resources.py3
-rw-r--r--chromium/build/android/gyp/prepare_resources.pydeps30
-rwxr-xr-xchromium/build/android/gyp/proguard.py92
-rw-r--r--chromium/build/android/gyp/proguard.pydeps8
-rw-r--r--chromium/build/android/gyp/util/__init__.py1
-rw-r--r--chromium/build/android/gyp/util/proguard_util.py6
-rwxr-xr-xchromium/build/android/gyp/write_build_config.py167
-rw-r--r--chromium/build/android/gyp/write_build_config.pydeps7
-rwxr-xr-xchromium/build/android/gyp/write_ordered_libraries.py5
-rw-r--r--chromium/build/android/gyp/write_ordered_libraries.pydeps7
-rw-r--r--chromium/build/android/incremental_install/__init__.py1
-rw-r--r--chromium/build/android/incremental_install/generate_android_manifest.pydeps7
-rwxr-xr-xchromium/build/android/incremental_install/write_installer_json.py4
-rw-r--r--chromium/build/android/incremental_install/write_installer_json.pydeps7
-rwxr-xr-xchromium/build/android/lighttpd_server.py2
-rw-r--r--chromium/build/android/lint/suppressions.xml4
-rwxr-xr-xchromium/build/android/method_count.py1
-rw-r--r--chromium/build/android/pylib/android/__init__.py1
-rw-r--r--chromium/build/android/pylib/base/__init__.py1
-rw-r--r--chromium/build/android/pylib/base/base_test_result.py1
-rw-r--r--chromium/build/android/pylib/base/test_exception.py1
-rw-r--r--chromium/build/android/pylib/base/test_instance.py1
-rw-r--r--chromium/build/android/pylib/base/test_run.py1
-rw-r--r--chromium/build/android/pylib/base/test_run_factory.py1
-rw-r--r--chromium/build/android/pylib/base/test_server.py1
-rw-r--r--chromium/build/android/pylib/constants/__init__.py2
-rw-r--r--chromium/build/android/pylib/gtest/__init__.py1
-rw-r--r--chromium/build/android/pylib/gtest/gtest_test_instance.py5
-rwxr-xr-xchromium/build/android/pylib/gtest/gtest_test_instance_test.py1
-rw-r--r--chromium/build/android/pylib/instrumentation/__init__.py1
-rw-r--r--chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py14
-rw-r--r--chromium/build/android/pylib/junit/__init__.py1
-rw-r--r--chromium/build/android/pylib/linker/__init__.py1
-rw-r--r--chromium/build/android/pylib/linker/linker_test_instance.py1
-rw-r--r--chromium/build/android/pylib/local/device/local_device_gtest_run.py4
-rw-r--r--chromium/build/android/pylib/local/device/local_device_instrumentation_test_run.py9
-rw-r--r--chromium/build/android/pylib/local/device/local_device_test_run.py2
-rw-r--r--chromium/build/android/pylib/local/local_test_server_spawner.py1
-rw-r--r--chromium/build/android/pylib/results/flakiness_dashboard/json_results_generator.py2
-rw-r--r--chromium/build/android/pylib/results/json_results.py1
-rwxr-xr-xchromium/build/android/pylib/results/json_results_test.py1
-rwxr-xr-xchromium/build/android/pylib/results/presentation/test_results_presentation.py4
-rw-r--r--chromium/build/android/pylib/symbols/deobfuscator.py9
-rw-r--r--chromium/build/android/pylib/symbols/symbol_utils.py812
-rw-r--r--chromium/build/android/pylib/symbols/symbol_utils_unittest.py944
-rw-r--r--chromium/build/android/pylib/utils/app_bundle_utils.py66
-rw-r--r--chromium/build/android/pylib/utils/device_dependencies.py1
-rw-r--r--chromium/build/android/pylib/utils/google_storage_helper.py5
-rw-r--r--chromium/build/android/pylib/utils/logdog_helper.py1
-rwxr-xr-xchromium/build/android/pylib/utils/maven_downloader.py3
-rw-r--r--chromium/build/android/pylib/utils/proguard.py18
-rw-r--r--chromium/build/android/pylib/valgrind_tools.py1
-rw-r--r--chromium/build/android/pylintrc2
-rwxr-xr-xchromium/build/android/resource_sizes.py6
-rwxr-xr-xchromium/build/android/stacktrace/java_deobfuscate_test.py101
-rwxr-xr-xchromium/build/android/test_runner.py5
-rw-r--r--chromium/build/check_gn_headers_whitelist.txt5
-rw-r--r--chromium/build/chromeos/PRESUBMIT.py24
-rwxr-xr-xchromium/build/chromeos/create_vm_test_script.py7
-rw-r--r--chromium/build/chromeos/pylintrc15
-rwxr-xr-xchromium/build/chromeos/run_vm_test.py553
-rwxr-xr-xchromium/build/compute_build_timestamp.py120
-rw-r--r--chromium/build/config/BUILD.gn23
-rw-r--r--chromium/build/config/BUILDCONFIG.gn14
-rw-r--r--chromium/build/config/allocator.gni3
-rw-r--r--chromium/build/config/android/BUILD.gn18
-rw-r--r--chromium/build/config/android/chrome_version.gni16
-rw-r--r--chromium/build/config/android/config.gni34
-rw-r--r--chromium/build/config/android/internal_rules.gni471
-rw-r--r--chromium/build/config/android/rules.gni1171
-rw-r--r--chromium/build/config/c++/c++.gni15
-rw-r--r--chromium/build/config/chromecast_build.gni4
-rw-r--r--chromium/build/config/chromeos/rules.gni14
-rw-r--r--chromium/build/config/compiler/BUILD.gn150
-rw-r--r--chromium/build/config/compiler/compiler.gni11
-rw-r--r--chromium/build/config/coverage/BUILD.gn17
-rw-r--r--chromium/build/config/fuchsia/BUILD.gn7
-rw-r--r--chromium/build/config/fuchsia/build_manifest.py11
-rw-r--r--chromium/build/config/fuchsia/config.gni3
-rw-r--r--chromium/build/config/fuchsia/rules.gni6
-rw-r--r--chromium/build/config/fuchsia/sandbox_policy4
-rw-r--r--chromium/build/config/fuchsia/testing_sandbox_policy4
-rw-r--r--chromium/build/config/gcc/BUILD.gn25
-rw-r--r--chromium/build/config/ios/ios_sdk.gni9
-rw-r--r--chromium/build/config/ios/rules.gni38
-rw-r--r--chromium/build/config/linux/atk/BUILD.gn15
-rw-r--r--chromium/build/config/linux/gtk/BUILD.gn37
-rw-r--r--chromium/build/config/linux/gtk/gtk.gni12
-rw-r--r--chromium/build/config/linux/gtk2/BUILD.gn43
-rw-r--r--chromium/build/config/linux/gtk3/BUILD.gn43
-rw-r--r--chromium/build/config/linux/nss/BUILD.gn (renamed from chromium/build/secondary/third_party/nss/BUILD.gn)0
-rw-r--r--chromium/build/config/linux/pkg_config.gni12
-rw-r--r--chromium/build/config/mac/rules.gni4
-rw-r--r--chromium/build/config/posix/BUILD.gn10
-rw-r--r--chromium/build/config/python.gni105
-rw-r--r--chromium/build/config/sanitizers/BUILD.gn60
-rw-r--r--chromium/build/config/sanitizers/sanitizers.gni26
-rw-r--r--chromium/build/config/sysroot.gni6
-rw-r--r--chromium/build/config/win/BUILD.gn35
-rw-r--r--chromium/build/dotfile_settings.gni1
-rwxr-xr-xchromium/build/experimental/install-build-deps.py4
-rw-r--r--chromium/build/fuchsia/boot_data.py9
-rw-r--r--chromium/build/fuchsia/common.py23
-rw-r--r--chromium/build/fuchsia/common_args.py21
-rw-r--r--chromium/build/fuchsia/device_target.py22
-rw-r--r--chromium/build/fuchsia/linux.sdk.sha11
-rw-r--r--chromium/build/fuchsia/mac.sdk.sha11
-rw-r--r--chromium/build/fuchsia/qemu_target.py74
-rw-r--r--chromium/build/fuchsia/run_package.py51
-rw-r--r--chromium/build/fuchsia/sdk.sha11
-rw-r--r--chromium/build/fuchsia/target.py21
-rwxr-xr-xchromium/build/fuchsia/update_sdk.py18
-rwxr-xr-xchromium/build/get_syzygy_binaries.py529
-rwxr-xr-xchromium/build/install-build-deps.sh11
-rw-r--r--chromium/build/linux/chrome.safestack.map93
-rw-r--r--chromium/build/linux/sysroot_scripts/packagelist.sid.amd64395
-rw-r--r--chromium/build/linux/sysroot_scripts/packagelist.sid.arm391
-rw-r--r--chromium/build/linux/sysroot_scripts/packagelist.sid.arm64389
-rw-r--r--chromium/build/linux/sysroot_scripts/packagelist.sid.i386391
-rw-r--r--chromium/build/linux/sysroot_scripts/packagelist.sid.mips64el377
-rw-r--r--chromium/build/linux/sysroot_scripts/packagelist.sid.mipsel377
-rwxr-xr-xchromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh22
-rw-r--r--chromium/build/linux/sysroot_scripts/sysroots.json24
-rw-r--r--chromium/build/linux/unbundle/README2
-rw-r--r--chromium/build/mac/tweak_info_plist.gni4
-rw-r--r--chromium/build/nocompile.gni1
-rwxr-xr-xchromium/build/print_python_deps.py12
-rwxr-xr-xchromium/build/protoc_java.py3
-rw-r--r--chromium/build/protoc_java.pydeps7
-rw-r--r--chromium/build/sanitizers/tsan_suppressions.cc3
-rw-r--r--chromium/build/secondary/testing/gmock/BUILD.gn65
-rw-r--r--chromium/build/secondary/testing/gtest/BUILD.gn150
-rw-r--r--chromium/build/secondary/third_party/android_tools/BUILD.gn285
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/BUILD.gn262
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_arch_lifecycle_runtime_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_animated_vector_drawable_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_cardview_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_compat_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_core_ui_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_core_utils_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_design_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_fragment_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_media_compat_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_multidex_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_transition_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v13_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v14_preference_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v17_leanback_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v17_preference_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v7_appcompat_java_internal.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v7_gridlayout_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v7_mediarouter_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v7_palette_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v7_preference_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_v7_recyclerview_java.info13
-rw-r--r--chromium/build/secondary/third_party/android_tools/support/android_support_vector_drawable_java.info13
-rw-r--r--chromium/build/secondary/third_party/libjpeg_turbo/BUILD.gn221
-rw-r--r--chromium/build/timestamp.gni23
-rw-r--r--chromium/build/toolchain/cros/BUILD.gn37
-rw-r--r--chromium/build/toolchain/fuchsia/BUILD.gn9
-rwxr-xr-xchromium/build/toolchain/gcc_ar_wrapper.py78
-rwxr-xr-xchromium/build/toolchain/gcc_compile_wrapper.py43
-rwxr-xr-xchromium/build/toolchain/gcc_solink_wrapper.py8
-rw-r--r--chromium/build/toolchain/gcc_toolchain.gni69
-rw-r--r--chromium/build/toolchain/goma.gni5
-rw-r--r--chromium/build/toolchain/linux/unbundle/README.md2
-rw-r--r--chromium/build/toolchain/nacl/BUILD.gn2
-rw-r--r--chromium/build/toolchain/toolchain.gni14
-rw-r--r--chromium/build/toolchain/win/BUILD.gn17
-rw-r--r--chromium/build/toolchain/wrapper_utils.py57
-rwxr-xr-xchromium/build/update-linux-sandbox.sh6
-rw-r--r--chromium/build/util/BUILD.gn4
-rw-r--r--chromium/build/util/LASTCHANGE2
-rw-r--r--chromium/build/util/LASTCHANGE.committime1
-rw-r--r--chromium/build/util/LASTCHANGE.dummy1
-rw-r--r--chromium/build/util/lastchange.gni16
-rwxr-xr-xchromium/build/util/lastchange.py21
-rw-r--r--chromium/build/whitespace_file.txt3
-rwxr-xr-xchromium/build/write_build_date_header.py93
233 files changed, 6892 insertions, 4872 deletions
diff --git a/chromium/build/OWNERS b/chromium/build/OWNERS
index 0b659dd4cb6..918c4884e00 100644
--- a/chromium/build/OWNERS
+++ b/chromium/build/OWNERS
@@ -5,6 +5,7 @@ jochen@chromium.org
scottmg@chromium.org
thakis@chromium.org
brucedawson@chromium.org
+tikuta@chromium.org
# Clang build config changes
hans@chromium.org
diff --git a/chromium/build/android/BUILD.gn b/chromium/build/android/BUILD.gn
index 523636d137a..f6c9ab41ff5 100644
--- a/chromium/build/android/BUILD.gn
+++ b/chromium/build/android/BUILD.gn
@@ -54,6 +54,12 @@ if (enable_java_templates) {
"android_ndk_root=" + rebase_path(android_ndk_root, root_build_dir) + CR
_data += "android_tool_prefix=" +
rebase_path(android_tool_prefix, root_build_dir) + CR
+ if (defined(android_secondary_abi_cpu)) {
+ _secondary_label_info =
+ get_label_info(":foo($android_secondary_abi_toolchain)", "root_out_dir")
+ _data += "android_secondary_abi_toolchain=" +
+ rebase_path(_secondary_label_info, root_build_dir) + CR
+ }
write_file(android_build_vars, _data)
}
@@ -71,8 +77,8 @@ copy("cpplib_unstripped") {
action("cpplib_stripped") {
_strip_bin = "${android_tool_prefix}strip"
_soname = "libc++_shared.so"
- _input_so = "${root_shlib_dir}/lib.unstripped/${_soname}"
- _output_so = "${root_shlib_dir}/${_soname}"
+ _input_so = "${root_out_dir}/lib.unstripped/${_soname}"
+ _output_so = "${root_out_dir}/${_soname}"
deps = [
":cpplib_unstripped",
@@ -117,8 +123,14 @@ python_library("test_runner_py") {
"${android_sdk_root}/platform-tools/adb",
"//third_party/catapult/third_party/gsutil/",
"//third_party/catapult/devil/devil/devil_dependencies.json",
- "//third_party/proguard/lib/proguard.jar",
]
+
+ # Proguard is needed only when using apks (rather than native executables).
+ if (enable_java_templates) {
+ deps = [
+ "//third_party/proguard:proguard603_java",
+ ]
+ }
}
python_library("logdog_wrapper_py") {
diff --git a/chromium/build/android/PRESUBMIT.py b/chromium/build/android/PRESUBMIT.py
index 65d37d17a76..9617b5197cc 100644
--- a/chromium/build/android/PRESUBMIT.py
+++ b/chromium/build/android/PRESUBMIT.py
@@ -74,6 +74,7 @@ def CommonChecks(input_api, output_api):
J('pylib', 'results', 'json_results_test.py'),
J('pylib', 'symbols', 'apk_native_libs_unittest.py'),
J('pylib', 'symbols', 'elf_symbolizer_unittest.py'),
+ J('pylib', 'symbols', 'symbol_utils_unittest.py'),
J('pylib', 'utils', 'decorators_test.py'),
J('pylib', 'utils', 'device_dependencies_test.py'),
J('pylib', 'utils', 'dexdump_test.py'),
diff --git a/chromium/build/android/apk_operations.py b/chromium/build/android/apk_operations.py
index 33c3ef05559..2b17c19cdd4 100755
--- a/chromium/build/android/apk_operations.py
+++ b/chromium/build/android/apk_operations.py
@@ -16,6 +16,7 @@ import posixpath
import random
import re
import shlex
+import shutil
import sys
import tempfile
import textwrap
@@ -39,7 +40,11 @@ from incremental_install import installer
from pylib import constants
from pylib.symbols import deobfuscator
from pylib.utils import simpleperf
+from pylib.utils import app_bundle_utils
+with devil_env.SysPath(os.path.join(os.path.dirname(__file__), '..', '..',
+ 'build', 'android', 'gyp')):
+ import bundletool
# Matches messages only on pre-L (Dalvik) that are spammy and unimportant.
_DALVIK_IGNORE_PATTERN = re.compile('|'.join([
@@ -74,6 +79,55 @@ def _InstallApk(devices, apk, install_dict):
device_utils.DeviceUtils.parallel(devices).pMap(install)
+# A named tuple containing the information needed to convert a bundle into
+# an installable .apks archive.
+# Fields:
+# bundle_path: Path to input bundle file.
+# bundle_apk_path: Path to output bundle .apks archive file.
+# aapt2_path: Path to aapt2 tool.
+# keystore_path: Path to keystore file.
+# keystore_password: Password for the keystore file.
+# keystore_alias: Signing key name alias within the keystore file.
+BundleGenerationInfo = collections.namedtuple(
+ 'BundleGenerationInfo',
+ 'bundle_path,bundle_apks_path,aapt2_path,keystore_path,keystore_password,'
+ 'keystore_alias')
+
+
+def _GenerateBundleApks(info):
+ """Generate an .apks archive from a bundle on demand.
+
+ Args:
+ info: A BundleGenerationInfo instance.
+ Returns:
+ Path of output .apks archive.
+ """
+ app_bundle_utils.GenerateBundleApks(
+ info.bundle_path,
+ info.bundle_apks_path,
+ info.aapt2_path,
+ info.keystore_path,
+ info.keystore_password,
+ info.keystore_alias)
+ return info.bundle_apks_path
+
+
+def _InstallBundle(devices, bundle_apks):
+ def install(device):
+ # NOTE: For now, installation requires running 'bundletool install-apks'.
+ # TODO(digit): Add proper support for bundles to devil instead, then use it.
+ cmd_args = [
+ 'install-apks',
+ '--apks=' + bundle_apks,
+ '--adb=' + adb_wrapper.AdbWrapper.GetAdbPath(),
+ '--device-id=' + device.serial
+ ]
+ bundletool.RunBundleTool(cmd_args)
+
+ logging.info('Installing bundle.')
+ device_utils.DeviceUtils.parallel(devices).pMap(install)
+
+
def _UninstallApk(devices, install_dict, package_name):
def uninstall(device):
if install_dict:
@@ -735,21 +789,27 @@ class _Command(object):
supports_incremental = False
accepts_command_line_flags = False
accepts_args = False
+ need_device_args = True
all_devices_by_default = False
calls_exec = False
supports_multiple_devices = True
- def __init__(self, from_wrapper_script):
+ def __init__(self, from_wrapper_script, is_bundle):
self._parser = None
self._from_wrapper_script = from_wrapper_script
self.args = None
self.apk_helper = None
self.install_dict = None
self.devices = None
- # Do not support incremental install outside the context of wrapper scripts.
- if not from_wrapper_script:
+ self.is_bundle = is_bundle
+ self.bundle_generation_info = None
+ # Only support incremental install from APK wrapper scripts.
+ if is_bundle or not from_wrapper_script:
self.supports_incremental = False
+ def RegisterBundleGenerationInfo(self, bundle_generation_info):
+ self.bundle_generation_info = bundle_generation_info
+
def _RegisterExtraArgs(self, subp):
pass
@@ -760,17 +820,18 @@ class _Command(object):
formatter_class=argparse.RawDescriptionHelpFormatter)
self._parser = subp
subp.set_defaults(command=self)
- subp.add_argument('--all',
- action='store_true',
- default=self.all_devices_by_default,
- help='Operate on all connected devices.',)
- subp.add_argument('-d',
- '--device',
- action='append',
- default=[],
- dest='devices',
- help='Target device for script to work on. Enter '
- 'multiple times for multiple devices.')
+ if self.need_device_args:
+ subp.add_argument('--all',
+ action='store_true',
+ default=self.all_devices_by_default,
+ help='Operate on all connected devices.',)
+ subp.add_argument('-d',
+ '--device',
+ action='append',
+ default=[],
+ dest='devices',
+ help='Target device for script to work on. Enter '
+ 'multiple times for multiple devices.')
subp.add_argument('-v',
'--verbose',
action='count',
@@ -780,15 +841,29 @@ class _Command(object):
group = subp.add_argument_group('%s arguments' % self.name)
if self.needs_package_name:
- # Always gleaned from apk when using wrapper scripts.
- group.add_argument('--package-name',
- help=argparse.SUPPRESS if self._from_wrapper_script else (
- "App's package name."))
+ # Three cases to consider here, since later code assumes
+ # self.args.package_name always exists, even if None:
+ #
+ # - Called from a bundle wrapper script, the package_name is already
+ # set through parser.set_defaults(), so don't call add_argument()
+ # to avoid overriding its value.
+ #
+ # - Called from an apk wrapper script. The --package-name argument
+ # should not appear, but self.args.package_name will be gleaned from
+ # the --apk-path file later.
+ #
+ # - Called directly, then --package-name is required on the command-line.
+ #
+ if not self.is_bundle:
+ group.add_argument(
+ '--package-name',
+ help=argparse.SUPPRESS if self._from_wrapper_script else (
+ "App's package name."))
if self.needs_apk_path or self.needs_package_name:
# Adding this argument to the subparser would override the set_defaults()
# value set by on the parent parser (even if None).
- if not self._from_wrapper_script:
+ if not self._from_wrapper_script and not self.is_bundle:
group.add_argument('--apk-path',
required=self.needs_apk_path,
help='Path to .apk')
@@ -822,26 +897,27 @@ class _Command(object):
self._RegisterExtraArgs(group)
def ProcessArgs(self, args):
- devices = device_utils.DeviceUtils.HealthyDevices(
- device_arg=args.devices,
- enable_device_files_cache=bool(args.output_directory),
- default_retries=0)
self.args = args
- self.devices = devices
+ self.devices = []
+ if self.need_device_args:
+ self.devices = device_utils.DeviceUtils.HealthyDevices(
+ device_arg=args.devices,
+ enable_device_files_cache=bool(args.output_directory),
+ default_retries=0)
# TODO(agrieve): Device cache should not depend on output directory.
# Maybe put int /tmp?
- _LoadDeviceCaches(devices, args.output_directory)
+ _LoadDeviceCaches(self.devices, args.output_directory)
# Ensure these keys always exist. They are set by wrapper scripts, but not
# always added when not using wrapper scripts.
args.__dict__.setdefault('apk_path', None)
args.__dict__.setdefault('incremental_json', None)
try:
- if len(devices) > 1:
+ if len(self.devices) > 1:
if not self.supports_multiple_devices:
- self._parser.error(device_errors.MultipleDevicesError(devices))
+ self._parser.error(device_errors.MultipleDevicesError(self.devices))
if not args.all and not args.devices:
- self._parser.error(_GenerateMissingAllFlagMessage(devices))
+ self._parser.error(_GenerateMissingAllFlagMessage(self.devices))
incremental_apk_exists = False
@@ -869,7 +945,8 @@ class _Command(object):
self._parser.error('Both incremental and non-incremental apks exist. '
'Select using --incremental or --non-incremental')
- if self.needs_apk_path or args.apk_path or args.incremental_json:
+ if ((self.needs_apk_path and not self.is_bundle) or args.apk_path
+ or args.incremental_json):
if args.incremental_json:
if incremental_apk_exists:
self.install_dict = install_dict
@@ -893,9 +970,9 @@ class _Command(object):
# Save cache now if command will not get a chance to afterwards.
if self.calls_exec:
- _SaveDeviceCaches(devices, args.output_directory)
+ _SaveDeviceCaches(self.devices, args.output_directory)
except:
- _SaveDeviceCaches(devices, args.output_directory)
+ _SaveDeviceCaches(self.devices, args.output_directory)
raise
@@ -910,17 +987,21 @@ class _DevicesCommand(_Command):
class _InstallCommand(_Command):
name = 'install'
- description = 'Installs the APK to one or more devices.'
+ description = 'Installs the APK or bundle to one or more devices.'
needs_apk_path = True
supports_incremental = True
def Run(self):
- _InstallApk(self.devices, self.apk_helper, self.install_dict)
+ if self.is_bundle:
+ bundle_apks_path = _GenerateBundleApks(self.bundle_generation_info)
+ _InstallBundle(self.devices, bundle_apks_path)
+ else:
+ _InstallApk(self.devices, self.apk_helper, self.install_dict)
class _UninstallCommand(_Command):
name = 'uninstall'
- description = 'Removes the APK to one or more devices.'
+ description = 'Removes the APK or bundle from one or more devices.'
needs_package_name = True
def Run(self):
@@ -929,8 +1010,8 @@ class _UninstallCommand(_Command):
class _LaunchCommand(_Command):
name = 'launch'
- description = ('Sends a launch intent for the APK after first writing the '
- 'command-line flags file.')
+ description = ('Sends a launch intent for the APK or bundle after first '
+ 'writing the command-line flags file.')
needs_package_name = True
accepts_command_line_flags = True
all_devices_by_default = True
@@ -950,6 +1031,10 @@ class _LaunchCommand(_Command):
group.add_argument('url', nargs='?', help='A URL to launch with.')
def Run(self):
+ if self.args.url and self.is_bundle:
+ # TODO(digit): Support this, maybe by using 'dumpsys' as described
+ # in the _LaunchUrl() comment.
+ raise Exception('Launching with URL not supported for bundles yet!')
_LaunchUrl(self.devices, self.args.package_name, argv=self.args.args,
command_line_flags_file=self.args.command_line_flags_file,
url=self.args.url, apk=self.apk_helper,
@@ -1214,6 +1299,26 @@ class _RunCommand(_InstallCommand, _LaunchCommand, _LogcatCommand):
_LogcatCommand.Run(self)
+class _BuildBundleApks(_Command):
+ name = 'build-bundle-apks'
+ description = ('Build the .apks archive from an Android app bundle, and '
+ 'optionally copy it to a specific destination.')
+ need_device_args = False
+
+ def _RegisterExtraArgs(self, group):
+ group.add_argument('--output-apks',
+ help='Destination path for .apks archive copy.')
+
+ def Run(self):
+ bundle_apks_path = _GenerateBundleApks(self.bundle_generation_info)
+ if self.args.output_apks:
+ try:
+ shutil.copyfile(bundle_apks_path, self.args.output_apks)
+ except shutil.Error as e:
+ logging.exception('Failed to copy .apks archive: %s', e)
+
+
+# Shared commands for regular APKs and app bundles.
_COMMANDS = [
_DevicesCommand,
_InstallCommand,
@@ -1233,10 +1338,17 @@ _COMMANDS = [
_RunCommand,
]
+# Commands specific to app bundles.
+_BUNDLE_COMMANDS = [
+ _BuildBundleApks,
+]
-def _ParseArgs(parser, from_wrapper_script):
+
+def _ParseArgs(parser, from_wrapper_script, is_bundle):
subparsers = parser.add_subparsers()
- commands = [clazz(from_wrapper_script) for clazz in _COMMANDS]
+ command_list = _COMMANDS + (_BUNDLE_COMMANDS if is_bundle else [])
+ commands = [clazz(from_wrapper_script, is_bundle) for clazz in command_list]
+
for command in commands:
if from_wrapper_script or not command.needs_output_directory:
command.RegisterArgs(subparsers)
@@ -1249,21 +1361,21 @@ def _ParseArgs(parser, from_wrapper_script):
return parser.parse_args(argv)
-def _RunInternal(parser, output_directory=None):
+def _RunInternal(parser, output_directory=None, bundle_generation_info=None):
colorama.init()
parser.set_defaults(output_directory=output_directory)
from_wrapper_script = bool(output_directory)
- args = _ParseArgs(parser, from_wrapper_script)
+ args = _ParseArgs(parser, from_wrapper_script, bool(bundle_generation_info))
run_tests_helper.SetLogLevel(args.verbose_count)
args.command.ProcessArgs(args)
+ if bundle_generation_info:
+ args.command.RegisterBundleGenerationInfo(bundle_generation_info)
args.command.Run()
# Incremental install depends on the cache being cleared when uninstalling.
if args.command.name != 'uninstall':
_SaveDeviceCaches(args.command.devices, output_directory)
-# TODO(agrieve): Remove =None from target_cpu on or after October 2017.
-# It exists only so that stale wrapper scripts continue to work.
def Run(output_directory, apk_path, incremental_json, command_line_flags_file,
target_cpu, proguard_mapping_path):
"""Entry point for generated wrapper scripts."""
@@ -1280,6 +1392,47 @@ def Run(output_directory, apk_path, incremental_json, command_line_flags_file,
_RunInternal(parser, output_directory=output_directory)
+def RunForBundle(output_directory, bundle_path, bundle_apks_path,
+ aapt2_path, keystore_path, keystore_password,
+ keystore_alias, package_name, command_line_flags_file,
+ proguard_mapping_path, target_cpu):
+ """Entry point for generated app bundle wrapper scripts.
+
+ Args:
+ output_dir: Chromium output directory path.
+ bundle_path: Input bundle path.
+ bundle_apks_path: Output bundle .apks archive path.
+ aapt2_path: Aapt2 tool path.
+ keystore_path: Keystore file path.
+ keystore_password: Keystore password.
+ keystore_alias: Signing key name alias in keystore file.
+ package_name: Application's package name.
+ command_line_flags_file: Optional. Name of an on-device file that will be
+ used to store command-line flags for this bundle.
+ proguard_mapping_path: Input path to the Proguard mapping file, used to
+ deobfuscate Java stack traces.
+ target_cpu: Chromium target CPU name, used by the 'gdb' command.
+ """
+ constants.SetOutputDirectory(output_directory)
+ devil_chromium.Initialize(output_directory=output_directory)
+ bundle_generation_info = BundleGenerationInfo(
+ bundle_path=bundle_path,
+ bundle_apks_path=bundle_apks_path,
+ aapt2_path=aapt2_path,
+ keystore_path=keystore_path,
+ keystore_password=keystore_password,
+ keystore_alias=keystore_alias)
+
+ parser = argparse.ArgumentParser()
+ parser.set_defaults(
+ package_name=package_name,
+ command_line_flags_file=command_line_flags_file,
+ proguard_mapping_path=proguard_mapping_path,
+ target_cpu=target_cpu)
+ _RunInternal(parser, output_directory=output_directory,
+ bundle_generation_info=bundle_generation_info)
+
+
def main():
devil_chromium.Initialize()
_RunInternal(argparse.ArgumentParser(), output_directory=None)
diff --git a/chromium/build/android/asan_symbolize.py b/chromium/build/android/asan_symbolize.py
index 19d71ca3aff..9f2e88a60d6 100755
--- a/chromium/build/android/asan_symbolize.py
+++ b/chromium/build/android/asan_symbolize.py
@@ -14,6 +14,7 @@ import sys
from pylib import constants
from pylib.constants import host_paths
+# pylint: disable=wrong-import-order
# Uses symbol.py from third_party/android_platform, not python's.
with host_paths.SysPath(
host_paths.ANDROID_PLATFORM_DEVELOPMENT_SCRIPTS_PATH,
diff --git a/chromium/build/android/devil_chromium.py b/chromium/build/android/devil_chromium.py
index af2141a552d..2ae643674bd 100644
--- a/chromium/build/android/devil_chromium.py
+++ b/chromium/build/android/devil_chromium.py
@@ -167,4 +167,3 @@ def Initialize(output_directory=None, custom_deps=None, adb_path=None):
devil_env.config.Initialize(
configs=[devil_dynamic_config], config_files=[_DEVIL_CONFIG])
-
diff --git a/chromium/build/android/docs/android_app_bundles.md b/chromium/build/android/docs/android_app_bundles.md
new file mode 100644
index 00000000000..e9e82844940
--- /dev/null
+++ b/chromium/build/android/docs/android_app_bundles.md
@@ -0,0 +1,199 @@
+# Introduction
+
+This document describes how the Chromium build system supports Android app
+bundles.
+
+[TOC]
+
+# Overview of app bundles
+
+An Android app bundle is an alternative application distribution format for
+Android applications on the Google Play Store, that allows reducing the size
+of binaries sent for installation to individual devices that run on Android L
+and beyond. For more information about them, see the official Android
+documentation at:
+
+ https://developer.android.com/guide/app-bundle/
+
+For the context of this document, the most important points are:
+
+ - Unlike a regular APK (e.g. `foo.apk`), the bundle (e.g. `foo.aab`) cannot
+ be installed directly on a device.
+
+ - Instead, it must be processed into a set of installable split APKs, which
+ are stored inside a special zip archive (e.g. `foo.apks`).
+
+ - The splitting can be based on various criteria: e.g. language or screen
+ density for resources, or cpu ABI for native code.
+
+ - The bundle also uses the notion of modules to separate several application
+ features. Each module has its own code, assets and resources, and can be
+ installed separately from the rest of the application if needed.
+
+ - The main application itself is stored in the '`base`' module (this name
+ cannot be changed).
+
+
+# Declaring app bundles with GN templates
+
+Here's an example that shows how to declare a simple bundle that contains
+a single base module, which enables language-based splits:
+
+```gn
+
+ # First declare the first bundle module. The base module is the one
+ # that contains the main application's code, resources and assets.
+ android_app_bundle_module("foo_base_module") {
+ # Declaration are similar to android_apk here.
+ ...
+ }
+
+ # Second, declare the bundle itself.
+ android_app_bundle("foo_bundle") {
+ # Indicate the base module to use for this bundle
+ base_module_target = ":foo_base_module"
+
+ # The name of our bundle file (without any suffix). Default would
+ # be 'foo_bundle' otherwise.
+ bundle_name = "FooBundle"
+
+ # Signing your bundle is required to upload it to the Play Store
+ # but since signing is very slow, avoid doing it for non official
+ # builds. Signing the bundle is not required for local testing.
+ sign_bundle = is_official_build
+
+ # Enable language-based splits for this bundle. Which means that
+ # resources and assets specific to a given language will be placed
+ # into their own split APK in the final .apks archive.
+ enable_language_splits = true
+
+ # Proguard settings must be passed at the bundle, not module, target.
+ proguard_enabled = !is_java_debug
+ }
+```
+
+When generating the `foo_bundle` target with Ninja, you will end up with
+the following:
+
+ - The bundle file under `out/Release/apks/FooBundle.aab`
+
+ - A helper script called `out/Release/bin/foo_bundle`, which can be used
+ to install / launch / uninstall the bundle on local devices.
+
+ This works like an APK wrapper script (e.g. `foo_apk`). Use `--help`
+ to see all possible commands supported by the script.
+
+If you need more modules besides the base one, you will need to list all the
+extra ones using the extra_modules variable which takes a list of GN scopes,
+as in:
+
+```gn
+
+ android_app_bundle_module("foo_base_module") {
+ ...
+ }
+
+ android_app_bundle_module("foo_extra_module") {
+ ...
+ }
+
+ android_app_bundle("foo_bundle") {
+ base_module_target = ":foo_base_module"
+
+ extra_modules = [
+ { # NOTE: Scopes require one field per line, and no comma separators.
+ name = "my_module"
+ module_target = ":foo_extra_module"
+ }
+ ]
+
+ ...
+ }
+```
+
+Note that each extra module is identified by a unique name, which cannot
+be '`base`'.
+
+
+# Bundle signature issues
+
+Signing an app bundle is not necessary, unless you want to upload it to the
+Play Store. Since this process is very slow (it uses `jarsigner` instead of
+the much faster `apkbuilder`), you can control it with the `sign_bundle`
+variable, as described in the example above.
+
+The `.apks` archive however always contains signed split APKs. The keystore
+path/password/alias being used are the default ones, unless you use custom
+values when declaring the bundle itself, as in:
+
+```gn
+ android_app_bundle("foo_bundle") {
+ ...
+ keystore_path = "//path/to/keystore"
+ keystore_password = "K3y$t0Re-Pa$$w0rd"
+ keystore_name = "my-signing-key-name"
+ }
+```
+
+These values are not stored in the bundle itself, but in the wrapper script,
+which will use them to generate the `.apks` archive for you. This allows you
+to properly install updates on top of existing applications on any device.
+
+
+# Proguard and bundles
+
+When using an app bundle that is made of several modules, it is crucial to
+ensure that proguard, if enabled:
+
+- Keeps the obfuscated class names used by each module consistent.
+- Does not remove classes that are not used in one module, but referenced
+ by others.
+
+To achieve this, a special scheme called *synchronized proguarding* is
+performed, which consists of the following steps:
+
+- The list of unoptimized .jar files from all modules are sent to a single
+ proguard command. This generates a new temporary optimized *group* .jar file.
+
+- Each module extracts the optimized class files from the optimized *group*
+ .jar file, to generate its own, module-specific, optimized .jar.
+
+- Each module-specific optimized .jar is then sent to dex generation.
+
+This synchronized proguarding step is added by the `android_app_bundle()` GN
+template. In practice this means the following:
+
+ - If `proguard_enabled` and `proguard_jar_path` must be passed to
+ `android_app_bundle` targets, but not to `android_app_bundle_module` ones.
+
+ - `proguard_configs` can be still passed to individual modules, just
+ like regular APKs. All proguard configs will be merged during the
+ synchronized proguard step.
+
+
+# Manual generation and installation of .apks archives
+
+Note that the `foo_bundle` script knows how to generate the .apks archive
+from the bundle file, and install it to local devices for you. For example,
+to install and launch a bundle, use:
+
+```sh
+ out/Release/bin/foo_bundle run
+```
+
+If you want to manually look or use the `.apks` archive, use the following
+command to generate it:
+
+```sh
+ out/Release/bin/foo_bundle build-bundle-apks \
+ --output-apks=/tmp/BundleFoo.apks
+```
+
+All split APKs within the archive will be properly signed. And you will be
+able to look at its content (with `unzip -l`), or install it manually with:
+
+```sh
+ build/android/gyp/bundletool.py install-apks \
+ --apks=/tmp/BundleFoo.apks \
+ --adb=$(which adb)
+```
diff --git a/chromium/build/android/gradle/generate_gradle.py b/chromium/build/android/gradle/generate_gradle.py
index 302f0a679ea..dfc2f241549 100755
--- a/chromium/build/android/gradle/generate_gradle.py
+++ b/chromium/build/android/gradle/generate_gradle.py
@@ -169,7 +169,7 @@ class _ProjectEntry(object):
self._build_config = None
self._java_files = None
self._all_entries = None
- self.android_test_entries = None
+ self.android_test_entries = []
@classmethod
def FromGnTarget(cls, gn_target):
@@ -334,7 +334,7 @@ class _ProjectContextGenerator(object):
return _DEFAULT_ANDROID_MANIFEST_PATH
variables = {}
- variables['compile_sdk_version'] = self.build_vars['android_sdk_version']
+ variables['compile_sdk_version'] = self.build_vars['compile_sdk_version']
variables['package'] = resource_packages[0]
output_file = os.path.join(
@@ -373,21 +373,24 @@ class _ProjectContextGenerator(object):
res_zips += entry.ResZips()
return set(_RebasePath(res_zips))
- def GeneratedInputs(self, root_entry):
- generated_inputs = self.AllResZips(root_entry)
- generated_inputs.update(self.AllSrcjars(root_entry))
+ def GeneratedInputs(self, root_entry, fast=None):
+ generated_inputs = set()
+ if not fast:
+ generated_inputs.update(self.AllResZips(root_entry))
+ generated_inputs.update(self.AllSrcjars(root_entry))
for entry in self._GetEntries(root_entry):
generated_inputs.update(entry.GeneratedJavaFiles())
generated_inputs.update(entry.PrebuiltJars())
return generated_inputs
- def GeneratedZips(self, root_entry):
+ def GeneratedZips(self, root_entry, fast=None):
entry_output_dir = self.EntryOutputDir(root_entry)
tuples = []
- tuples.extend((s, os.path.join(entry_output_dir, _SRCJARS_SUBDIR))
- for s in self.AllSrcjars(root_entry))
- tuples.extend((s, os.path.join(entry_output_dir, _RES_SUBDIR))
- for s in self.AllResZips(root_entry))
+ if not fast:
+ tuples.extend((s, os.path.join(entry_output_dir, _SRCJARS_SUBDIR))
+ for s in self.AllSrcjars(root_entry))
+ tuples.extend((s, os.path.join(entry_output_dir, _RES_SUBDIR))
+ for s in self.AllResZips(root_entry))
return tuples
def GenerateManifest(self, root_entry):
@@ -550,7 +553,7 @@ def _GenerateBaseVars(generator, build_vars, source_properties):
variables = {}
variables['build_tools_version'] = source_properties['Pkg.Revision']
variables['compile_sdk_version'] = (
- 'android-%s' % build_vars['android_sdk_version'])
+ 'android-%s' % build_vars['compile_sdk_version'])
target_sdk_version = build_vars['android_sdk_version']
if target_sdk_version.isalpha():
target_sdk_version = '"{}"'.format(target_sdk_version)
@@ -820,6 +823,12 @@ def main():
action='append',
help='GN native targets to generate for. May be '
'repeated.')
+ parser.add_argument('--compile-sdk-version',
+ type=int,
+ default=0,
+ help='Override compileSdkVersion for android sdk docs. '
+ 'Useful when sources for android_sdk_version is '
+ 'not available in Android Studio.')
version_group = parser.add_mutually_exclusive_group()
version_group.add_argument('--beta',
action='store_true',
@@ -895,6 +904,10 @@ def main():
channel = 'canary'
else:
channel = 'stable'
+ if args.compile_sdk_version:
+ build_vars['compile_sdk_version'] = args.compile_sdk_version
+ else:
+ build_vars['compile_sdk_version'] = build_vars['android_sdk_version']
generator = _ProjectContextGenerator(_gradle_output_dir, build_vars,
args.use_gradle_process_resources, jinja_processor, args.split_projects,
channel)
@@ -962,24 +975,24 @@ def main():
_WriteFile(os.path.join(generator.project_dir, 'local.properties'),
_GenerateLocalProperties(sdk_path))
- if not args.fast:
- zip_tuples = []
- generated_inputs = set()
- for entry in entries:
+ zip_tuples = []
+ generated_inputs = set()
+ for entry in entries:
+ entries_to_gen = [entry]
+ entries_to_gen.extend(entry.android_test_entries)
+ for entry_to_gen in entries_to_gen:
# Build all paths references by .gradle that exist within output_dir.
- generated_inputs.update(generator.GeneratedInputs(entry))
- zip_tuples.extend(generator.GeneratedZips(entry))
- if generated_inputs:
- logging.warning('Building generated source files...')
- targets = _RebasePath(generated_inputs, output_dir)
- _RunNinja(output_dir, targets, args.j)
- if zip_tuples:
- _ExtractZips(generator.project_dir, zip_tuples)
+ generated_inputs.update(
+ generator.GeneratedInputs(entry_to_gen, args.fast))
+ zip_tuples.extend(generator.GeneratedZips(entry_to_gen, args.fast))
+ if generated_inputs:
+ logging.warning('Building generated source files...')
+ targets = _RebasePath(generated_inputs, output_dir)
+ _RunNinja(output_dir, targets, args.j)
+ if zip_tuples:
+ _ExtractZips(generator.project_dir, zip_tuples)
logging.warning('Generated projects for Android Studio %s', channel)
- if not args.fast:
- logging.warning('Run with --fast flag to skip generating files (faster, '
- 'but less correct)')
logging.warning('For more tips: https://chromium.googlesource.com/chromium'
'/src.git/+/master/docs/android_studio.md')
diff --git a/chromium/build/android/gradle/root.jinja b/chromium/build/android/gradle/root.jinja
index 76ffa8f63be..ff26840f00f 100644
--- a/chromium/build/android/gradle/root.jinja
+++ b/chromium/build/android/gradle/root.jinja
@@ -10,7 +10,7 @@ buildscript {
}
dependencies {
{% if channel == 'canary' %}
- classpath "com.android.tools.build:gradle:3.2.0-alpha16"
+ classpath "com.android.tools.build:gradle:3.3.0-alpha05"
{% elif channel == 'beta' %}
classpath "com.android.tools.build:gradle:3.1.0-beta4"
{% else %}
diff --git a/chromium/build/android/gyp/aar.pydeps b/chromium/build/android/gyp/aar.pydeps
new file mode 100644
index 00000000000..e08c5475e3d
--- /dev/null
+++ b/chromium/build/android/gyp/aar.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/aar.pydeps build/android/gyp/aar.py
+../../gn_helpers.py
+aar.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/aidl.py b/chromium/build/android/gyp/aidl.py
index 1591f24508c..64ad29041ad 100755
--- a/chromium/build/android/gyp/aidl.py
+++ b/chromium/build/android/gyp/aidl.py
@@ -18,7 +18,6 @@ from util import build_utils
def main(argv):
option_parser = optparse.OptionParser()
- build_utils.AddDepfileOption(option_parser)
option_parser.add_option('--aidl-path', help='Path to the aidl binary.')
option_parser.add_option('--imports', help='Files to import.')
option_parser.add_option('--includes',
@@ -54,9 +53,6 @@ def main(argv):
pkg_name.replace('.', '/'), os.path.basename(path))
build_utils.AddToZipHermetic(srcjar, arcname, data=data)
- if options.depfile:
- build_utils.WriteDepfile(options.depfile, options.srcjar)
-
if __name__ == '__main__':
sys.exit(main(sys.argv))
diff --git a/chromium/build/android/gyp/aidl.pydeps b/chromium/build/android/gyp/aidl.pydeps
new file mode 100644
index 00000000000..2dbce376f1e
--- /dev/null
+++ b/chromium/build/android/gyp/aidl.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/aidl.pydeps build/android/gyp/aidl.py
+../../gn_helpers.py
+aidl.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/apkbuilder.pydeps b/chromium/build/android/gyp/apkbuilder.pydeps
new file mode 100644
index 00000000000..3ae03319c90
--- /dev/null
+++ b/chromium/build/android/gyp/apkbuilder.pydeps
@@ -0,0 +1,8 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/apkbuilder.pydeps build/android/gyp/apkbuilder.py
+../../gn_helpers.py
+apkbuilder.py
+finalize_apk.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/app_bundle_to_apks.pydeps b/chromium/build/android/gyp/app_bundle_to_apks.pydeps
new file mode 100644
index 00000000000..49c2892b2f3
--- /dev/null
+++ b/chromium/build/android/gyp/app_bundle_to_apks.pydeps
@@ -0,0 +1,8 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/app_bundle_to_apks.pydeps build/android/gyp/app_bundle_to_apks.py
+../../gn_helpers.py
+app_bundle_to_apks.py
+bundletool.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/bytecode_processor.pydeps b/chromium/build/android/gyp/bytecode_processor.pydeps
new file mode 100644
index 00000000000..d8ff3964950
--- /dev/null
+++ b/chromium/build/android/gyp/bytecode_processor.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/bytecode_processor.pydeps build/android/gyp/bytecode_processor.py
+../../gn_helpers.py
+bytecode_processor.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/compile_resources.py b/chromium/build/android/gyp/compile_resources.py
index 412c6f7485d..cda03e60601 100755
--- a/chromium/build/android/gyp/compile_resources.py
+++ b/chromium/build/android/gyp/compile_resources.py
@@ -671,7 +671,8 @@ def main(args):
input_paths=input_paths,
input_strings=input_strings,
output_paths=output_paths,
- depfile_deps=options.dependencies_res_zips + options.extra_r_text_files)
+ depfile_deps=options.dependencies_res_zips + options.extra_r_text_files,
+ add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/compile_resources.pydeps b/chromium/build/android/gyp/compile_resources.pydeps
new file mode 100644
index 00000000000..2ffcb52a2c9
--- /dev/null
+++ b/chromium/build/android/gyp/compile_resources.pydeps
@@ -0,0 +1,29 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/compile_resources.pydeps build/android/gyp/compile_resources.py
+../../../third_party/jinja2/__init__.py
+../../../third_party/jinja2/_compat.py
+../../../third_party/jinja2/bccache.py
+../../../third_party/jinja2/compiler.py
+../../../third_party/jinja2/defaults.py
+../../../third_party/jinja2/environment.py
+../../../third_party/jinja2/exceptions.py
+../../../third_party/jinja2/filters.py
+../../../third_party/jinja2/idtracking.py
+../../../third_party/jinja2/lexer.py
+../../../third_party/jinja2/loaders.py
+../../../third_party/jinja2/nodes.py
+../../../third_party/jinja2/optimizer.py
+../../../third_party/jinja2/parser.py
+../../../third_party/jinja2/runtime.py
+../../../third_party/jinja2/tests.py
+../../../third_party/jinja2/utils.py
+../../../third_party/jinja2/visitor.py
+../../../third_party/markupsafe/__init__.py
+../../../third_party/markupsafe/_compat.py
+../../../third_party/markupsafe/_native.py
+../../gn_helpers.py
+compile_resources.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+util/resource_utils.py
diff --git a/chromium/build/android/gyp/copy_ex.py b/chromium/build/android/gyp/copy_ex.py
index a9f6a9f44bb..48d1b26df18 100755
--- a/chromium/build/android/gyp/copy_ex.py
+++ b/chromium/build/android/gyp/copy_ex.py
@@ -35,8 +35,14 @@ def CopyFile(f, dest, deps):
dest = os.path.join(dest, os.path.basename(f))
deps.append(f)
- if os.path.isfile(dest) and filecmp.cmp(dest, f, shallow=False):
- return
+
+ if os.path.isfile(dest):
+ if filecmp.cmp(dest, f, shallow=False):
+ return
+ # The shutil.copy() below would fail if the file does not have write
+ # permissions. Deleting the file has similar costs to modifying the
+ # permissions.
+ os.unlink(dest)
shutil.copy(f, dest)
diff --git a/chromium/build/android/gyp/copy_ex.pydeps b/chromium/build/android/gyp/copy_ex.pydeps
new file mode 100644
index 00000000000..e0fb31eaa9b
--- /dev/null
+++ b/chromium/build/android/gyp/copy_ex.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/copy_ex.pydeps build/android/gyp/copy_ex.py
+../../gn_helpers.py
+copy_ex.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/create_apk_operations_script.pydeps b/chromium/build/android/gyp/create_apk_operations_script.pydeps
new file mode 100644
index 00000000000..9d4dcb8fe5b
--- /dev/null
+++ b/chromium/build/android/gyp/create_apk_operations_script.pydeps
@@ -0,0 +1,3 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_apk_operations_script.pydeps build/android/gyp/create_apk_operations_script.py
+create_apk_operations_script.py
diff --git a/chromium/build/android/gyp/create_app_bundle.pydeps b/chromium/build/android/gyp/create_app_bundle.pydeps
new file mode 100644
index 00000000000..fef04fab53a
--- /dev/null
+++ b/chromium/build/android/gyp/create_app_bundle.pydeps
@@ -0,0 +1,30 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_app_bundle.pydeps build/android/gyp/create_app_bundle.py
+../../../third_party/jinja2/__init__.py
+../../../third_party/jinja2/_compat.py
+../../../third_party/jinja2/bccache.py
+../../../third_party/jinja2/compiler.py
+../../../third_party/jinja2/defaults.py
+../../../third_party/jinja2/environment.py
+../../../third_party/jinja2/exceptions.py
+../../../third_party/jinja2/filters.py
+../../../third_party/jinja2/idtracking.py
+../../../third_party/jinja2/lexer.py
+../../../third_party/jinja2/loaders.py
+../../../third_party/jinja2/nodes.py
+../../../third_party/jinja2/optimizer.py
+../../../third_party/jinja2/parser.py
+../../../third_party/jinja2/runtime.py
+../../../third_party/jinja2/tests.py
+../../../third_party/jinja2/utils.py
+../../../third_party/jinja2/visitor.py
+../../../third_party/markupsafe/__init__.py
+../../../third_party/markupsafe/_compat.py
+../../../third_party/markupsafe/_native.py
+../../gn_helpers.py
+bundletool.py
+create_app_bundle.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+util/resource_utils.py
diff --git a/chromium/build/android/gyp/create_bundle_wrapper_script.py b/chromium/build/android/gyp/create_bundle_wrapper_script.py
new file mode 100755
index 00000000000..04108363e3f
--- /dev/null
+++ b/chromium/build/android/gyp/create_bundle_wrapper_script.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# Copyright 2018 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.
+
+"""Create a wrapper script to manage an Android App Bundle."""
+
+import argparse
+import os
+import string
+import sys
+
+from util import build_utils
+
+SCRIPT_TEMPLATE = string.Template("""\
+#!/usr/bin/env python
+#
+# This file was generated by build/android/gyp/create_bundle_wrapper_script.py
+
+import os
+import sys
+
+def main():
+ script_directory = os.path.dirname(__file__)
+ resolve = lambda p: p if p is None else os.path.abspath(os.path.join(
+ script_directory, p))
+ sys.path.append(resolve(${WRAPPED_SCRIPT_DIR}))
+ import apk_operations
+
+ apk_operations.RunForBundle(output_directory=resolve(${OUTPUT_DIR}),
+ bundle_path=resolve(${BUNDLE_PATH}),
+ bundle_apks_path=resolve(${BUNDLE_APKS_PATH}),
+ aapt2_path=resolve(${AAPT2_PATH}),
+ keystore_path=resolve(${KEYSTORE_PATH}),
+ keystore_password=${KEYSTORE_PASSWORD},
+ keystore_alias=${KEY_NAME},
+ package_name=${PACKAGE_NAME},
+ command_line_flags_file=${FLAGS_FILE},
+ proguard_mapping_path=resolve(${MAPPING_PATH}),
+ target_cpu=${TARGET_CPU})
+
+if __name__ == '__main__':
+ sys.exit(main())
+""")
+
+
+def main(args):
+ args = build_utils.ExpandFileArgs(args)
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--script-output-path', required=True,
+ help='Output path for executable script.')
+ parser.add_argument('--bundle-path', required=True)
+ parser.add_argument('--bundle-apks-path', required=True)
+ parser.add_argument('--package-name', required=True)
+ parser.add_argument('--aapt2-path', required=True)
+ parser.add_argument('--keystore-path', required=True)
+ parser.add_argument('--keystore-password', required=True)
+ parser.add_argument('--key-name', required=True)
+ parser.add_argument('--command-line-flags-file')
+ parser.add_argument('--proguard-mapping-path')
+ parser.add_argument('--target-cpu')
+ args = parser.parse_args(args)
+
+ def relativize(path):
+ """Returns the path relative to the output script directory."""
+ if path is None:
+ return path
+ return os.path.relpath(path, os.path.dirname(args.script_output_path))
+
+ wrapped_script_dir = os.path.join(os.path.dirname(__file__), os.path.pardir)
+ wrapped_script_dir = relativize(wrapped_script_dir)
+
+ with open(args.script_output_path, 'w') as script:
+ script_dict = {
+ 'WRAPPED_SCRIPT_DIR': repr(wrapped_script_dir),
+ 'OUTPUT_DIR': repr(relativize('.')),
+ 'BUNDLE_PATH': repr(relativize(args.bundle_path)),
+ 'BUNDLE_APKS_PATH': repr(relativize(args.bundle_apks_path)),
+ 'PACKAGE_NAME': repr(args.package_name),
+ 'AAPT2_PATH': repr(relativize(args.aapt2_path)),
+ 'KEYSTORE_PATH': repr(relativize(args.keystore_path)),
+ 'KEYSTORE_PASSWORD': repr(args.keystore_password),
+ 'KEY_NAME': repr(args.key_name),
+ 'MAPPING_PATH': repr(relativize(args.proguard_mapping_path)),
+ 'FLAGS_FILE': repr(args.command_line_flags_file),
+ 'TARGET_CPU': repr(args.target_cpu),
+ }
+ script.write(SCRIPT_TEMPLATE.substitute(script_dict))
+ os.chmod(args.script_output_path, 0750)
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))
diff --git a/chromium/build/android/gyp/create_bundle_wrapper_script.pydeps b/chromium/build/android/gyp/create_bundle_wrapper_script.pydeps
new file mode 100644
index 00000000000..5c87801e253
--- /dev/null
+++ b/chromium/build/android/gyp/create_bundle_wrapper_script.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_bundle_wrapper_script.pydeps build/android/gyp/create_bundle_wrapper_script.py
+../../gn_helpers.py
+create_bundle_wrapper_script.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/create_dist_jar.py b/chromium/build/android/gyp/create_dist_jar.py
index 2e06478fae8..7f78935a47d 100755
--- a/chromium/build/android/gyp/create_dist_jar.py
+++ b/chromium/build/android/gyp/create_dist_jar.py
@@ -24,7 +24,8 @@ def main(args):
build_utils.MergeZips(options.output, input_jars)
if options.depfile:
- build_utils.WriteDepfile(options.depfile, options.output, input_jars)
+ build_utils.WriteDepfile(options.depfile, options.output, input_jars,
+ add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/create_dist_jar.pydeps b/chromium/build/android/gyp/create_dist_jar.pydeps
new file mode 100644
index 00000000000..f4224d7f99d
--- /dev/null
+++ b/chromium/build/android/gyp/create_dist_jar.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_dist_jar.pydeps build/android/gyp/create_dist_jar.py
+../../gn_helpers.py
+create_dist_jar.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/create_java_binary_script.pydeps b/chromium/build/android/gyp/create_java_binary_script.pydeps
new file mode 100644
index 00000000000..96d79bf609e
--- /dev/null
+++ b/chromium/build/android/gyp/create_java_binary_script.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_java_binary_script.pydeps build/android/gyp/create_java_binary_script.py
+../../gn_helpers.py
+create_java_binary_script.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/create_stack_script.pydeps b/chromium/build/android/gyp/create_stack_script.pydeps
new file mode 100644
index 00000000000..7bddb156f40
--- /dev/null
+++ b/chromium/build/android/gyp/create_stack_script.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_stack_script.pydeps build/android/gyp/create_stack_script.py
+../../gn_helpers.py
+create_stack_script.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/create_test_runner_script.pydeps b/chromium/build/android/gyp/create_test_runner_script.pydeps
new file mode 100644
index 00000000000..4b8876bc943
--- /dev/null
+++ b/chromium/build/android/gyp/create_test_runner_script.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_test_runner_script.pydeps build/android/gyp/create_test_runner_script.py
+../../gn_helpers.py
+create_test_runner_script.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/create_tool_wrapper.pydeps b/chromium/build/android/gyp/create_tool_wrapper.pydeps
new file mode 100644
index 00000000000..75b8326e70b
--- /dev/null
+++ b/chromium/build/android/gyp/create_tool_wrapper.pydeps
@@ -0,0 +1,3 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_tool_wrapper.pydeps build/android/gyp/create_tool_wrapper.py
+create_tool_wrapper.py
diff --git a/chromium/build/android/gyp/desugar.pydeps b/chromium/build/android/gyp/desugar.pydeps
new file mode 100644
index 00000000000..a40f3aa7ddd
--- /dev/null
+++ b/chromium/build/android/gyp/desugar.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/desugar.pydeps build/android/gyp/desugar.py
+../../gn_helpers.py
+desugar.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/dex.pydeps b/chromium/build/android/gyp/dex.pydeps
new file mode 100644
index 00000000000..0e18d02a460
--- /dev/null
+++ b/chromium/build/android/gyp/dex.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/dex.pydeps build/android/gyp/dex.py
+../../gn_helpers.py
+dex.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/dist_aar.py b/chromium/build/android/gyp/dist_aar.py
index 6dc38c488a6..ed823f18b7b 100755
--- a/chromium/build/android/gyp/dist_aar.py
+++ b/chromium/build/android/gyp/dist_aar.py
@@ -124,7 +124,8 @@ def main(args):
if options.depfile:
all_inputs = (options.jars + options.dependencies_res_zips +
options.r_text_files + options.proguard_configs)
- build_utils.WriteDepfile(options.depfile, options.output, all_inputs)
+ build_utils.WriteDepfile(options.depfile, options.output, all_inputs,
+ add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/dist_aar.pydeps b/chromium/build/android/gyp/dist_aar.pydeps
new file mode 100644
index 00000000000..da5ea8da23d
--- /dev/null
+++ b/chromium/build/android/gyp/dist_aar.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/dist_aar.pydeps build/android/gyp/dist_aar.py
+../../gn_helpers.py
+dist_aar.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/emma_instr.pydeps b/chromium/build/android/gyp/emma_instr.pydeps
new file mode 100644
index 00000000000..88f752a0f9d
--- /dev/null
+++ b/chromium/build/android/gyp/emma_instr.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/emma_instr.pydeps build/android/gyp/emma_instr.py
+../../gn_helpers.py
+emma_instr.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/filter_zip.pydeps b/chromium/build/android/gyp/filter_zip.pydeps
new file mode 100644
index 00000000000..67c989cf885
--- /dev/null
+++ b/chromium/build/android/gyp/filter_zip.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/filter_zip.pydeps build/android/gyp/filter_zip.py
+../../gn_helpers.py
+filter_zip.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/gcc_preprocess.py b/chromium/build/android/gyp/gcc_preprocess.py
index 8c5c404c744..8b3444c2b01 100755
--- a/chromium/build/android/gyp/gcc_preprocess.py
+++ b/chromium/build/android/gyp/gcc_preprocess.py
@@ -47,7 +47,7 @@ def main(args):
DoGcc(options)
if options.depfile:
- build_utils.WriteDepfile(options.depfile, options.output)
+ build_utils.WriteDepfile(options.depfile, options.output, add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/gcc_preprocess.pydeps b/chromium/build/android/gyp/gcc_preprocess.pydeps
new file mode 100644
index 00000000000..64e776b6338
--- /dev/null
+++ b/chromium/build/android/gyp/gcc_preprocess.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/gcc_preprocess.pydeps build/android/gyp/gcc_preprocess.py
+../../gn_helpers.py
+gcc_preprocess.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/generate_proguarded_module_jar.py b/chromium/build/android/gyp/generate_proguarded_module_jar.py
new file mode 100755
index 00000000000..97b3027a51e
--- /dev/null
+++ b/chromium/build/android/gyp/generate_proguarded_module_jar.py
@@ -0,0 +1,159 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2018 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.
+
+"""Extracts a bundle module's classes from jar created in the synchronized
+proguarding step and packages them into a new jar.
+
+Synchronized proguarding means that, when several app modules are combined into
+an app bundle, all un-optimized jars for all modules are grouped and sent to a
+single proguard command, which generates a single, common, intermediate
+optimized jar, and its mapping file.
+
+This script is used to extract, from this synchronized proguard jar, all the
+optimized classes corresponding to a single module, into a new .jar file. The
+latter will be compiled later into the module's dex file.
+
+For this, the script reads the module's un-obfuscated class names from the
+module's unoptimized jars. Then, it maps those to obfuscated class names using
+the proguard mapping file. Finally, it extracts the module's class files from
+the proguarded jar and zips them into a new module jar. """
+
+import argparse
+import os
+import sys
+import zipfile
+
+from util import build_utils
+
+MANIFEST = """Manifest-Version: 1.0
+Created-By: generate_proguarded_module_jar.py
+"""
+
+
+# TODO(tiborg): Share with merge_jar_info_files.py.
+def _FullJavaNameFromClassFilePath(path):
+ if not path.endswith('.class'):
+ return ''
+ path = os.path.splitext(path)[0]
+ parts = []
+ while path:
+ # Use split to be platform independent.
+ head, tail = os.path.split(path)
+ path = head
+ parts.append(tail)
+ parts.reverse() # Package comes first
+ return '.'.join(parts)
+
+
+def main(args):
+ args = build_utils.ExpandFileArgs(args)
+ parser = argparse.ArgumentParser()
+ build_utils.AddDepfileOption(parser)
+ parser.add_argument(
+ '--proguarded-jar',
+ required=True,
+ help='Path to input jar produced by synchronized proguarding')
+ parser.add_argument(
+ '--proguard-mapping',
+ required=True,
+ help='Path to input proguard mapping produced by synchronized '
+ 'proguarding')
+ parser.add_argument(
+ '--module-input-jars',
+ required=True,
+ help='GN-list of input paths to un-optimized jar files for the current '
+ 'module. The optimized versions of their .class files will go into '
+ 'the output jar.')
+ parser.add_argument(
+ '--output-jar',
+ required=True,
+ help='Path to output jar file containing the module\'s optimized class '
+ 'files')
+ parser.add_argument(
+ '--is-base-module',
+ action='store_true',
+ help='Inidcates to extract class files for a base module')
+ options = parser.parse_args(args)
+ options.module_input_jars = build_utils.ParseGnList(options.module_input_jars)
+
+ # Read class names of the currently processed module.
+ classes = set()
+ for module_jar in options.module_input_jars:
+ with zipfile.ZipFile(module_jar) as zip_info:
+ for path in zip_info.namelist():
+ fully_qualified_name = _FullJavaNameFromClassFilePath(path)
+ if fully_qualified_name:
+ classes.add(fully_qualified_name)
+
+ # Parse the proguarding mapping to be able to map un-obfuscated to obfuscated
+ # names.
+ # Proguard mapping files have the following format:
+ #
+ # {un-obfuscated class name 1} -> {obfuscated class name 1}:
+ # {un-obfuscated member name 1} -> {obfuscated member name 1}
+ # ...
+ # {un-obfuscated class name 2} -> {obfuscated class name 2}:
+ # ...
+ # ...
+ obfuscation_map = {}
+ with open(options.proguard_mapping, 'r') as proguard_mapping_file:
+ for line in proguard_mapping_file:
+ # Skip indented lines since they map member names and not class names.
+ if line.startswith(' '):
+ continue
+ line = line.strip()
+ # Skip empty lines.
+ if not line:
+ continue
+ assert line.endswith(':')
+ full, obfuscated = line.strip(':').split(' -> ')
+ assert full
+ assert obfuscated
+ obfuscation_map[full] = obfuscated
+
+ # Collect the obfuscated names of classes, which should go into the currently
+ # processed module.
+ obfuscated_module_classes = set(
+ obfuscation_map[c] for c in classes if c in obfuscation_map)
+
+ # Collect horizontally merged classes to later make sure that those only go
+ # into the base module. Merging classes horizontally means that proguard took
+ # two classes that don't inherit from each other and merged them into one.
+ horiz_merged_classes = set()
+ obfuscated_classes = sorted(obfuscation_map.values())
+ prev_obfuscated_class = None
+ for obfuscated_class in obfuscated_classes:
+ if prev_obfuscated_class and obfuscated_class == prev_obfuscated_class:
+ horiz_merged_classes.add(obfuscated_class)
+ prev_obfuscated_class = obfuscated_class
+
+ # Move horizontally merged classes into the base module.
+ if options.is_base_module:
+ obfuscated_module_classes |= horiz_merged_classes
+ else:
+ obfuscated_module_classes -= horiz_merged_classes
+
+ # Extract module class files from proguarded jar and store them in a module
+ # split jar.
+ with zipfile.ZipFile(
+ os.path.abspath(options.output_jar), 'w',
+ zipfile.ZIP_DEFLATED) as output_jar:
+ with zipfile.ZipFile(os.path.abspath(options.proguarded_jar),
+ 'r') as proguarded_jar:
+ for obfuscated_class in obfuscated_module_classes:
+ class_path = obfuscated_class.replace('.', '/') + '.class'
+ class_file_content = proguarded_jar.read(class_path)
+ output_jar.writestr(class_path, class_file_content)
+ output_jar.writestr('META-INF/MANIFEST.MF', MANIFEST)
+
+ if options.depfile:
+ build_utils.WriteDepfile(
+ options.depfile, options.output_jar, options.module_input_jars +
+ [options.proguard_mapping, options.proguarded_jar], add_pydeps=False)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/chromium/build/android/gyp/generate_proguarded_module_jar.pydeps b/chromium/build/android/gyp/generate_proguarded_module_jar.pydeps
new file mode 100644
index 00000000000..6d52b4ec543
--- /dev/null
+++ b/chromium/build/android/gyp/generate_proguarded_module_jar.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/generate_proguarded_module_jar.pydeps build/android/gyp/generate_proguarded_module_jar.py
+../../gn_helpers.py
+generate_proguarded_module_jar.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/generate_resource_rewriter.py b/chromium/build/android/gyp/generate_resource_rewriter.py
index 82ddc21dc15..ba635a293d5 100755
--- a/chromium/build/android/gyp/generate_resource_rewriter.py
+++ b/chromium/build/android/gyp/generate_resource_rewriter.py
@@ -107,4 +107,3 @@ def main():
if __name__ == '__main__':
sys.exit(main())
-
diff --git a/chromium/build/android/gyp/ijar.pydeps b/chromium/build/android/gyp/ijar.pydeps
new file mode 100644
index 00000000000..ca10697c1f2
--- /dev/null
+++ b/chromium/build/android/gyp/ijar.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/ijar.pydeps build/android/gyp/ijar.py
+../../gn_helpers.py
+ijar.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/java_cpp_enum.py b/chromium/build/android/gyp/java_cpp_enum.py
index afb48430fa2..e737441005f 100755
--- a/chromium/build/android/gyp/java_cpp_enum.py
+++ b/chromium/build/android/gyp/java_cpp_enum.py
@@ -447,7 +447,7 @@ def DoMain(argv):
build_utils.AddToZipHermetic(srcjar, output_path, data=data)
if options.depfile:
- build_utils.WriteDepfile(options.depfile, options.srcjar)
+ build_utils.WriteDepfile(options.depfile, options.srcjar, add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/java_cpp_enum.pydeps b/chromium/build/android/gyp/java_cpp_enum.pydeps
new file mode 100644
index 00000000000..32c8de534db
--- /dev/null
+++ b/chromium/build/android/gyp/java_cpp_enum.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/java_cpp_enum.pydeps build/android/gyp/java_cpp_enum.py
+../../gn_helpers.py
+java_cpp_enum.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/java_google_api_keys.py b/chromium/build/android/gyp/java_google_api_keys.py
index f57e0b3a978..349821a8fce 100755
--- a/chromium/build/android/gyp/java_google_api_keys.py
+++ b/chromium/build/android/gyp/java_google_api_keys.py
@@ -121,4 +121,3 @@ def _DoMain(argv):
if __name__ == '__main__':
_DoMain(sys.argv[1:])
-
diff --git a/chromium/build/android/gyp/javac.py b/chromium/build/android/gyp/javac.py
index b5ae57a6d5a..0e1aad00922 100755
--- a/chromium/build/android/gyp/javac.py
+++ b/chromium/build/android/gyp/javac.py
@@ -96,6 +96,7 @@ ERRORPRONE_WARNINGS_TO_ERROR = [
'MissingFail',
'MissingOverride',
'NarrowingCompoundAssignment',
+ 'OrphanedFormatString',
'ParameterName',
'ParcelableCreator',
'ReferenceEquality',
@@ -248,7 +249,7 @@ def _CreateInfoFile(java_files, options, srcjar_files):
info_data[fully_qualified_name] = java_file
# Skip aidl srcjars since they don't indent code correctly.
source = srcjar_files.get(java_file, java_file)
- if source.endswith('_aidl.srcjar'):
+ if '_aidl.srcjar' in source:
continue
assert not options.chromium_code or len(class_names) == 1, (
'Chromium java files must only have one class: {}'.format(source))
@@ -309,7 +310,10 @@ def _OnStaleMd5(changes, options, javac_cmd, java_files, classpath_inputs,
extracted_files = build_utils.ExtractAll(
srcjar, path=java_dir, pattern='*.java')
for path in extracted_files:
- srcjar_files[path] = srcjar
+ # We want the path inside the srcjar so the viewer can have a tree
+ # structure.
+ srcjar_files[path] = '{}/{}'.format(
+ srcjar, os.path.relpath(path, java_dir))
jar_srcs = build_utils.FindInDirectory(java_dir, '*.java')
java_files.extend(jar_srcs)
if changed_paths:
@@ -596,7 +600,8 @@ def main(argv):
input_strings=javac_cmd + classpath,
output_paths=output_paths,
force=force,
- pass_changes=True)
+ pass_changes=True,
+ add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/javac.pydeps b/chromium/build/android/gyp/javac.pydeps
new file mode 100644
index 00000000000..a9d257b95f8
--- /dev/null
+++ b/chromium/build/android/gyp/javac.pydeps
@@ -0,0 +1,15 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/javac.pydeps build/android/gyp/javac.py
+../../../third_party/colorama/src/colorama/__init__.py
+../../../third_party/colorama/src/colorama/ansi.py
+../../../third_party/colorama/src/colorama/ansitowin32.py
+../../../third_party/colorama/src/colorama/initialise.py
+../../../third_party/colorama/src/colorama/win32.py
+../../../third_party/colorama/src/colorama/winterm.py
+../../gn_helpers.py
+jar.py
+javac.py
+util/__init__.py
+util/build_utils.py
+util/jar_info_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/jinja_template.py b/chromium/build/android/gyp/jinja_template.py
index 434d281099e..4d5c403dfe8 100755
--- a/chromium/build/android/gyp/jinja_template.py
+++ b/chromium/build/android/gyp/jinja_template.py
@@ -124,7 +124,8 @@ def main():
parser.add_argument('--variables', help='Variables to be made available in '
'the template processing environment, as a GYP list '
'(e.g. --variables "channel=beta mstone=39")', default='')
- build_utils.AddDepfileOption(parser)
+ parser.add_argument('--check-includes', action='store_true',
+ help='Enable inputs and includes checks.')
options = parser.parse_args()
inputs = build_utils.ParseGnList(options.inputs)
@@ -146,15 +147,13 @@ def main():
_ProcessFiles(processor, inputs, options.inputs_base_dir,
options.outputs_zip)
- if options.depfile:
- output = options.output or options.outputs_zip
+ if options.check_includes:
all_inputs = set(processor.GetLoadedTemplates())
all_inputs.difference_update(inputs)
all_inputs.difference_update(includes)
if all_inputs:
raise Exception('Found files not listed via --includes:\n' +
'\n'.join(sorted(all_inputs)))
- build_utils.WriteDepfile(options.depfile, output)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/jinja_template.pydeps b/chromium/build/android/gyp/jinja_template.pydeps
new file mode 100644
index 00000000000..a2a38176bfe
--- /dev/null
+++ b/chromium/build/android/gyp/jinja_template.pydeps
@@ -0,0 +1,41 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/jinja_template.pydeps build/android/gyp/jinja_template.py
+../../../third_party/catapult/devil/devil/__init__.py
+../../../third_party/catapult/devil/devil/android/__init__.py
+../../../third_party/catapult/devil/devil/android/constants/__init__.py
+../../../third_party/catapult/devil/devil/android/constants/chrome.py
+../../../third_party/catapult/devil/devil/android/sdk/__init__.py
+../../../third_party/catapult/devil/devil/android/sdk/keyevent.py
+../../../third_party/catapult/devil/devil/android/sdk/version_codes.py
+../../../third_party/catapult/devil/devil/constants/__init__.py
+../../../third_party/catapult/devil/devil/constants/exit_codes.py
+../../../third_party/jinja2/__init__.py
+../../../third_party/jinja2/_compat.py
+../../../third_party/jinja2/bccache.py
+../../../third_party/jinja2/compiler.py
+../../../third_party/jinja2/defaults.py
+../../../third_party/jinja2/environment.py
+../../../third_party/jinja2/exceptions.py
+../../../third_party/jinja2/filters.py
+../../../third_party/jinja2/idtracking.py
+../../../third_party/jinja2/lexer.py
+../../../third_party/jinja2/loaders.py
+../../../third_party/jinja2/nodes.py
+../../../third_party/jinja2/optimizer.py
+../../../third_party/jinja2/parser.py
+../../../third_party/jinja2/runtime.py
+../../../third_party/jinja2/tests.py
+../../../third_party/jinja2/utils.py
+../../../third_party/jinja2/visitor.py
+../../../third_party/markupsafe/__init__.py
+../../../third_party/markupsafe/_compat.py
+../../../third_party/markupsafe/_native.py
+../../gn_helpers.py
+../pylib/__init__.py
+../pylib/constants/__init__.py
+../pylib/constants/host_paths.py
+jinja_template.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+util/resource_utils.py
diff --git a/chromium/build/android/gyp/lint.pydeps b/chromium/build/android/gyp/lint.pydeps
new file mode 100644
index 00000000000..a8616e4d378
--- /dev/null
+++ b/chromium/build/android/gyp/lint.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/lint.pydeps build/android/gyp/lint.py
+../../gn_helpers.py
+lint.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/main_dex_list.py b/chromium/build/android/gyp/main_dex_list.py
index 9ccfea00ff9..24358590992 100755
--- a/chromium/build/android/gyp/main_dex_list.py
+++ b/chromium/build/android/gyp/main_dex_list.py
@@ -172,4 +172,3 @@ def _OnStaleMd5(proguard_cmd, main_dex_list_cmd, paths, main_dex_list_path,
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
-
diff --git a/chromium/build/android/gyp/main_dex_list.pydeps b/chromium/build/android/gyp/main_dex_list.pydeps
new file mode 100644
index 00000000000..8c482dfa523
--- /dev/null
+++ b/chromium/build/android/gyp/main_dex_list.pydeps
@@ -0,0 +1,8 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/main_dex_list.pydeps build/android/gyp/main_dex_list.py
+../../gn_helpers.py
+main_dex_list.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+util/proguard_util.py
diff --git a/chromium/build/android/gyp/merge_jar_info_files.py b/chromium/build/android/gyp/merge_jar_info_files.py
index 22a40a801bd..e6160f68469 100755
--- a/chromium/build/android/gyp/merge_jar_info_files.py
+++ b/chromium/build/android/gyp/merge_jar_info_files.py
@@ -61,7 +61,7 @@ def _MergeInfoFiles(output, jar_paths):
for path in zip_info.namelist():
fully_qualified_name = _FullJavaNameFromClassFilePath(path)
if fully_qualified_name:
- info_data[fully_qualified_name] = jar_path
+ info_data[fully_qualified_name] = '{}/{}'.format(jar_path, path)
jar_info_utils.WriteJarInfoFile(output, info_data)
diff --git a/chromium/build/android/gyp/merge_jar_info_files.pydeps b/chromium/build/android/gyp/merge_jar_info_files.pydeps
new file mode 100644
index 00000000000..710091c42fa
--- /dev/null
+++ b/chromium/build/android/gyp/merge_jar_info_files.pydeps
@@ -0,0 +1,8 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/merge_jar_info_files.pydeps build/android/gyp/merge_jar_info_files.py
+../../gn_helpers.py
+merge_jar_info_files.py
+util/__init__.py
+util/build_utils.py
+util/jar_info_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/merge_manifest.pydeps b/chromium/build/android/gyp/merge_manifest.pydeps
new file mode 100644
index 00000000000..37901962ce3
--- /dev/null
+++ b/chromium/build/android/gyp/merge_manifest.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/merge_manifest.pydeps build/android/gyp/merge_manifest.py
+../../gn_helpers.py
+merge_manifest.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
diff --git a/chromium/build/android/gyp/prepare_resources.py b/chromium/build/android/gyp/prepare_resources.py
index 6237c7db58d..ae7f53d0c30 100755
--- a/chromium/build/android/gyp/prepare_resources.py
+++ b/chromium/build/android/gyp/prepare_resources.py
@@ -297,7 +297,8 @@ def main(args):
input_paths=input_paths,
input_strings=input_strings,
output_paths=output_paths,
- depfile_deps=depfile_deps)
+ depfile_deps=depfile_deps,
+ add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/prepare_resources.pydeps b/chromium/build/android/gyp/prepare_resources.pydeps
new file mode 100644
index 00000000000..0e9ccfbe5ed
--- /dev/null
+++ b/chromium/build/android/gyp/prepare_resources.pydeps
@@ -0,0 +1,30 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/prepare_resources.pydeps build/android/gyp/prepare_resources.py
+../../../third_party/jinja2/__init__.py
+../../../third_party/jinja2/_compat.py
+../../../third_party/jinja2/bccache.py
+../../../third_party/jinja2/compiler.py
+../../../third_party/jinja2/defaults.py
+../../../third_party/jinja2/environment.py
+../../../third_party/jinja2/exceptions.py
+../../../third_party/jinja2/filters.py
+../../../third_party/jinja2/idtracking.py
+../../../third_party/jinja2/lexer.py
+../../../third_party/jinja2/loaders.py
+../../../third_party/jinja2/nodes.py
+../../../third_party/jinja2/optimizer.py
+../../../third_party/jinja2/parser.py
+../../../third_party/jinja2/runtime.py
+../../../third_party/jinja2/tests.py
+../../../third_party/jinja2/utils.py
+../../../third_party/jinja2/visitor.py
+../../../third_party/markupsafe/__init__.py
+../../../third_party/markupsafe/_compat.py
+../../../third_party/markupsafe/_native.py
+../../gn_helpers.py
+generate_v14_compatible_resources.py
+prepare_resources.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+util/resource_utils.py
diff --git a/chromium/build/android/gyp/proguard.py b/chromium/build/android/gyp/proguard.py
index 5a61968c85c..90a461ac365 100755
--- a/chromium/build/android/gyp/proguard.py
+++ b/chromium/build/android/gyp/proguard.py
@@ -35,13 +35,16 @@ def _RemoveMethodMappings(orig_path, out_fd):
for line in in_fd:
if line[:1] != ' ':
out_fd.write(line)
+ out_fd.flush()
def _ParseOptions(args):
parser = optparse.OptionParser()
build_utils.AddDepfileOption(parser)
parser.add_option('--proguard-path',
- help='Path to the proguard executable.')
+ help='Path to the proguard.jar to use.')
+ parser.add_option('--r8-path',
+ help='Path to the R8.jar to use.')
parser.add_option('--input-paths',
help='Paths to the .jar files proguard should run on.')
parser.add_option('--output-path', help='Path to the generated .jar file.')
@@ -53,9 +56,6 @@ def _ParseOptions(args):
'included by --proguard-configs, but that should '
'not actually be included.')
parser.add_option('--mapping', help='Path to proguard mapping to apply.')
- parser.add_option('--is-test', action='store_true',
- help='If true, extra proguard options for instrumentation tests will be '
- 'added.')
parser.add_option('--classpath', action='append',
help='Classpath for proguard.')
parser.add_option('--enable-dangerous-optimizations', action='store_true',
@@ -82,6 +82,29 @@ def _ParseOptions(args):
return options
+def _CreateR8Command(options):
+ # TODO: R8 needs -applymapping equivalent.
+ cmd = [
+ 'java', '-jar', options.r8_path,
+ '--no-desugaring',
+ '--classfile',
+ '--output', options.output_path,
+ '--pg-map-output', options.output_path + '.mapping',
+ ]
+
+ classpath = [
+ p for p in set(options.classpath) if p not in options.input_paths
+ ]
+ for lib in classpath:
+ cmd += ['--lib', lib]
+
+ for config_file in options.proguard_configs:
+ cmd += ['--pg-conf', config_file]
+
+ cmd += options.input_paths
+ return cmd
+
+
def main(args):
args = build_utils.ExpandFileArgs(args)
options = _ParseOptions(args)
@@ -92,36 +115,47 @@ def main(args):
proguard.config_exclusions(options.proguard_config_exclusions)
proguard.outjar(options.output_path)
- classpath = list(set(options.classpath))
+ # If a jar is part of input no need to include it as library jar.
+ classpath = [
+ p for p in set(options.classpath) if p not in options.input_paths
+ ]
proguard.libraryjars(classpath)
proguard.verbose(options.verbose)
if not options.enable_dangerous_optimizations:
proguard.disable_optimizations(_DANGEROUS_OPTIMIZATIONS)
- # Do not consider the temp file as an input since its name is random.
- input_paths = proguard.GetInputs()
-
- with tempfile.NamedTemporaryFile() as f:
- if options.mapping:
- input_paths.append(options.mapping)
- # Maintain only class name mappings in the .mapping file in order to work
- # around what appears to be a ProGuard bug in -applymapping:
- # method 'int closed()' is not being kept as 'a', but remapped to 'c'
- _RemoveMethodMappings(options.mapping, f)
- proguard.mapping(f.name)
-
- input_strings = proguard.build()
- if f.name in input_strings:
- input_strings[input_strings.index(f.name)] = '$M'
-
- build_utils.CallAndWriteDepfileIfStale(
- proguard.CheckOutput,
- options,
- input_paths=input_paths,
- input_strings=input_strings,
- output_paths=proguard.GetOutputs(),
- depfile_deps=proguard.GetDepfileDeps(),
- add_pydeps=False)
+ # TODO(agrieve): Remove proguard usages.
+ if options.r8_path:
+ cmd = _CreateR8Command(options)
+ build_utils.CheckOutput(cmd)
+ build_utils.WriteDepfile(options.depfile, options.output_path,
+ inputs=proguard.GetDepfileDeps(),
+ add_pydeps=False)
+ else:
+ # Do not consider the temp file as an input since its name is random.
+ input_paths = proguard.GetInputs()
+
+ with tempfile.NamedTemporaryFile() as f:
+ if options.mapping:
+ input_paths.append(options.mapping)
+ # Maintain only class name mappings in the .mapping file in order to
+ # work around what appears to be a ProGuard bug in -applymapping:
+ # method 'int close()' is not being kept as 'a', but remapped to 'c'
+ _RemoveMethodMappings(options.mapping, f)
+ proguard.mapping(f.name)
+
+ input_strings = proguard.build()
+ if f.name in input_strings:
+ input_strings[input_strings.index(f.name)] = '$M'
+
+ build_utils.CallAndWriteDepfileIfStale(
+ proguard.CheckOutput,
+ options,
+ input_paths=input_paths,
+ input_strings=input_strings,
+ output_paths=proguard.GetOutputs(),
+ depfile_deps=proguard.GetDepfileDeps(),
+ add_pydeps=False)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/proguard.pydeps b/chromium/build/android/gyp/proguard.pydeps
new file mode 100644
index 00000000000..6db3d7d0f78
--- /dev/null
+++ b/chromium/build/android/gyp/proguard.pydeps
@@ -0,0 +1,8 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/proguard.pydeps build/android/gyp/proguard.py
+../../gn_helpers.py
+proguard.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+util/proguard_util.py
diff --git a/chromium/build/android/gyp/util/__init__.py b/chromium/build/android/gyp/util/__init__.py
index 727e987e6b6..96196cffb27 100644
--- a/chromium/build/android/gyp/util/__init__.py
+++ b/chromium/build/android/gyp/util/__init__.py
@@ -1,4 +1,3 @@
# Copyright (c) 2012 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.
-
diff --git a/chromium/build/android/gyp/util/proguard_util.py b/chromium/build/android/gyp/util/proguard_util.py
index fd657e2aa71..8a6e785c891 100644
--- a/chromium/build/android/gyp/util/proguard_util.py
+++ b/chromium/build/android/gyp/util/proguard_util.py
@@ -165,7 +165,7 @@ class ProguardCmdBuilder(object):
# Quite useful for auditing proguard flags.
for config in sorted(self._configs):
out.write('#' * 80 + '\n')
- out.write(config + '\n')
+ out.write('# ' + config + '\n')
out.write('#' * 80 + '\n')
with open(config) as config_file:
contents = config_file.read().rstrip()
@@ -175,9 +175,9 @@ class ProguardCmdBuilder(object):
out.write(contents)
out.write('\n\n')
out.write('#' * 80 + '\n')
- out.write('Command-line\n')
+ out.write('# Command-line\n')
out.write('#' * 80 + '\n')
- out.write(' '.join(cmd) + '\n')
+ out.write('# ' + ' '.join(cmd) + '\n')
def CheckOutput(self):
cmd = self.build()
diff --git a/chromium/build/android/gyp/write_build_config.py b/chromium/build/android/gyp/write_build_config.py
index 734921c3334..a2387da778c 100755
--- a/chromium/build/android/gyp/write_build_config.py
+++ b/chromium/build/android/gyp/write_build_config.py
@@ -419,15 +419,15 @@ The list of all `deps_info['java_sources_file']` entries for all library
dependencies for this APK. Note: this is a list of files, where each file
contains a list of Java source files. This is used for JNI registration.
-* `deps_info['proguard_all_configs"]`:
+* `deps_info['proguard_all_configs']`:
The collection of all 'deps_info['proguard_configs']` values from this target
and all its dependencies.
-* `deps_info['proguard_all_extra_jars"]`:
+* `deps_info['proguard_classpath_jars']`:
The collection of all 'deps_info['extra_classpath_jars']` values from all
dependencies.
-* `deps_info['proguard_under_test_mapping"]`:
+* `deps_info['proguard_under_test_mapping']`:
Applicable to apks with proguard enabled that have an apk_under_test. This is
the path to the apk_under_test's output proguard .mapping file.
@@ -495,6 +495,10 @@ The classpath listing the jars used for annotation processors. I.e. sent as
The list of annotation processor main classes. I.e. sent as `-processor' when
invoking `javac`.
+## <a name="android_app_bundle">Target type `android_app_bundle`</a>:
+
+This type corresponds to an Android app bundle (`.aab` file).
+
--------------- END_MARKDOWN ---------------------------------------------------
"""
@@ -508,8 +512,8 @@ import xml.dom.minidom
from util import build_utils
# Types that should never be used as a dependency of another build config.
-_ROOT_TYPES = ('android_apk', 'java_binary',
- 'java_annotation_processor', 'junit_binary', 'resource_rewriter')
+_ROOT_TYPES = ('android_apk', 'java_binary', 'java_annotation_processor',
+ 'junit_binary', 'resource_rewriter', 'android_app_bundle')
# Types that should not allow code deps to pass through.
_RESOURCE_TYPES = ('android_assets', 'android_resources', 'system_java_library')
@@ -825,15 +829,22 @@ def main(argv):
parser.add_option('--shared-libraries-runtime-deps',
help='Path to file containing runtime deps for shared '
'libraries.')
+ parser.add_option('--native-libs',
+ action='append',
+ help='GN-list of native libraries for primary '
+ 'android-abi. Can be specified multiple times.',
+ default=[])
parser.add_option('--secondary-abi-shared-libraries-runtime-deps',
help='Path to file containing runtime deps for secondary '
'abi shared libraries.')
+ parser.add_option('--secondary-native-libs',
+ action='append',
+ help='GN-list of native libraries for secondary '
+ 'android-abi. Can be specified multiple times.',
+ default=[])
parser.add_option('--uncompress-shared-libraries', default=False,
action='store_true',
help='Whether to store native libraries uncompressed')
- parser.add_option('--extra-shared-libraries',
- help='GN-list of paths to extra native libraries stored '
- 'in the APK.')
# apk options
parser.add_option('--apk-path', help='Path to the target\'s apk output.')
parser.add_option('--incremental-apk-path',
@@ -846,7 +857,7 @@ def main(argv):
help='Path to the build config of the tested apk (for an instrumentation '
'test apk).')
parser.add_option('--proguard-enabled', action='store_true',
- help='Whether proguard is enabled for this apk.')
+ help='Whether proguard is enabled for this apk or bundle module.')
parser.add_option('--proguard-configs',
help='GN-list of proguard flag files to use in final apk.')
parser.add_option('--proguard-output-jar-path',
@@ -883,6 +894,8 @@ def main(argv):
required_options_map = {
'android_apk': ['build_config', 'dex_path', 'final_dex_path'] + \
jar_path_options,
+ 'android_app_bundle_module': ['build_config', 'dex_path',
+ 'final_dex_path'] + jar_path_options,
'android_assets': ['build_config'],
'android_resources': ['build_config', 'resources_zip'],
'dist_aar': ['build_config'],
@@ -894,6 +907,7 @@ def main(argv):
'junit_binary': ['build_config'],
'resource_rewriter': ['build_config'],
'system_java_library': ['build_config'],
+ 'android_app_bundle': ['build_config'],
}
required_options = required_options_map.get(options.type)
if not required_options:
@@ -902,14 +916,18 @@ def main(argv):
build_utils.CheckOptions(options, parser, required_options)
if options.apk_proto_resources:
- if options.type != 'android_apk':
+ if options.type != 'android_app_bundle_module':
raise Exception('--apk-proto-resources can only be used with '
- '--type=android_apk')
+ '--type=android_app_bundle_module')
+
+ is_apk_or_module_target = options.type in ('android_apk',
+ 'android_app_bundle_module')
if options.uncompress_shared_libraries:
- if options.type != 'android_apk':
+ if not is_apk_or_module_target:
raise Exception('--uncompressed-shared-libraries can only be used '
- 'with --type=android_apk')
+ 'with --type=android_apk or '
+ '--type=android_app_bundle_module')
if options.jar_path and options.supports_android and not options.dex_path:
raise Exception('java_library that supports Android requires a dex path.')
@@ -925,7 +943,7 @@ def main(argv):
is_java_target = options.type in (
'java_binary', 'junit_binary', 'java_annotation_processor',
'java_library', 'android_apk', 'dist_aar', 'dist_jar',
- 'system_java_library')
+ 'system_java_library', 'android_app_bundle_module')
deps = _DepsFromPaths(
build_utils.ParseGnList(options.deps_configs), options.type)
@@ -996,7 +1014,10 @@ def main(argv):
else:
gradle['dependent_java_projects'].append(c['path'])
- if options.type == 'android_apk':
+ # TODO(tiborg): Remove creation of JNI info for type group and java_library
+ # once we can generate the JNI registration based on APK / module targets as
+ # opposed to groups and libraries.
+ if is_apk_or_module_target or options.type in ('group', 'java_library'):
config['jni'] = {}
all_java_sources = [c['java_sources_file'] for c in all_library_deps
if 'java_sources_file' in c]
@@ -1115,7 +1136,7 @@ def main(argv):
if options.type in (
'android_resources', 'android_apk', 'junit_binary', 'resource_rewriter',
- 'dist_aar'):
+ 'dist_aar', 'android_app_bundle_module'):
config['resources'] = {}
config['resources']['dependency_zips'] = [
c['resources_zip'] for c in all_resources_deps]
@@ -1130,7 +1151,7 @@ def main(argv):
config['resources']['extra_package_names'] = extra_package_names
config['resources']['extra_r_text_files'] = extra_r_text_files
- if options.type == 'android_apk':
+ if is_apk_or_module_target:
deps_dex_files = [c['dex_path'] for c in all_library_deps]
if is_java_target:
@@ -1149,48 +1170,95 @@ def main(argv):
# The classpath used for bytecode-rewritting.
javac_full_classpath = [
c['unprocessed_jar_path'] for c in all_library_deps]
- # The classpath to use to run this target (or as an input to ProGuard).
- java_full_classpath = []
- if options.jar_path:
- java_full_classpath.append(options.jar_path)
- java_full_classpath.extend(c['jar_path'] for c in all_library_deps)
# Deps to add to the compile-time classpath (but not the runtime classpath).
# TODO(agrieve): Might be less confusing to fold these into bootclasspath.
- extra_jars = [c['unprocessed_jar_path']
+ javac_extra_jars = [c['unprocessed_jar_path']
+ for c in classpath_deps.Direct('java_library')]
+ extra_jars = [c['jar_path']
for c in classpath_deps.Direct('java_library')]
if options.extra_classpath_jars:
# These are .jars to add to javac classpath but not to runtime classpath.
+ javac_extra_jars.extend(
+ build_utils.ParseGnList(options.extra_classpath_jars))
extra_jars.extend(build_utils.ParseGnList(options.extra_classpath_jars))
- extra_jars = [p for p in extra_jars if p not in javac_classpath]
- javac_classpath.extend(extra_jars)
- javac_interface_classpath.extend(extra_jars)
- javac_full_interface_classpath.extend(
- p for p in extra_jars if p not in javac_full_classpath)
- javac_full_classpath.extend(
- p for p in extra_jars if p not in javac_full_classpath)
if extra_jars:
deps_info['extra_classpath_jars'] = extra_jars
+ javac_extra_jars = [p for p in javac_extra_jars if p not in javac_classpath]
+ javac_classpath.extend(javac_extra_jars)
+ javac_interface_classpath.extend(javac_extra_jars)
+ javac_full_interface_classpath.extend(
+ p for p in javac_extra_jars if p not in javac_full_classpath)
+ javac_full_classpath.extend(
+ p for p in javac_extra_jars if p not in javac_full_classpath)
+
+ if is_java_target or options.type == 'android_app_bundle':
+ # The classpath to use to run this target (or as an input to ProGuard).
+ java_full_classpath = []
+ if is_java_target and options.jar_path:
+ java_full_classpath.append(options.jar_path)
+ java_full_classpath.extend(c['jar_path'] for c in all_library_deps)
+ if options.type == 'android_app_bundle':
+ for d in deps.Direct('android_app_bundle_module'):
+ java_full_classpath.extend(
+ c for c in d.get('java_runtime_classpath', [])
+ if c not in java_full_classpath)
+
+ system_jars = [c['jar_path'] for c in system_library_deps]
+ system_interface_jars = [c['interface_jar_path'] for c in system_library_deps]
+ if system_library_deps:
+ config['android'] = {}
+ config['android']['sdk_interface_jars'] = system_interface_jars
+ config['android']['sdk_jars'] = system_jars
+ gradle['bootclasspath'] = system_jars
+
if options.proguard_configs:
deps_info['proguard_configs'] = (
build_utils.ParseGnList(options.proguard_configs))
- if options.type in ('android_apk', 'dist_aar', 'dist_jar'):
+ if options.type in ('android_apk', 'dist_aar',
+ 'dist_jar', 'android_app_bundle_module', 'android_app_bundle'):
all_configs = deps_info.get('proguard_configs', [])
- extra_jars = []
+ extra_jars = list()
for c in all_library_deps:
all_configs.extend(
p for p in c.get('proguard_configs', []) if p not in all_configs)
extra_jars.extend(
p for p in c.get('extra_classpath_jars', []) if p not in extra_jars)
+ if options.type == 'android_app_bundle':
+ for c in deps.Direct('android_app_bundle_module'):
+ all_configs.extend(
+ p for p in c.get('proguard_configs', []) if p not in all_configs)
deps_info['proguard_all_configs'] = all_configs
- deps_info['proguard_all_extra_jars'] = extra_jars
- deps_info['proguard_enabled'] = options.proguard_enabled
- if options.proguard_output_jar_path:
- deps_info['proguard_output_jar_path'] = options.proguard_output_jar_path
+ if options.type == 'android_app_bundle':
+ for d in deps.Direct('android_app_bundle_module'):
+ extra_jars.extend(
+ c for c in d.get('proguard_classpath_jars', [])
+ if c not in extra_jars)
+ deps_info['proguard_classpath_jars'] = extra_jars
+
+ if options.type == 'android_app_bundle':
+ deps_proguard_enabled = []
+ deps_proguard_disabled = []
+ for d in deps.Direct('android_app_bundle_module'):
+ if not d['java_runtime_classpath']:
+ # We don't care about modules that have no Java code for proguarding.
+ continue
+ if d['proguard_enabled']:
+ deps_proguard_enabled.append(d['name'])
+ else:
+ deps_proguard_disabled.append(d['name'])
+ if deps_proguard_enabled and deps_proguard_disabled:
+ raise Exception('Deps %s have proguard enabled while deps %s have '
+ 'proguard disabled' % (deps_proguard_enabled,
+ deps_proguard_disabled))
+ else:
+ deps_info['proguard_enabled'] = bool(options.proguard_enabled)
+ if options.proguard_output_jar_path:
+ deps_info['proguard_output_jar_path'] = options.proguard_output_jar_path
# The java code for an instrumentation test apk is assembled differently for
# ProGuard vs. non-ProGuard.
@@ -1215,7 +1283,7 @@ def main(argv):
# Mutating lists, so no need to explicitly re-assign to dict.
all_configs.extend(p for p in tested_apk_config['proguard_all_configs']
if p not in all_configs)
- extra_jars.extend(p for p in tested_apk_config['proguard_all_extra_jars']
+ extra_jars.extend(p for p in tested_apk_config['proguard_classpath_jars']
if p not in extra_jars)
tested_apk_config = GetDepConfig(options.tested_apk_config)
deps_info['proguard_under_test_mapping'] = (
@@ -1258,20 +1326,12 @@ def main(argv):
p for p in deps_dex_files if not p in tested_apk_deps_dex_files]
# Dependencies for the final dex file of an apk.
- if options.type == 'android_apk':
+ if is_apk_or_module_target:
config['final_dex'] = {}
dex_config = config['final_dex']
dex_config['dependency_dex_files'] = deps_dex_files
dex_config['path'] = options.final_dex_path
- system_jars = [c['jar_path'] for c in system_library_deps]
- system_interface_jars = [c['interface_jar_path'] for c in system_library_deps]
- if system_library_deps:
- config['android'] = {}
- config['android']['sdk_interface_jars'] = system_interface_jars
- config['android']['sdk_jars'] = system_jars
- gradle['bootclasspath'] = system_jars
-
if is_java_target:
config['javac']['bootclasspath'] = system_jars
config['javac']['classpath'] = javac_classpath
@@ -1285,9 +1345,9 @@ def main(argv):
deps_info['javac_full_classpath'] = javac_full_classpath
deps_info['javac_full_interface_classpath'] = javac_full_interface_classpath
- if options.type in (
- 'android_apk', 'dist_jar', 'java_binary', 'junit_binary'):
- deps_info['java_runtime_classpath'] = java_full_classpath
+ if options.type in ('android_apk', 'dist_jar', 'java_binary', 'junit_binary',
+ 'android_app_bundle_module', 'android_app_bundle'):
+ deps_info['java_runtime_classpath'] = java_full_classpath
if options.type in ('android_apk', 'dist_jar'):
all_interface_jars = []
@@ -1299,7 +1359,7 @@ def main(argv):
'all_interface_jars': all_interface_jars,
}
- if options.type == 'android_apk':
+ if is_apk_or_module_target:
manifest = AndroidManifest(options.android_manifest)
deps_info['package_name'] = manifest.GetPackageName()
if not options.tested_apk_config and manifest.GetInstrumentationElements():
@@ -1323,9 +1383,12 @@ def main(argv):
secondary_abi_runtime_deps_files)
secondary_abi_java_libraries_list = _CreateJavaLibrariesList(
secondary_abi_library_paths)
+ for gn_list in options.secondary_native_libs:
+ secondary_abi_library_paths.extend(build_utils.ParseGnList(gn_list))
- extra_shared_libraries = build_utils.ParseGnList(
- options.extra_shared_libraries)
+ extra_shared_libraries = []
+ for gn_list in options.native_libs:
+ extra_shared_libraries.extend(build_utils.ParseGnList(gn_list))
all_inputs.extend(runtime_deps_files)
config['native'] = {
diff --git a/chromium/build/android/gyp/write_build_config.pydeps b/chromium/build/android/gyp/write_build_config.pydeps
new file mode 100644
index 00000000000..e317c47cae4
--- /dev/null
+++ b/chromium/build/android/gyp/write_build_config.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/write_build_config.pydeps build/android/gyp/write_build_config.py
+../../gn_helpers.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+write_build_config.py
diff --git a/chromium/build/android/gyp/write_ordered_libraries.py b/chromium/build/android/gyp/write_ordered_libraries.py
index e3d87c16bb0..92c82bb4c8c 100755
--- a/chromium/build/android/gyp/write_ordered_libraries.py
+++ b/chromium/build/android/gyp/write_ordered_libraries.py
@@ -109,10 +109,9 @@ def main():
only_if_changed=True)
if options.depfile:
- build_utils.WriteDepfile(options.depfile, options.output, libraries)
+ build_utils.WriteDepfile(options.depfile, options.output, libraries,
+ add_pydeps=False)
if __name__ == '__main__':
sys.exit(main())
-
-
diff --git a/chromium/build/android/gyp/write_ordered_libraries.pydeps b/chromium/build/android/gyp/write_ordered_libraries.pydeps
new file mode 100644
index 00000000000..c2ed1fee36e
--- /dev/null
+++ b/chromium/build/android/gyp/write_ordered_libraries.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/write_ordered_libraries.pydeps build/android/gyp/write_ordered_libraries.py
+../../gn_helpers.py
+util/__init__.py
+util/build_utils.py
+util/md5_check.py
+write_ordered_libraries.py
diff --git a/chromium/build/android/incremental_install/__init__.py b/chromium/build/android/incremental_install/__init__.py
index 1aaf0e179ff..50b23dff631 100644
--- a/chromium/build/android/incremental_install/__init__.py
+++ b/chromium/build/android/incremental_install/__init__.py
@@ -1,4 +1,3 @@
# 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.
-
diff --git a/chromium/build/android/incremental_install/generate_android_manifest.pydeps b/chromium/build/android/incremental_install/generate_android_manifest.pydeps
new file mode 100644
index 00000000000..de92fafa9bb
--- /dev/null
+++ b/chromium/build/android/incremental_install/generate_android_manifest.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/incremental_install --output build/android/incremental_install/generate_android_manifest.pydeps build/android/incremental_install/generate_android_manifest.py
+../../gn_helpers.py
+../gyp/util/__init__.py
+../gyp/util/build_utils.py
+../gyp/util/md5_check.py
+generate_android_manifest.py
diff --git a/chromium/build/android/incremental_install/write_installer_json.py b/chromium/build/android/incremental_install/write_installer_json.py
index b7e4e773adb..75bd6d1aab7 100755
--- a/chromium/build/android/incremental_install/write_installer_json.py
+++ b/chromium/build/android/incremental_install/write_installer_json.py
@@ -19,7 +19,6 @@ from util import build_utils
def _ParseArgs(args):
args = build_utils.ExpandFileArgs(args)
parser = argparse.ArgumentParser()
- build_utils.AddDepfileOption(parser)
parser.add_argument('--output-path',
help='Output path for .json file.',
required=True)
@@ -76,9 +75,6 @@ def main(args):
with build_utils.AtomicOutput(options.output_path) as f:
json.dump(data, f, indent=2, sort_keys=True)
- if options.depfile:
- build_utils.WriteDepfile(options.depfile, options.output_path)
-
if __name__ == '__main__':
main(sys.argv[1:])
diff --git a/chromium/build/android/incremental_install/write_installer_json.pydeps b/chromium/build/android/incremental_install/write_installer_json.pydeps
new file mode 100644
index 00000000000..851e6c5bd1b
--- /dev/null
+++ b/chromium/build/android/incremental_install/write_installer_json.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build/android/incremental_install --output build/android/incremental_install/write_installer_json.pydeps build/android/incremental_install/write_installer_json.py
+../../gn_helpers.py
+../gyp/util/__init__.py
+../gyp/util/build_utils.py
+../gyp/util/md5_check.py
+write_installer_json.py
diff --git a/chromium/build/android/lighttpd_server.py b/chromium/build/android/lighttpd_server.py
index 89a828ab54a..c77d740d66a 100755
--- a/chromium/build/android/lighttpd_server.py
+++ b/chromium/build/android/lighttpd_server.py
@@ -104,7 +104,7 @@ class LighttpdServer(object):
break
self.process.close()
- if self.fixed_port or not 'in use' in server_error:
+ if self.fixed_port or 'in use' not in server_error:
print 'Client error:', client_error
print 'Server error:', server_error
return False
diff --git a/chromium/build/android/lint/suppressions.xml b/chromium/build/android/lint/suppressions.xml
index 6e5562a5a70..c4b132f5ea3 100644
--- a/chromium/build/android/lint/suppressions.xml
+++ b/chromium/build/android/lint/suppressions.xml
@@ -333,10 +333,6 @@ Still reading?
<!-- 2 resource sets used by clank widgets for each channel -->
<ignore regexp="The resource `R.string.bookmark_widget_title.*` appears to be unused"/>
<ignore regexp="The resource `R.string.search_widget_title.*` appears to be unused"/>
- <!-- 3 Download location strings checked in before M68 deadline -->
- <!-- TODO(xingliu): Remove these. see crbug.com/840464. -->
- <ignore regexp="The resource `R.string.download_location_not_enough_space_sd_card_full` appears to be unused"/>
- <ignore regexp="The resource `R.string.download_location_notification_retry*` appears to be unused"/>
<!-- Endnote: Please specify number of suppressions when adding more -->
</issue>
<issue id="UseCompoundDrawables">
diff --git a/chromium/build/android/method_count.py b/chromium/build/android/method_count.py
index 68823e15482..490887adbca 100755
--- a/chromium/build/android/method_count.py
+++ b/chromium/build/android/method_count.py
@@ -114,4 +114,3 @@ def main():
if __name__ == '__main__':
sys.exit(main())
-
diff --git a/chromium/build/android/pylib/android/__init__.py b/chromium/build/android/pylib/android/__init__.py
index 7a90b532c39..a67c3501b20 100644
--- a/chromium/build/android/pylib/android/__init__.py
+++ b/chromium/build/android/pylib/android/__init__.py
@@ -1,4 +1,3 @@
# Copyright (c) 2016 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.
-
diff --git a/chromium/build/android/pylib/base/__init__.py b/chromium/build/android/pylib/base/__init__.py
index 727e987e6b6..96196cffb27 100644
--- a/chromium/build/android/pylib/base/__init__.py
+++ b/chromium/build/android/pylib/base/__init__.py
@@ -1,4 +1,3 @@
# Copyright (c) 2012 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.
-
diff --git a/chromium/build/android/pylib/base/base_test_result.py b/chromium/build/android/pylib/base/base_test_result.py
index af9f68f8e53..a5535322965 100644
--- a/chromium/build/android/pylib/base/base_test_result.py
+++ b/chromium/build/android/pylib/base/base_test_result.py
@@ -260,4 +260,3 @@ class TestRunResults(object):
def DidRunPass(self):
"""Return whether the test run was successful."""
return not self.GetNotPass() - self.GetSkip()
-
diff --git a/chromium/build/android/pylib/base/test_exception.py b/chromium/build/android/pylib/base/test_exception.py
index f00f0d0ee85..c98d2cb73eb 100644
--- a/chromium/build/android/pylib/base/test_exception.py
+++ b/chromium/build/android/pylib/base/test_exception.py
@@ -6,4 +6,3 @@
class TestException(Exception):
"""Base class for exceptions thrown by the test runner."""
pass
-
diff --git a/chromium/build/android/pylib/base/test_instance.py b/chromium/build/android/pylib/base/test_instance.py
index cdf678f2d28..f0ff83019bc 100644
--- a/chromium/build/android/pylib/base/test_instance.py
+++ b/chromium/build/android/pylib/base/test_instance.py
@@ -32,4 +32,3 @@ class TestInstance(object):
def __exit__(self, _exc_type, _exc_val, _exc_tb):
self.TearDown()
-
diff --git a/chromium/build/android/pylib/base/test_run.py b/chromium/build/android/pylib/base/test_run.py
index 9b16f890f69..59e595d926b 100644
--- a/chromium/build/android/pylib/base/test_run.py
+++ b/chromium/build/android/pylib/base/test_run.py
@@ -41,4 +41,3 @@ class TestRun(object):
def __exit__(self, exc_type, exc_val, exc_tb):
self.TearDown()
-
diff --git a/chromium/build/android/pylib/base/test_run_factory.py b/chromium/build/android/pylib/base/test_run_factory.py
index 1a2872819d9..1f63a059c98 100644
--- a/chromium/build/android/pylib/base/test_run_factory.py
+++ b/chromium/build/android/pylib/base/test_run_factory.py
@@ -54,4 +54,3 @@ def CreateTestRun(args, env, test_instance, error_func):
error_func('Unable to create test run for %s tests in %s environment'
% (str(test_instance), str(env)))
-
diff --git a/chromium/build/android/pylib/base/test_server.py b/chromium/build/android/pylib/base/test_server.py
index 085a51e9bae..763e1212c36 100644
--- a/chromium/build/android/pylib/base/test_server.py
+++ b/chromium/build/android/pylib/base/test_server.py
@@ -16,4 +16,3 @@ class TestServer(object):
def TearDown(self):
raise NotImplementedError
-
diff --git a/chromium/build/android/pylib/constants/__init__.py b/chromium/build/android/pylib/constants/__init__.py
index 2101b9c1ca1..cf6ca113390 100644
--- a/chromium/build/android/pylib/constants/__init__.py
+++ b/chromium/build/android/pylib/constants/__init__.py
@@ -104,8 +104,6 @@ ANDROID_SDK_TOOLS = os.path.join(ANDROID_SDK_ROOT,
ANDROID_NDK_ROOT = os.path.join(DIR_SOURCE_ROOT,
'third_party', 'android_ndk')
-PROGUARD_ROOT = os.path.join(DIR_SOURCE_ROOT, 'third_party', 'proguard')
-
BAD_DEVICES_JSON = os.path.join(DIR_SOURCE_ROOT,
os.environ.get('CHROMIUM_OUT_DIR', 'out'),
'bad_devices.json')
diff --git a/chromium/build/android/pylib/gtest/__init__.py b/chromium/build/android/pylib/gtest/__init__.py
index 727e987e6b6..96196cffb27 100644
--- a/chromium/build/android/pylib/gtest/__init__.py
+++ b/chromium/build/android/pylib/gtest/__init__.py
@@ -1,4 +1,3 @@
# Copyright (c) 2012 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.
-
diff --git a/chromium/build/android/pylib/gtest/gtest_test_instance.py b/chromium/build/android/pylib/gtest/gtest_test_instance.py
index d93edc65070..cd8ddbc3921 100644
--- a/chromium/build/android/pylib/gtest/gtest_test_instance.py
+++ b/chromium/build/android/pylib/gtest/gtest_test_instance.py
@@ -533,7 +533,9 @@ class GtestTestInstance(test_instance.TestInstance):
disabled_filter_items = []
if disabled_prefixes is None:
- disabled_prefixes = ['FAILS_', 'PRE_', 'MANUAL_']
+ disabled_prefixes = ['FAILS_', 'PRE_']
+ if '--run-manual' not in self._flags:
+ disabled_prefixes += ['MANUAL_']
if not self._run_disabled:
disabled_prefixes += ['DISABLED_', 'FLAKY_']
@@ -555,4 +557,3 @@ class GtestTestInstance(test_instance.TestInstance):
def TearDown(self):
"""Do nothing."""
pass
-
diff --git a/chromium/build/android/pylib/gtest/gtest_test_instance_test.py b/chromium/build/android/pylib/gtest/gtest_test_instance_test.py
index 3466924a0d9..a34ab84c7dd 100755
--- a/chromium/build/android/pylib/gtest/gtest_test_instance_test.py
+++ b/chromium/build/android/pylib/gtest/gtest_test_instance_test.py
@@ -260,4 +260,3 @@ class GtestTestInstanceTests(unittest.TestCase):
if __name__ == '__main__':
unittest.main(verbosity=2)
-
diff --git a/chromium/build/android/pylib/instrumentation/__init__.py b/chromium/build/android/pylib/instrumentation/__init__.py
index 727e987e6b6..96196cffb27 100644
--- a/chromium/build/android/pylib/instrumentation/__init__.py
+++ b/chromium/build/android/pylib/instrumentation/__init__.py
@@ -1,4 +1,3 @@
# Copyright (c) 2012 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.
-
diff --git a/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py b/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py
index 452b259849c..809fce60105 100644
--- a/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py
+++ b/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py
@@ -568,15 +568,15 @@ class InstrumentationTestInstance(test_instance.TestInstance):
self._test_package = self._test_apk.GetPackageName()
all_instrumentations = self._test_apk.GetAllInstrumentations()
all_junit3_runner_classes = [
- x for x in all_instrumentations if ('0xffffffff' not in x.get(
- 'chromium-junit4', ''))]
- all_junit4_test_runner_classes = [
x for x in all_instrumentations if ('0xffffffff' in x.get(
- 'chromium-junit4', ''))]
+ 'chromium-junit3', ''))]
+ all_junit4_runner_classes = [
+ x for x in all_instrumentations if ('0xffffffff' not in x.get(
+ 'chromium-junit3', ''))]
if len(all_junit3_runner_classes) > 1:
logging.warning('This test apk has more than one JUnit3 instrumentation')
- if len(all_junit4_test_runner_classes) > 1:
+ if len(all_junit4_runner_classes) > 1:
logging.warning('This test apk has more than one JUnit4 instrumentation')
self._junit3_runner_class = (
@@ -584,8 +584,8 @@ class InstrumentationTestInstance(test_instance.TestInstance):
if all_junit3_runner_classes else self.test_apk.GetInstrumentationName())
self._junit4_runner_class = (
- all_junit4_test_runner_classes[0]['android:name']
- if all_junit4_test_runner_classes else None)
+ all_junit4_runner_classes[0]['android:name']
+ if all_junit4_runner_classes else None)
if self._junit4_runner_class:
if self._test_apk_incremental_install_json:
diff --git a/chromium/build/android/pylib/junit/__init__.py b/chromium/build/android/pylib/junit/__init__.py
index 5cac026153c..4d6aabb953d 100644
--- a/chromium/build/android/pylib/junit/__init__.py
+++ b/chromium/build/android/pylib/junit/__init__.py
@@ -1,4 +1,3 @@
# Copyright 2014 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.
-
diff --git a/chromium/build/android/pylib/linker/__init__.py b/chromium/build/android/pylib/linker/__init__.py
index af994371233..9228df89b0e 100644
--- a/chromium/build/android/pylib/linker/__init__.py
+++ b/chromium/build/android/pylib/linker/__init__.py
@@ -1,4 +1,3 @@
# 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.
-
diff --git a/chromium/build/android/pylib/linker/linker_test_instance.py b/chromium/build/android/pylib/linker/linker_test_instance.py
index 1de3e17f1df..6ace7a3633c 100644
--- a/chromium/build/android/pylib/linker/linker_test_instance.py
+++ b/chromium/build/android/pylib/linker/linker_test_instance.py
@@ -48,4 +48,3 @@ class LinkerTestInstance(test_instance.TestInstance):
def TestType(self):
return 'linker'
-
diff --git a/chromium/build/android/pylib/local/device/local_device_gtest_run.py b/chromium/build/android/pylib/local/device/local_device_gtest_run.py
index 21e9fe85121..47348834c99 100644
--- a/chromium/build/android/pylib/local/device/local_device_gtest_run.py
+++ b/chromium/build/android/pylib/local/device/local_device_gtest_run.py
@@ -152,6 +152,7 @@ class _ApkDelegate(object):
extras[gtest_test_instance.EXTRA_SHARD_NANO_TIMEOUT] = int(
kwargs['timeout'] * _SECONDS_TO_NANOS)
+ # pylint: disable=redefined-variable-type
command_line_file = _NullContextManager()
if flags:
if len(flags) > _MAX_INLINE_FLAGS_LENGTH:
@@ -169,6 +170,7 @@ class _ApkDelegate(object):
extras[_EXTRA_TEST_LIST] = test_list_file.name
else:
extras[_EXTRA_TEST] = test[0]
+ # pylint: enable=redefined-variable-type
stdout_file = device_temp_file.DeviceTempFile(
device.adb, dir=device.GetExternalStoragePath(), suffix='.gtest_out')
@@ -283,11 +285,13 @@ class LocalDeviceGtestRun(local_device_test_run.LocalDeviceTestRun):
assert isinstance(test_instance, gtest_test_instance.GtestTestInstance)
super(LocalDeviceGtestRun, self).__init__(env, test_instance)
+ # pylint: disable=redefined-variable-type
if self._test_instance.apk:
self._delegate = _ApkDelegate(self._test_instance, env.tool)
elif self._test_instance.exe_dist_dir:
self._delegate = _ExeDelegate(self, self._test_instance.exe_dist_dir,
self._env.tool)
+ # pylint: enable=redefined-variable-type
self._crashes = set()
self._servers = collections.defaultdict(list)
diff --git a/chromium/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/chromium/build/android/pylib/local/device/local_device_instrumentation_test_run.py
index 40b857d5fbf..de7ed933b5d 100644
--- a/chromium/build/android/pylib/local/device/local_device_instrumentation_test_run.py
+++ b/chromium/build/android/pylib/local/device/local_device_instrumentation_test_run.py
@@ -153,7 +153,11 @@ class LocalDeviceInstrumentationTestRun(
self._replace_package_contextmanager = system_app.ReplaceSystemApp(
dev, self._test_instance.replace_system_package.package,
self._test_instance.replace_system_package.replacement_apk)
+ # Pylint is not smart enough to realize that this field has
+ # an __enter__ method, and will complain loudly.
+ # pylint: disable=no-member
self._replace_package_contextmanager.__enter__()
+ # pylint: enable=no-member
steps.append(replace_package)
@@ -308,12 +312,15 @@ class LocalDeviceInstrumentationTestRun(
valgrind_tools.SetChromeTimeoutScale(dev, None)
if self._replace_package_contextmanager:
+ # See pylint-related commend above with __enter__()
+ # pylint: disable=no-member
self._replace_package_contextmanager.__exit__(*sys.exc_info())
+ # pylint: enable=no-member
self._env.parallel_devices.pMap(individual_device_tear_down)
def _CreateFlagChangerIfNeeded(self, device):
- if not str(device) in self._flag_changers:
+ if str(device) not in self._flag_changers:
self._flag_changers[str(device)] = flag_changer.FlagChanger(
device, "test-cmdline-file")
diff --git a/chromium/build/android/pylib/local/device/local_device_test_run.py b/chromium/build/android/pylib/local/device/local_device_test_run.py
index 90e6b674cb0..00d715b3ade 100644
--- a/chromium/build/android/pylib/local/device/local_device_test_run.py
+++ b/chromium/build/android/pylib/local/device/local_device_test_run.py
@@ -220,7 +220,7 @@ class LocalDeviceTestRun(test_run.TestRun):
if hash(self._GetUniqueTestName(t)) % total_shards == shard_index]
def GetTool(self, device):
- if not str(device) in self._tools:
+ if str(device) not in self._tools:
self._tools[str(device)] = valgrind_tools.CreateTool(
self._env.tool, device)
return self._tools[str(device)]
diff --git a/chromium/build/android/pylib/local/local_test_server_spawner.py b/chromium/build/android/pylib/local/local_test_server_spawner.py
index 8e416fac5d0..6cd282e3a45 100644
--- a/chromium/build/android/pylib/local/local_test_server_spawner.py
+++ b/chromium/build/android/pylib/local/local_test_server_spawner.py
@@ -98,4 +98,3 @@ class LocalTestServerSpawner(test_server.TestServer):
self.Reset()
self._spawning_server.Stop()
forwarder.Forwarder.UnmapDevicePort(self.port, self._device)
-
diff --git a/chromium/build/android/pylib/results/flakiness_dashboard/json_results_generator.py b/chromium/build/android/pylib/results/flakiness_dashboard/json_results_generator.py
index 9693977e6bf..5e5f83f2a27 100644
--- a/chromium/build/android/pylib/results/flakiness_dashboard/json_results_generator.py
+++ b/chromium/build/android/pylib/results/flakiness_dashboard/json_results_generator.py
@@ -380,6 +380,7 @@ class JSONResultsGeneratorBase(object):
urllib2.quote(self._test_type),
urllib2.quote(self._master_name)))
+ # pylint: disable=redefined-variable-type
try:
# FIXME: We should talk to the network via a Host object.
results_file = urllib2.urlopen(results_file_url)
@@ -391,6 +392,7 @@ class JSONResultsGeneratorBase(object):
error = http_error
except urllib2.URLError, url_error:
error = url_error
+ # pylint: enable=redefined-variable-type
if old_results:
# Strip the prefix and suffix so we can get the actual JSON object.
diff --git a/chromium/build/android/pylib/results/json_results.py b/chromium/build/android/pylib/results/json_results.py
index 1243691b7f8..3f87b46d8c5 100644
--- a/chromium/build/android/pylib/results/json_results.py
+++ b/chromium/build/android/pylib/results/json_results.py
@@ -175,4 +175,3 @@ def ParseResultsFromJson(json_results):
duration=tr['elapsed_time_ms'])
for tr in test_runs])
return results_list
-
diff --git a/chromium/build/android/pylib/results/json_results_test.py b/chromium/build/android/pylib/results/json_results_test.py
index 276171353f4..e8b983b56ed 100755
--- a/chromium/build/android/pylib/results/json_results_test.py
+++ b/chromium/build/android/pylib/results/json_results_test.py
@@ -178,4 +178,3 @@ class JsonResultsTest(unittest.TestCase):
if __name__ == '__main__':
unittest.main(verbosity=2)
-
diff --git a/chromium/build/android/pylib/results/presentation/test_results_presentation.py b/chromium/build/android/pylib/results/presentation/test_results_presentation.py
index eaae68f85b7..82d6c884700 100755
--- a/chromium/build/android/pylib/results/presentation/test_results_presentation.py
+++ b/chromium/build/android/pylib/results/presentation/test_results_presentation.py
@@ -268,6 +268,7 @@ def create_suite_table(results_dict):
def feedback_url(result_details_link):
+ # pylint: disable=redefined-variable-type
url_args = [
('labels', 'Pri-2,Type-Bug,Restrict-View-Google'),
('summary', 'Result Details Feedback:'),
@@ -276,6 +277,7 @@ def feedback_url(result_details_link):
if result_details_link:
url_args.append(('comment', 'Please check out: %s' % result_details_link))
url_args = urllib.urlencode(url_args)
+ # pylint: enable=redefined-variable-type
return 'https://bugs.chromium.org/p/chromium/issues/entry?%s' % url_args
@@ -370,6 +372,7 @@ def ui_screenshot_set(json_path):
# This will be reported as an error by result_details, no need to duplicate.
return None
ui_screenshots = []
+ # pylint: disable=too-many-nested-blocks
for testsuite_run in json_object['per_iteration_data']:
for _, test_runs in testsuite_run.iteritems():
for test_run in test_runs:
@@ -388,6 +391,7 @@ def ui_screenshot_set(json_path):
test_screenshots = json.loads(
screenshot_string)
ui_screenshots.extend(test_screenshots)
+ # pylint: enable=too-many-nested-blocks
if ui_screenshots:
return json.dumps(ui_screenshots)
diff --git a/chromium/build/android/pylib/symbols/deobfuscator.py b/chromium/build/android/pylib/symbols/deobfuscator.py
index 9d4f5fdfb4b..ac4ff7e4b4b 100644
--- a/chromium/build/android/pylib/symbols/deobfuscator.py
+++ b/chromium/build/android/pylib/symbols/deobfuscator.py
@@ -25,6 +25,8 @@ class Deobfuscator(object):
cmd = [script_path, mapping_path]
# Allow only one thread to call TransformLines() at a time.
self._lock = threading.Lock()
+ # Ensure that only one thread attempts to kill self._proc in Close().
+ self._close_lock = threading.Lock()
self._closed_called = False
# Assign to None so that attribute exists if Popen() throws.
self._proc = None
@@ -114,8 +116,11 @@ class Deobfuscator(object):
return lines
def Close(self):
- self._closed_called = True
- if not self.IsClosed():
+ with self._close_lock:
+ needs_closing = not self.IsClosed()
+ self._closed_called = True
+
+ if needs_closing:
self._proc.stdin.close()
self._proc.kill()
self._proc.wait()
diff --git a/chromium/build/android/pylib/symbols/symbol_utils.py b/chromium/build/android/pylib/symbols/symbol_utils.py
new file mode 100644
index 00000000000..e4e3faac803
--- /dev/null
+++ b/chromium/build/android/pylib/symbols/symbol_utils.py
@@ -0,0 +1,812 @@
+# Copyright 2018 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.
+
+import bisect
+import collections
+import logging
+import os
+import re
+
+from pylib.constants import host_paths
+from pylib.symbols import elf_symbolizer
+
+
+def _AndroidAbiToCpuArch(android_abi):
+ """Return the Chromium CPU architecture name for a given Android ABI."""
+ _ARCH_MAP = {
+ 'armeabi': 'arm',
+ 'armeabi-v7a': 'arm',
+ 'arm64-v8a': 'arm64',
+ 'x86_64': 'x64',
+ }
+ return _ARCH_MAP.get(android_abi, android_abi)
+
+
+def _HexAddressRegexpFor(android_abi):
+ """Return a regexp matching hexadecimal addresses for a given Android ABI."""
+ if android_abi in ['x86_64', 'arm64-v8a', 'mips64']:
+ width = 16
+ else:
+ width = 8
+ return '[0-9a-f]{%d}' % width
+
+
+class HostLibraryFinder(object):
+ """Translate device library path to matching host unstripped library path.
+
+ Usage is the following:
+ 1) Create instance.
+ 2) Call AddSearchDir() once or more times to add host directory path to
+ look for unstripped native libraries.
+ 3) Call Find(device_libpath) repeatedly to translate a device-specific
+ library path into the corresponding host path to the unstripped
+ version.
+ """
+ def __init__(self):
+ """Initialize instance."""
+ self._search_dirs = []
+ self._lib_map = {} # Map of library name to host file paths.
+
+ def AddSearchDir(self, lib_dir):
+ """Add a directory to the search path for host native shared libraries.
+
+ Args:
+ lib_dir: host path containing native libraries.
+ """
+ if not os.path.exists(lib_dir):
+ logging.warning('Ignoring missing host library directory: %s', lib_dir)
+ return
+ if not os.path.isdir(lib_dir):
+ logging.warning('Ignoring invalid host library directory: %s', lib_dir)
+ return
+ self._search_dirs.append(lib_dir)
+ self._lib_map = {} # Reset the map.
+
+ def Find(self, device_libpath):
+ """Find the host file path matching a specific device library path.
+
+ Args:
+ device_libpath: device-specific file path to library or executable.
+ Returns:
+ host file path to the unstripped version of the library, or None.
+ """
+ host_lib_path = None
+ lib_name = os.path.basename(device_libpath)
+ host_lib_path = self._lib_map.get(lib_name)
+ if not host_lib_path:
+ for search_dir in self._search_dirs:
+ lib_path = os.path.join(search_dir, lib_name)
+ if os.path.exists(lib_path):
+ host_lib_path = lib_path
+ break
+
+ if not host_lib_path:
+ logging.debug('Could not find host library for: %s', lib_name)
+ self._lib_map[lib_name] = host_lib_path
+
+ return host_lib_path
+
+
+
+class SymbolResolver(object):
+ """A base class for objets that can symbolize library (path, offset)
+ pairs into symbol information strings. Usage is the following:
+
+ 1) Create new instance (by calling the constructor of a derived
+ class, since this is only the base one).
+
+ 2) Call SetAndroidAbi() before any call to FindSymbolInfo() in order
+ to set the Android CPU ABI used for symbolization.
+
+ 3) Before the first call to FindSymbolInfo(), one can call
+ AddLibraryOffset(), or AddLibraryOffsets() to record a set of offsets
+ that you will want to symbolize later through FindSymbolInfo(). Doing
+ so allows some SymbolResolver derived classes to work faster (e.g. the
+ one that invokes the 'addr2line' program, since the latter works faster
+ if the offsets provided as inputs are sorted in increasing order).
+
+ 3) Call FindSymbolInfo(path, offset) to return the corresponding
+ symbol information string, or None if this doesn't correspond
+ to anything the instance can handle.
+
+ Note that whether the path is specific to the device or to the
+ host depends on the derived class implementation.
+ """
+ def __init__(self):
+ self._android_abi = None
+ self._lib_offsets_map = collections.defaultdict(set)
+
+ def SetAndroidAbi(self, android_abi):
+ """Set the Android ABI value for this instance.
+
+ Calling this function before FindSymbolInfo() is required by some
+ derived class implementations.
+
+ Args:
+ android_abi: Native Android CPU ABI name (e.g. 'armeabi-v7a').
+ Raises:
+ Exception if the ABI was already set with a different value.
+ """
+ if self._android_abi and self._android_abi != android_abi:
+ raise Exception('Cannot reset Android ABI to new value %s, already set '
+ 'to %s' % (android_abi, self._android_abi))
+
+ self._android_abi = android_abi
+
+ def AddLibraryOffset(self, lib_path, offset):
+ """Associate a single offset to a given device library.
+
+ This must be called before FindSymbolInfo(), otherwise its input arguments
+ will be ignored.
+
+ Args:
+ lib_path: A library path.
+ offset: An integer offset within the corresponding library that will be
+ symbolized by future calls to FindSymbolInfo.
+ """
+ self._lib_offsets_map[lib_path].add(offset)
+
+ def AddLibraryOffsets(self, lib_path, lib_offsets):
+ """Associate a set of wanted offsets to a given device library.
+
+ This must be called before FindSymbolInfo(), otherwise its input arguments
+ will be ignored.
+
+ Args:
+ lib_path: A library path.
+ lib_offsets: An iterable of integer offsets within the corresponding
+ library that will be symbolized by future calls to FindSymbolInfo.
+ """
+ self._lib_offsets_map[lib_path].update(lib_offsets)
+
+ # pylint: disable=unused-argument,no-self-use
+ def FindSymbolInfo(self, lib_path, lib_offset):
+ """Symbolize a device library path and offset.
+
+ Args:
+ lib_path: Library path (device or host specific, depending on the
+ derived class implementation).
+ lib_offset: Integer offset within the library.
+ Returns:
+ Corresponding symbol information string, or None.
+ """
+ # The base implementation cannot symbolize anything.
+ return None
+ # pylint: enable=unused-argument,no-self-use
+
+
+class ElfSymbolResolver(SymbolResolver):
+ """A SymbolResolver that can symbolize host path + offset values using
+ an elf_symbolizer.ELFSymbolizer instance.
+ """
+ def __init__(self, addr2line_path_for_tests=None):
+ super(ElfSymbolResolver, self).__init__()
+ self._addr2line_path = addr2line_path_for_tests
+
+ # Used to cache one ELFSymbolizer instance per library path.
+ self._elf_symbolizer_cache = {}
+
+ # Used to cache FindSymbolInfo() results. Maps host library paths
+ # to (offset -> symbol info string) dictionaries.
+ self._symbol_info_cache = collections.defaultdict(dict)
+ self._allow_symbolizer = True
+
+ def _CreateSymbolizerFor(self, host_path):
+ """Create the ELFSymbolizer instance associated with a given lib path."""
+ addr2line_path = self._addr2line_path
+ if not addr2line_path:
+ if not self._android_abi:
+ raise Exception(
+ 'Android CPU ABI must be set before calling FindSymbolInfo!')
+
+ cpu_arch = _AndroidAbiToCpuArch(self._android_abi)
+ self._addr2line_path = host_paths.ToolPath('addr2line', cpu_arch)
+
+ return elf_symbolizer.ELFSymbolizer(
+ elf_file_path=host_path, addr2line_path=self._addr2line_path,
+ callback=ElfSymbolResolver._Callback, inlines=True)
+
+ def DisallowSymbolizerForTesting(self):
+ """Disallow FindSymbolInfo() from using a symbolizer.
+
+ This is used during unit-testing to ensure that the offsets that were
+ recorded via AddLibraryOffset()/AddLibraryOffsets() are properly
+ symbolized, but not anything else.
+ """
+ self._allow_symbolizer = False
+
+ def FindSymbolInfo(self, host_path, offset):
+ """Override SymbolResolver.FindSymbolInfo.
+
+ Args:
+ host_path: Host-specific path to the native shared library.
+ offset: Integer offset within the native library.
+ Returns:
+ A symbol info string, or None.
+ """
+ offset_map = self._symbol_info_cache[host_path]
+ symbol_info = offset_map.get(offset)
+ if symbol_info:
+ return symbol_info
+
+ # Create symbolizer on demand.
+ symbolizer = self._elf_symbolizer_cache.get(host_path)
+ if not symbolizer:
+ symbolizer = self._CreateSymbolizerFor(host_path)
+ self._elf_symbolizer_cache[host_path] = symbolizer
+
+ # If there are pre-recorded offsets for this path, symbolize them now.
+ offsets = self._lib_offsets_map.get(host_path)
+ if offsets:
+ offset_map = {}
+ for pre_offset in offsets:
+ symbolizer.SymbolizeAsync(
+ pre_offset, callback_arg=(offset_map, pre_offset))
+ symbolizer.WaitForIdle()
+ self._symbol_info_cache[host_path] = offset_map
+
+ symbol_info = offset_map.get(offset)
+ if symbol_info:
+ return symbol_info
+
+ if not self._allow_symbolizer:
+ return None
+
+ # Symbolize single offset. Slower if addresses are not provided in
+ # increasing order to addr2line.
+ symbolizer.SymbolizeAsync(offset,
+ callback_arg=(offset_map, offset))
+ symbolizer.WaitForIdle()
+ return offset_map.get(offset)
+
+ @staticmethod
+ def _Callback(sym_info, callback_arg):
+ offset_map, offset = callback_arg
+ offset_map[offset] = str(sym_info)
+
+
+class DeviceSymbolResolver(SymbolResolver):
+ """A SymbolResolver instance that accepts device-specific path.
+
+ Usage is the following:
+ 1) Create new instance, passing a parent SymbolResolver instance that
+ accepts host-specific paths, and a HostLibraryFinder instance.
+
+ 2) Optional: call AddApkOffsets() to add offsets from within an APK
+ that contains uncompressed native shared libraries.
+
+ 3) Use it as any SymbolResolver instance.
+ """
+ def __init__(self, host_resolver, host_lib_finder):
+ """Initialize instance.
+
+ Args:
+ host_resolver: A parent SymbolResolver instance that will be used
+ to resolve symbols from host library paths.
+ host_lib_finder: A HostLibraryFinder instance used to locate
+ unstripped libraries on the host.
+ """
+ super(DeviceSymbolResolver, self).__init__()
+ self._host_lib_finder = host_lib_finder
+ self._bad_device_lib_paths = set()
+ self._host_resolver = host_resolver
+
+ def SetAndroidAbi(self, android_abi):
+ super(DeviceSymbolResolver, self).SetAndroidAbi(android_abi)
+ self._host_resolver.SetAndroidAbi(android_abi)
+
+ def AddLibraryOffsets(self, device_lib_path, lib_offsets):
+ """Associate a set of wanted offsets to a given device library.
+
+ This must be called before FindSymbolInfo(), otherwise its input arguments
+ will be ignored.
+
+ Args:
+ device_lib_path: A device-specific library path.
+ lib_offsets: An iterable of integer offsets within the corresponding
+ library that will be symbolized by future calls to FindSymbolInfo.
+ want to symbolize.
+ """
+ if device_lib_path in self._bad_device_lib_paths:
+ return
+
+ host_lib_path = self._host_lib_finder.Find(device_lib_path)
+ if not host_lib_path:
+ # NOTE: self._bad_device_lib_paths is only used to only print this
+ # warning once per bad library.
+ logging.warning('Could not find host library matching device path: %s',
+ device_lib_path)
+ self._bad_device_lib_paths.add(device_lib_path)
+ return
+
+ self._host_resolver.AddLibraryOffsets(host_lib_path, lib_offsets)
+
+ def AddApkOffsets(self, device_apk_path, apk_offsets, apk_translator):
+ """Associate a set of wanted offsets to a given device APK path.
+
+ This converts the APK-relative offsets into offsets relative to the
+ uncompressed libraries it contains, then calls AddLibraryOffsets()
+ for each one of the libraries.
+
+ Must be called before FindSymbolInfo() as well, otherwise input arguments
+ will be ignored.
+
+ Args:
+ device_apk_path: Device-specific APK path.
+ apk_offsets: Iterable of offsets within the APK file.
+ apk_translator: An ApkLibraryPathTranslator instance used to extract
+ library paths from the APK.
+ """
+ libraries_map = collections.defaultdict(set)
+ for offset in apk_offsets:
+ lib_path, lib_offset = apk_translator.TranslatePath(device_apk_path,
+ offset)
+ libraries_map[lib_path].add(lib_offset)
+
+ for lib_path, lib_offsets in libraries_map.iteritems():
+ self.AddLibraryOffsets(lib_path, lib_offsets)
+
+ def FindSymbolInfo(self, device_path, offset):
+ """Overrides SymbolResolver.FindSymbolInfo.
+
+ Args:
+ device_path: Device-specific library path (e.g.
+ '/data/app/com.example.app-1/lib/x86/libfoo.so')
+ offset: Offset in device library path.
+ Returns:
+ Corresponding symbol information string, or None.
+ """
+ host_path = self._host_lib_finder.Find(device_path)
+ if not host_path:
+ return None
+
+ return self._host_resolver.FindSymbolInfo(host_path, offset)
+
+
+class MemoryMap(object):
+ """Models the memory map of a given process. Usage is:
+
+ 1) Create new instance, passing the Android ABI.
+
+ 2) Call TranslateLine() whenever you want to detect and translate any
+ memory map input line.
+
+ 3) Otherwise, it is possible to parse the whole memory map input with
+ ParseLines(), then call FindSectionForAddress() repeatedly in order
+ to translate a memory address into the corresponding mapping and
+ file information tuple (e.g. to symbolize stack entries).
+ """
+
+ # A named tuple describing interesting memory map line items.
+ # Fields:
+ # addr_start: Mapping start address in memory.
+ # file_offset: Corresponding file offset.
+ # file_size: Corresponding mapping size in bytes.
+ # file_path: Input file path.
+ # match: Corresponding regular expression match object.
+ LineTuple = collections.namedtuple('MemoryMapLineTuple',
+ 'addr_start,file_offset,file_size,'
+ 'file_path, match')
+
+ # A name tuple describing a memory map section.
+ # Fields:
+ # address: Memory address.
+ # size: Size in bytes in memory
+ # offset: Starting file offset.
+ # path: Input file path.
+ SectionTuple = collections.namedtuple('MemoryMapSection',
+ 'address,size,offset,path')
+
+ def __init__(self, android_abi):
+ """Initializes instance.
+
+ Args:
+ android_abi: Android CPU ABI name (e.g. 'armeabi-v7a')
+ """
+ hex_addr = _HexAddressRegexpFor(android_abi)
+
+ # pylint: disable=line-too-long
+ # A regular expression used to match memory map entries which look like:
+ # b278c000-b2790fff r-- 4fda000 5000 /data/app/com.google.android.apps.chrome-2/base.apk
+ # pylint: enable=line-too-long
+ self._re_map_section = re.compile(
+ r'\s*(?P<addr_start>' + hex_addr + r')-(?P<addr_end>' + hex_addr + ')' +
+ r'\s+' +
+ r'(?P<perm>...)\s+' +
+ r'(?P<file_offset>[0-9a-f]+)\s+' +
+ r'(?P<file_size>[0-9a-f]+)\s*' +
+ r'(?P<file_path>[^ \t]+)?')
+
+ self._addr_map = [] # Sorted list of (address, size, path, offset) tuples.
+ self._sorted_addresses = [] # Sorted list of address fields in _addr_map.
+ self._in_section = False
+
+ def TranslateLine(self, line, apk_path_translator):
+ """Try to translate a memory map input line, if detected.
+
+ This only takes care of converting mapped APK file path and offsets
+ into a corresponding uncompressed native library file path + new offsets,
+ e.g. '..... <offset> <size> /data/.../base.apk' gets
+ translated into '.... <new-offset> <size> /data/.../base.apk!lib/libfoo.so'
+
+ This function should always work, even if ParseLines() was not called
+ previously.
+
+ Args:
+ line: Input memory map / tombstone line.
+ apk_translator: An ApkLibraryPathTranslator instance, used to map
+ APK offsets into uncompressed native libraries + new offsets.
+ Returns:
+ Translated memory map line, if relevant, or unchanged input line
+ otherwise.
+ """
+ t = self._ParseLine(line.rstrip())
+ if not t:
+ return line
+
+ new_path, new_offset = apk_path_translator.TranslatePath(
+ t.file_path, t.file_offset)
+
+ if new_path == t.file_path:
+ return line
+
+ pos = t.match.start('file_path')
+ return '%s%s (offset 0x%x)%s' % (line[0:pos], new_path, new_offset,
+ line[t.match.end('file_path'):])
+
+ def ParseLines(self, input_lines, in_section=False):
+ """Parse a list of input lines and extract the APK memory map out of it.
+
+ Args:
+ input_lines: list, or iterable, of input lines.
+ in_section: Optional. If true, considers that the input lines are
+ already part of the memory map. Otherwise, wait until the start of
+ the section appears in the input before trying to record data.
+ Returns:
+ True iff APK-related memory map entries were found. False otherwise.
+ """
+ addr_list = [] # list of (address, size, file_path, file_offset) tuples.
+ self._in_section = in_section
+ for line in input_lines:
+ t = self._ParseLine(line.rstrip())
+ if not t:
+ continue
+
+ addr_list.append(t)
+
+ self._addr_map = sorted(addr_list,
+ lambda x, y: cmp(x.addr_start, y.addr_start))
+ self._sorted_addresses = [e.addr_start for e in self._addr_map]
+ return bool(self._addr_map)
+
+ def _ParseLine(self, line):
+ """Used internally to recognized memory map input lines.
+
+ Args:
+ line: Input logcat or tomstone line.
+ Returns:
+ A LineTuple instance on success, or None on failure.
+ """
+ if not self._in_section:
+ self._in_section = line.startswith('memory map:')
+ return None
+
+ m = self._re_map_section.match(line)
+ if not m:
+ self._in_section = False # End of memory map section
+ return None
+
+ # Only accept .apk and .so files that are not from the system partitions.
+ file_path = m.group('file_path')
+ if not file_path:
+ return None
+
+ if file_path.startswith('/system') or file_path.startswith('/vendor'):
+ return None
+
+ if not (file_path.endswith('.apk') or file_path.endswith('.so')):
+ return None
+
+ addr_start = int(m.group('addr_start'), 16)
+ file_offset = int(m.group('file_offset'), 16)
+ file_size = int(m.group('file_size'), 16)
+
+ return self.LineTuple(addr_start, file_offset, file_size, file_path, m)
+
+ def Dump(self):
+ """Print memory map for debugging."""
+ print 'MEMORY MAP ['
+ for t in self._addr_map:
+ print '[%08x-%08x %08x %08x %s]' % (
+ t.addr_start, t.addr_start + t.file_size, t.file_size, t.file_offset,
+ t.file_path)
+ print '] MEMORY MAP'
+
+ def FindSectionForAddress(self, addr):
+ """Find the map section corresponding to a specific memory address.
+
+ Call this method only after using ParseLines() was called to extract
+ relevant information from the memory map.
+
+ Args:
+ addr: Memory address
+ Returns:
+ A SectionTuple instance on success, or None on failure.
+ """
+ pos = bisect.bisect_right(self._sorted_addresses, addr)
+ if pos > 0:
+ # All values in [0,pos) are <= addr, just ensure that the last
+ # one contains the address as well.
+ entry = self._addr_map[pos - 1]
+ if entry.addr_start + entry.file_size > addr:
+ return self.SectionTuple(entry.addr_start, entry.file_size,
+ entry.file_offset, entry.file_path)
+ return None
+
+
+class BacktraceTranslator(object):
+ """Translates backtrace-related lines in a tombstone or crash report.
+
+ Usage is the following:
+ 1) Create new instance with appropriate arguments.
+ 2) If the tombstone / logcat input is available, one can call
+ FindLibraryOffsets() in order to detect which library offsets
+ will need to be symbolized during a future parse. Doing so helps
+ speed up the ELF symbolizer.
+ 3) For each tombstone/logcat input line, call TranslateLine() to
+ try to detect and symbolize backtrace lines.
+ """
+
+ # A named tuple for relevant input backtrace lines.
+ # Fields:
+ # rel_pc: Instruction pointer, relative to offset in library start.
+ # location: Library or APK file path.
+ # offset: Load base of executable code in library or apk file path.
+ # match: The corresponding regular expression match object.
+ # Note:
+ # The actual instruction pointer always matches the position at
+ # |offset + rel_pc| in |location|.
+ LineTuple = collections.namedtuple('BacktraceLineTuple',
+ 'rel_pc,location,offset,match')
+
+ def __init__(self, android_abi, apk_translator):
+ """Initialize instance.
+
+ Args:
+ android_abi: Android CPU ABI name (e.g. 'armeabi-v7a').
+ apk_translator: ApkLibraryPathTranslator instance used to convert
+ mapped APK file offsets into uncompressed library file paths with
+ new offsets.
+ """
+ hex_addr = _HexAddressRegexpFor(android_abi)
+
+ # A regular expression used to match backtrace lines.
+ self._re_backtrace = re.compile(
+ r'.*#(?P<frame>[0-9]{2})\s+' +
+ r'(..)\s+' +
+ r'(?P<rel_pc>' + hex_addr + r')\s+' +
+ r'(?P<location>[^ \t]+)' +
+ r'(\s+\(offset 0x(?P<offset>[0-9a-f]+)\))?')
+
+ # In certain cases, offset will be provided as <location>+0x<offset>
+ # instead of <location> (offset 0x<offset>). This is a regexp to detect
+ # this.
+ self._re_location_offset = re.compile(
+ r'.*\+0x(?P<offset>[0-9a-f]+)$')
+
+ self._apk_translator = apk_translator
+ self._in_section = False
+
+ def _ParseLine(self, line):
+ """Used internally to detect and decompose backtrace input lines.
+
+ Args:
+ line: input tombstone line.
+ Returns:
+ A LineTuple instance on success, None on failure.
+ """
+ if not self._in_section:
+ self._in_section = line.startswith('backtrace:')
+ return None
+
+ line = line.rstrip()
+ m = self._re_backtrace.match(line)
+ if not m:
+ self._in_section = False
+ return None
+
+ location = m.group('location')
+ offset = m.group('offset')
+ if not offset:
+ m2 = self._re_location_offset.match(location)
+ if m2:
+ offset = m2.group('offset')
+ location = location[0:m2.start('offset') - 3]
+
+ if not offset:
+ return None
+
+ offset = int(offset, 16)
+ rel_pc = int(m.group('rel_pc'), 16)
+
+ # Two cases to consider here:
+ #
+ # * If this is a library file directly mapped in memory, then |rel_pc|
+ # if the direct offset within the library, and doesn't need any kind
+ # of adjustement.
+ #
+ # * If this is a library mapped directly from an .apk file, then
+ # |rel_pc| is the offset in the APK, and |offset| happens to be the
+ # load base of the corresponding library.
+ #
+ if location.endswith('.so'):
+ # For a native library directly mapped from the file system,
+ return self.LineTuple(rel_pc, location, offset, m)
+
+ if location.endswith('.apk'):
+ # For a native library inside an memory-mapped APK file,
+ new_location, new_offset = self._apk_translator.TranslatePath(
+ location, offset)
+
+ return self.LineTuple(rel_pc, new_location, new_offset, m)
+
+ # Ignore anything else (e.g. .oat or .odex files).
+ return None
+
+ def FindLibraryOffsets(self, input_lines, in_section=False):
+ """Parse a tombstone's backtrace section and find all library offsets in it.
+
+ Args:
+ input_lines: List or iterables of intput tombstone lines.
+ in_section: Optional. If True, considers that the stack section has
+ already started.
+ Returns:
+ A dictionary mapping device library paths to sets of offsets within
+ then.
+ """
+ self._in_section = in_section
+ result = collections.defaultdict(set)
+ for line in input_lines:
+ t = self._ParseLine(line)
+ if not t:
+ continue
+
+ result[t.location].add(t.offset + t.rel_pc)
+ return result
+
+ def TranslateLine(self, line, symbol_resolver):
+ """Symbolize backtrace line if recognized.
+
+ Args:
+ line: input backtrace line.
+ symbol_resolver: symbol resolver instance to use. This method will
+ call its FindSymbolInfo(device_lib_path, lib_offset) method to
+ convert offsets into symbol informations strings.
+ Returns:
+ Translated line (unchanged if not recognized as a back trace).
+ """
+ t = self._ParseLine(line)
+ if not t:
+ return line
+
+ symbol_info = symbol_resolver.FindSymbolInfo(t.location,
+ t.offset + t.rel_pc)
+ if not symbol_info:
+ symbol_info = 'offset 0x%x' % t.offset
+
+ pos = t.match.start('location')
+ pos2 = t.match.end('offset') + 1
+ if pos2 <= 0:
+ pos2 = t.match.end('location')
+ return '%s%s (%s)%s' % (line[:pos], t.location, symbol_info, line[pos2:])
+
+
+class StackTranslator(object):
+ """Translates stack-related lines in a tombstone or crash report."""
+
+ # A named tuple describing relevant stack input lines.
+ # Fields:
+ # address: Address as it appears in the stack.
+ # lib_path: Library path where |address| is mapped.
+ # lib_offset: Library load base offset. for |lib_path|.
+ # match: Corresponding regular expression match object.
+ LineTuple = collections.namedtuple('StackLineTuple',
+ 'address, lib_path, lib_offset, match')
+
+ def __init__(self, android_abi, memory_map, apk_translator):
+ """Initialize instance."""
+ hex_addr = _HexAddressRegexpFor(android_abi)
+
+ # pylint: disable=line-too-long
+ # A regular expression used to recognize stack entries like:
+ #
+ # #05 bf89a180 bf89a1e4 [stack]
+ # bf89a1c8 a0c01c51 /data/app/com.google.android.apps.chrome-2/base.apk
+ # bf89a080 00000000
+ # ........ ........
+ # pylint: enable=line-too-long
+ self._re_stack_line = re.compile(
+ r'\s+(?P<frame_number>#[0-9]+)?\s*' +
+ r'(?P<stack_addr>' + hex_addr + r')\s+' +
+ r'(?P<stack_value>' + hex_addr + r')' +
+ r'(\s+(?P<location>[^ \t]+))?')
+
+ self._re_stack_abbrev = re.compile(r'\s+[.]+\s+[.]+')
+
+ self._memory_map = memory_map
+ self._apk_translator = apk_translator
+ self._in_section = False
+
+ def _ParseLine(self, line):
+ """Check a given input line for a relevant _re_stack_line match.
+
+ Args:
+ line: input tombstone line.
+ Returns:
+ A LineTuple instance on success, None on failure.
+ """
+ line = line.rstrip()
+ if not self._in_section:
+ self._in_section = line.startswith('stack:')
+ return None
+
+ m = self._re_stack_line.match(line)
+ if not m:
+ if not self._re_stack_abbrev.match(line):
+ self._in_section = False
+ return None
+
+ location = m.group('location')
+ if not location:
+ return None
+
+ if not location.endswith('.apk') and not location.endswith('.so'):
+ return None
+
+ addr = int(m.group('stack_value'), 16)
+ t = self._memory_map.FindSectionForAddress(addr)
+ if t is None:
+ return None
+
+ lib_path = t.path
+ lib_offset = t.offset + (addr - t.address)
+
+ if lib_path.endswith('.apk'):
+ lib_path, lib_offset = self._apk_translator.TranslatePath(
+ lib_path, lib_offset)
+
+ return self.LineTuple(addr, lib_path, lib_offset, m)
+
+ def FindLibraryOffsets(self, input_lines, in_section=False):
+ """Parse a tombstone's stack section and find all library offsets in it.
+
+ Args:
+ input_lines: List or iterables of intput tombstone lines.
+ in_section: Optional. If True, considers that the stack section has
+ already started.
+ Returns:
+ A dictionary mapping device library paths to sets of offsets within
+ then.
+ """
+ result = collections.defaultdict(set)
+ self._in_section = in_section
+ for line in input_lines:
+ t = self._ParseLine(line)
+ if t:
+ result[t.lib_path].add(t.lib_offset)
+ return result
+
+ def TranslateLine(self, line, symbol_resolver=None):
+ """Try to translate a line of the stack dump."""
+ t = self._ParseLine(line)
+ if not t:
+ return line
+
+ symbol_info = symbol_resolver.FindSymbolInfo(t.lib_path, t.lib_offset)
+ if not symbol_info:
+ return line
+
+ pos = t.match.start('location')
+ pos2 = t.match.end('location')
+ return '%s%s (%s)%s' % (line[:pos], t.lib_path, symbol_info, line[pos2:])
diff --git a/chromium/build/android/pylib/symbols/symbol_utils_unittest.py b/chromium/build/android/pylib/symbols/symbol_utils_unittest.py
new file mode 100644
index 00000000000..d350c17489b
--- /dev/null
+++ b/chromium/build/android/pylib/symbols/symbol_utils_unittest.py
@@ -0,0 +1,944 @@
+# Copyright 2018 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.
+
+import collections
+import contextlib
+import logging
+import os
+import re
+import shutil
+import tempfile
+import unittest
+
+from pylib.symbols import apk_native_libs_unittest
+from pylib.symbols import mock_addr2line
+from pylib.symbols import symbol_utils
+
+_MOCK_ELF_DATA = apk_native_libs_unittest.MOCK_ELF_DATA
+
+_MOCK_A2L_PATH = os.path.join(os.path.dirname(mock_addr2line.__file__),
+ 'mock_addr2line')
+
+
+# pylint: disable=line-too-long
+
+# list of (start_offset, end_offset, size, libpath) tuples corresponding
+# to the content of base.apk. This was taken from an x86 ChromeModern.apk
+# component build.
+_TEST_APK_LIBS = [
+ (0x01331000, 0x013696bc, 0x000386bc, 'libaccessibility.cr.so'),
+ (0x0136a000, 0x013779c4, 0x0000d9c4, 'libanimation.cr.so'),
+ (0x01378000, 0x0137f7e8, 0x000077e8, 'libapdu.cr.so'),
+ (0x01380000, 0x0155ccc8, 0x001dccc8, 'libbase.cr.so'),
+ (0x0155d000, 0x015ab98c, 0x0004e98c, 'libbase_i18n.cr.so'),
+ (0x015ac000, 0x015dff4c, 0x00033f4c, 'libbindings.cr.so'),
+ (0x015e0000, 0x015f5a54, 0x00015a54, 'libbindings_base.cr.so'),
+ (0x015f6000, 0x0160d770, 0x00017770, 'libblink_android_mojo_bindings_shared.cr.so'),
+ (0x0160e000, 0x01731960, 0x00123960, 'libblink_common.cr.so'),
+ (0x01732000, 0x0174ce54, 0x0001ae54, 'libblink_controller.cr.so'),
+ (0x0174d000, 0x0318c528, 0x01a3f528, 'libblink_core.cr.so'),
+ (0x0318d000, 0x03191700, 0x00004700, 'libblink_core_mojo_bindings_shared.cr.so'),
+ (0x03192000, 0x03cd7918, 0x00b45918, 'libblink_modules.cr.so'),
+ (0x03cd8000, 0x03d137d0, 0x0003b7d0, 'libblink_mojo_bindings_shared.cr.so'),
+ (0x03d14000, 0x03d2670c, 0x0001270c, 'libblink_offscreen_canvas_mojo_bindings_shared.cr.so'),
+ (0x03d27000, 0x046c7054, 0x009a0054, 'libblink_platform.cr.so'),
+ (0x046c8000, 0x0473fbfc, 0x00077bfc, 'libbluetooth.cr.so'),
+ (0x04740000, 0x04878f40, 0x00138f40, 'libboringssl.cr.so'),
+ (0x04879000, 0x0498466c, 0x0010b66c, 'libc++_shared.so'),
+ (0x04985000, 0x0498d93c, 0x0000893c, 'libcaptive_portal.cr.so'),
+ (0x0498e000, 0x049947cc, 0x000067cc, 'libcapture_base.cr.so'),
+ (0x04995000, 0x04b39f18, 0x001a4f18, 'libcapture_lib.cr.so'),
+ (0x04b3a000, 0x04b488ec, 0x0000e8ec, 'libcbor.cr.so'),
+ (0x04b49000, 0x04e9ea5c, 0x00355a5c, 'libcc.cr.so'),
+ (0x04e9f000, 0x04ed6404, 0x00037404, 'libcc_animation.cr.so'),
+ (0x04ed7000, 0x04ef5ab4, 0x0001eab4, 'libcc_base.cr.so'),
+ (0x04ef6000, 0x04fd9364, 0x000e3364, 'libcc_blink.cr.so'),
+ (0x04fda000, 0x04fe2758, 0x00008758, 'libcc_debug.cr.so'),
+ (0x04fe3000, 0x0500ae0c, 0x00027e0c, 'libcc_ipc.cr.so'),
+ (0x0500b000, 0x05078f38, 0x0006df38, 'libcc_paint.cr.so'),
+ (0x05079000, 0x0507e734, 0x00005734, 'libcdm_manager.cr.so'),
+ (0x0507f000, 0x06f4d744, 0x01ece744, 'libchrome.cr.so'),
+ (0x06f54000, 0x06feb830, 0x00097830, 'libchromium_sqlite3.cr.so'),
+ (0x06fec000, 0x0706f554, 0x00083554, 'libclient.cr.so'),
+ (0x07070000, 0x0708da60, 0x0001da60, 'libcloud_policy_proto_generated_compile.cr.so'),
+ (0x0708e000, 0x07121f28, 0x00093f28, 'libcodec.cr.so'),
+ (0x07122000, 0x07134ab8, 0x00012ab8, 'libcolor_space.cr.so'),
+ (0x07135000, 0x07138614, 0x00003614, 'libcommon.cr.so'),
+ (0x07139000, 0x0717c938, 0x00043938, 'libcompositor.cr.so'),
+ (0x0717d000, 0x0923d78c, 0x020c078c, 'libcontent.cr.so'),
+ (0x0923e000, 0x092ae87c, 0x0007087c, 'libcontent_common_mojo_bindings_shared.cr.so'),
+ (0x092af000, 0x092be718, 0x0000f718, 'libcontent_public_common_mojo_bindings_shared.cr.so'),
+ (0x092bf000, 0x092d9a20, 0x0001aa20, 'libcrash_key.cr.so'),
+ (0x092da000, 0x092eda58, 0x00013a58, 'libcrcrypto.cr.so'),
+ (0x092ee000, 0x092f16e0, 0x000036e0, 'libdevice_base.cr.so'),
+ (0x092f2000, 0x092fe8d8, 0x0000c8d8, 'libdevice_event_log.cr.so'),
+ (0x092ff000, 0x093026a4, 0x000036a4, 'libdevice_features.cr.so'),
+ (0x09303000, 0x093f1220, 0x000ee220, 'libdevice_gamepad.cr.so'),
+ (0x093f2000, 0x09437f54, 0x00045f54, 'libdevice_vr_mojo_bindings.cr.so'),
+ (0x09438000, 0x0954c168, 0x00114168, 'libdevice_vr_mojo_bindings_blink.cr.so'),
+ (0x0954d000, 0x0955d720, 0x00010720, 'libdevice_vr_mojo_bindings_shared.cr.so'),
+ (0x0955e000, 0x0956b9c0, 0x0000d9c0, 'libdevices.cr.so'),
+ (0x0956c000, 0x0957cae8, 0x00010ae8, 'libdiscardable_memory_client.cr.so'),
+ (0x0957d000, 0x09588854, 0x0000b854, 'libdiscardable_memory_common.cr.so'),
+ (0x09589000, 0x0959cbb4, 0x00013bb4, 'libdiscardable_memory_service.cr.so'),
+ (0x0959d000, 0x095b6b90, 0x00019b90, 'libdisplay.cr.so'),
+ (0x095b7000, 0x095be930, 0x00007930, 'libdisplay_types.cr.so'),
+ (0x095bf000, 0x095c46c4, 0x000056c4, 'libdisplay_util.cr.so'),
+ (0x095c5000, 0x095f54a4, 0x000304a4, 'libdomain_reliability.cr.so'),
+ (0x095f6000, 0x0966fe08, 0x00079e08, 'libembedder.cr.so'),
+ (0x09670000, 0x096735f8, 0x000035f8, 'libembedder_switches.cr.so'),
+ (0x09674000, 0x096a3460, 0x0002f460, 'libevents.cr.so'),
+ (0x096a4000, 0x096b6d40, 0x00012d40, 'libevents_base.cr.so'),
+ (0x096b7000, 0x0981a778, 0x00163778, 'libffmpeg.cr.so'),
+ (0x0981b000, 0x09945c94, 0x0012ac94, 'libfido.cr.so'),
+ (0x09946000, 0x09a330dc, 0x000ed0dc, 'libfingerprint.cr.so'),
+ (0x09a34000, 0x09b53170, 0x0011f170, 'libfreetype_harfbuzz.cr.so'),
+ (0x09b54000, 0x09bc5c5c, 0x00071c5c, 'libgcm.cr.so'),
+ (0x09bc6000, 0x09cc8584, 0x00102584, 'libgeolocation.cr.so'),
+ (0x09cc9000, 0x09cdc8d4, 0x000138d4, 'libgeometry.cr.so'),
+ (0x09cdd000, 0x09cec8b4, 0x0000f8b4, 'libgeometry_skia.cr.so'),
+ (0x09ced000, 0x09d10e14, 0x00023e14, 'libgesture_detection.cr.so'),
+ (0x09d11000, 0x09d7595c, 0x0006495c, 'libgfx.cr.so'),
+ (0x09d76000, 0x09d7d7cc, 0x000077cc, 'libgfx_ipc.cr.so'),
+ (0x09d7e000, 0x09d82708, 0x00004708, 'libgfx_ipc_buffer_types.cr.so'),
+ (0x09d83000, 0x09d89748, 0x00006748, 'libgfx_ipc_color.cr.so'),
+ (0x09d8a000, 0x09d8f6f4, 0x000056f4, 'libgfx_ipc_geometry.cr.so'),
+ (0x09d90000, 0x09d94754, 0x00004754, 'libgfx_ipc_skia.cr.so'),
+ (0x09d95000, 0x09d9869c, 0x0000369c, 'libgfx_switches.cr.so'),
+ (0x09d99000, 0x09dba0ac, 0x000210ac, 'libgin.cr.so'),
+ (0x09dbb000, 0x09e0a8cc, 0x0004f8cc, 'libgl_in_process_context.cr.so'),
+ (0x09e0b000, 0x09e17a18, 0x0000ca18, 'libgl_init.cr.so'),
+ (0x09e18000, 0x09ee34e4, 0x000cb4e4, 'libgl_wrapper.cr.so'),
+ (0x09ee4000, 0x0a1a2e00, 0x002bee00, 'libgles2.cr.so'),
+ (0x0a1a3000, 0x0a24556c, 0x000a256c, 'libgles2_implementation.cr.so'),
+ (0x0a246000, 0x0a267038, 0x00021038, 'libgles2_utils.cr.so'),
+ (0x0a268000, 0x0a3288e4, 0x000c08e4, 'libgpu.cr.so'),
+ (0x0a329000, 0x0a3627ec, 0x000397ec, 'libgpu_ipc_service.cr.so'),
+ (0x0a363000, 0x0a388a18, 0x00025a18, 'libgpu_util.cr.so'),
+ (0x0a389000, 0x0a506d8c, 0x0017dd8c, 'libhost.cr.so'),
+ (0x0a507000, 0x0a6f0ec0, 0x001e9ec0, 'libicui18n.cr.so'),
+ (0x0a6f1000, 0x0a83b4c8, 0x0014a4c8, 'libicuuc.cr.so'),
+ (0x0a83c000, 0x0a8416e4, 0x000056e4, 'libinterfaces_shared.cr.so'),
+ (0x0a842000, 0x0a87e2a0, 0x0003c2a0, 'libipc.cr.so'),
+ (0x0a87f000, 0x0a88c98c, 0x0000d98c, 'libipc_mojom.cr.so'),
+ (0x0a88d000, 0x0a8926e4, 0x000056e4, 'libipc_mojom_shared.cr.so'),
+ (0x0a893000, 0x0a8a1e18, 0x0000ee18, 'libkeyed_service_content.cr.so'),
+ (0x0a8a2000, 0x0a8b4a30, 0x00012a30, 'libkeyed_service_core.cr.so'),
+ (0x0a8b5000, 0x0a930a80, 0x0007ba80, 'libleveldatabase.cr.so'),
+ (0x0a931000, 0x0a9b3908, 0x00082908, 'libmanager.cr.so'),
+ (0x0a9b4000, 0x0aea9bb4, 0x004f5bb4, 'libmedia.cr.so'),
+ (0x0aeaa000, 0x0b08cb88, 0x001e2b88, 'libmedia_blink.cr.so'),
+ (0x0b08d000, 0x0b0a4728, 0x00017728, 'libmedia_devices_mojo_bindings_shared.cr.so'),
+ (0x0b0a5000, 0x0b1943ec, 0x000ef3ec, 'libmedia_gpu.cr.so'),
+ (0x0b195000, 0x0b2d07d4, 0x0013b7d4, 'libmedia_mojo_services.cr.so'),
+ (0x0b2d1000, 0x0b2d4760, 0x00003760, 'libmessage_center.cr.so'),
+ (0x0b2d5000, 0x0b2e0938, 0x0000b938, 'libmessage_support.cr.so'),
+ (0x0b2e1000, 0x0b2f3ad0, 0x00012ad0, 'libmetrics_cpp.cr.so'),
+ (0x0b2f4000, 0x0b313bb8, 0x0001fbb8, 'libmidi.cr.so'),
+ (0x0b314000, 0x0b31b848, 0x00007848, 'libmojo_base_lib.cr.so'),
+ (0x0b31c000, 0x0b3329f8, 0x000169f8, 'libmojo_base_mojom.cr.so'),
+ (0x0b333000, 0x0b34b98c, 0x0001898c, 'libmojo_base_mojom_blink.cr.so'),
+ (0x0b34c000, 0x0b354700, 0x00008700, 'libmojo_base_mojom_shared.cr.so'),
+ (0x0b355000, 0x0b3608b0, 0x0000b8b0, 'libmojo_base_shared_typemap_traits.cr.so'),
+ (0x0b361000, 0x0b3ad454, 0x0004c454, 'libmojo_edk.cr.so'),
+ (0x0b3ae000, 0x0b3c4a20, 0x00016a20, 'libmojo_edk_ports.cr.so'),
+ (0x0b3c5000, 0x0b3d38a0, 0x0000e8a0, 'libmojo_mojom_bindings.cr.so'),
+ (0x0b3d4000, 0x0b3da6e8, 0x000066e8, 'libmojo_mojom_bindings_shared.cr.so'),
+ (0x0b3db000, 0x0b3e27f0, 0x000077f0, 'libmojo_public_system.cr.so'),
+ (0x0b3e3000, 0x0b3fa9fc, 0x000179fc, 'libmojo_public_system_cpp.cr.so'),
+ (0x0b3fb000, 0x0b407728, 0x0000c728, 'libmojom_core_shared.cr.so'),
+ (0x0b408000, 0x0b421744, 0x00019744, 'libmojom_platform_shared.cr.so'),
+ (0x0b422000, 0x0b43451c, 0x0001251c, 'libnative_theme.cr.so'),
+ (0x0b435000, 0x0baaa1bc, 0x006751bc, 'libnet.cr.so'),
+ (0x0baab000, 0x0bac3c08, 0x00018c08, 'libnet_with_v8.cr.so'),
+ (0x0bac4000, 0x0bb74670, 0x000b0670, 'libnetwork_cpp.cr.so'),
+ (0x0bb75000, 0x0bbaee8c, 0x00039e8c, 'libnetwork_cpp_base.cr.so'),
+ (0x0bbaf000, 0x0bd21844, 0x00172844, 'libnetwork_service.cr.so'),
+ (0x0bd22000, 0x0bd256e4, 0x000036e4, 'libnetwork_session_configurator.cr.so'),
+ (0x0bd26000, 0x0bd33734, 0x0000d734, 'libonc.cr.so'),
+ (0x0bd34000, 0x0bd9ce18, 0x00068e18, 'libperfetto.cr.so'),
+ (0x0bd9d000, 0x0bda4854, 0x00007854, 'libplatform.cr.so'),
+ (0x0bda5000, 0x0bec5ce4, 0x00120ce4, 'libpolicy_component.cr.so'),
+ (0x0bec6000, 0x0bf5ab58, 0x00094b58, 'libpolicy_proto.cr.so'),
+ (0x0bf5b000, 0x0bf86fbc, 0x0002bfbc, 'libprefs.cr.so'),
+ (0x0bf87000, 0x0bfa5d74, 0x0001ed74, 'libprinting.cr.so'),
+ (0x0bfa6000, 0x0bfe0e80, 0x0003ae80, 'libprotobuf_lite.cr.so'),
+ (0x0bfe1000, 0x0bff0a18, 0x0000fa18, 'libproxy_config.cr.so'),
+ (0x0bff1000, 0x0c0f6654, 0x00105654, 'libpublic.cr.so'),
+ (0x0c0f7000, 0x0c0fa6a4, 0x000036a4, 'librange.cr.so'),
+ (0x0c0fb000, 0x0c118058, 0x0001d058, 'libraster.cr.so'),
+ (0x0c119000, 0x0c133d00, 0x0001ad00, 'libresource_coordinator_cpp.cr.so'),
+ (0x0c134000, 0x0c1396a0, 0x000056a0, 'libresource_coordinator_cpp_base.cr.so'),
+ (0x0c13a000, 0x0c1973b8, 0x0005d3b8, 'libresource_coordinator_public_mojom.cr.so'),
+ (0x0c198000, 0x0c2033e8, 0x0006b3e8, 'libresource_coordinator_public_mojom_blink.cr.so'),
+ (0x0c204000, 0x0c219744, 0x00015744, 'libresource_coordinator_public_mojom_shared.cr.so'),
+ (0x0c21a000, 0x0c21e700, 0x00004700, 'libsandbox.cr.so'),
+ (0x0c21f000, 0x0c22f96c, 0x0001096c, 'libsandbox_services.cr.so'),
+ (0x0c230000, 0x0c249d58, 0x00019d58, 'libseccomp_bpf.cr.so'),
+ (0x0c24a000, 0x0c24e714, 0x00004714, 'libseccomp_starter_android.cr.so'),
+ (0x0c24f000, 0x0c4ae9f0, 0x0025f9f0, 'libservice.cr.so'),
+ (0x0c4af000, 0x0c4c3ae4, 0x00014ae4, 'libservice_manager_cpp.cr.so'),
+ (0x0c4c4000, 0x0c4cb708, 0x00007708, 'libservice_manager_cpp_types.cr.so'),
+ (0x0c4cc000, 0x0c4fbe30, 0x0002fe30, 'libservice_manager_mojom.cr.so'),
+ (0x0c4fc000, 0x0c532e78, 0x00036e78, 'libservice_manager_mojom_blink.cr.so'),
+ (0x0c533000, 0x0c53669c, 0x0000369c, 'libservice_manager_mojom_constants.cr.so'),
+ (0x0c537000, 0x0c53e85c, 0x0000785c, 'libservice_manager_mojom_constants_blink.cr.so'),
+ (0x0c53f000, 0x0c542668, 0x00003668, 'libservice_manager_mojom_constants_shared.cr.so'),
+ (0x0c543000, 0x0c54d700, 0x0000a700, 'libservice_manager_mojom_shared.cr.so'),
+ (0x0c54e000, 0x0c8fc6ec, 0x003ae6ec, 'libsessions.cr.so'),
+ (0x0c8fd000, 0x0c90a924, 0x0000d924, 'libshared_memory_support.cr.so'),
+ (0x0c90b000, 0x0c9148ec, 0x000098ec, 'libshell_dialogs.cr.so'),
+ (0x0c915000, 0x0cf8de70, 0x00678e70, 'libskia.cr.so'),
+ (0x0cf8e000, 0x0cf978bc, 0x000098bc, 'libsnapshot.cr.so'),
+ (0x0cf98000, 0x0cfb7d9c, 0x0001fd9c, 'libsql.cr.so'),
+ (0x0cfb8000, 0x0cfbe744, 0x00006744, 'libstartup_tracing.cr.so'),
+ (0x0cfbf000, 0x0d19b4e4, 0x001dc4e4, 'libstorage_browser.cr.so'),
+ (0x0d19c000, 0x0d2a773c, 0x0010b73c, 'libstorage_common.cr.so'),
+ (0x0d2a8000, 0x0d2ac6fc, 0x000046fc, 'libsurface.cr.so'),
+ (0x0d2ad000, 0x0d2baa98, 0x0000da98, 'libtracing.cr.so'),
+ (0x0d2bb000, 0x0d2f36b0, 0x000386b0, 'libtracing_cpp.cr.so'),
+ (0x0d2f4000, 0x0d326e70, 0x00032e70, 'libtracing_mojom.cr.so'),
+ (0x0d327000, 0x0d33270c, 0x0000b70c, 'libtracing_mojom_shared.cr.so'),
+ (0x0d333000, 0x0d46d804, 0x0013a804, 'libui_android.cr.so'),
+ (0x0d46e000, 0x0d4cb3f8, 0x0005d3f8, 'libui_base.cr.so'),
+ (0x0d4cc000, 0x0d4dbc40, 0x0000fc40, 'libui_base_ime.cr.so'),
+ (0x0d4dc000, 0x0d4e58d4, 0x000098d4, 'libui_data_pack.cr.so'),
+ (0x0d4e6000, 0x0d51d1e0, 0x000371e0, 'libui_devtools.cr.so'),
+ (0x0d51e000, 0x0d52b984, 0x0000d984, 'libui_message_center_cpp.cr.so'),
+ (0x0d52c000, 0x0d539a48, 0x0000da48, 'libui_touch_selection.cr.so'),
+ (0x0d53a000, 0x0d55bc60, 0x00021c60, 'liburl.cr.so'),
+ (0x0d55c000, 0x0d55f6b4, 0x000036b4, 'liburl_ipc.cr.so'),
+ (0x0d560000, 0x0d5af110, 0x0004f110, 'liburl_matcher.cr.so'),
+ (0x0d5b0000, 0x0d5e2fac, 0x00032fac, 'libuser_manager.cr.so'),
+ (0x0d5e3000, 0x0d5e66e4, 0x000036e4, 'libuser_prefs.cr.so'),
+ (0x0d5e7000, 0x0e3e1cc8, 0x00dfacc8, 'libv8.cr.so'),
+ (0x0e3e2000, 0x0e400ae0, 0x0001eae0, 'libv8_libbase.cr.so'),
+ (0x0e401000, 0x0e4d91d4, 0x000d81d4, 'libviz_common.cr.so'),
+ (0x0e4da000, 0x0e4df7e4, 0x000057e4, 'libviz_resource_format.cr.so'),
+ (0x0e4e0000, 0x0e5b7120, 0x000d7120, 'libweb_dialogs.cr.so'),
+ (0x0e5b8000, 0x0e5c7a18, 0x0000fa18, 'libwebdata_common.cr.so'),
+ (0x0e5c8000, 0x0e61bfe4, 0x00053fe4, 'libwtf.cr.so'),
+]
+
+
+# A small memory map fragment extracted from a tombstone for a process that
+# had loaded the APK corresponding to _TEST_APK_LIBS above.
+_TEST_MEMORY_MAP = r'''memory map:
+12c00000-12ccafff rw- 0 cb000 /dev/ashmem/dalvik-main space (deleted)
+12ccb000-130cafff rw- cb000 400000 /dev/ashmem/dalvik-main space (deleted)
+130cb000-32bfffff --- 4cb000 1fb35000 /dev/ashmem/dalvik-main space (deleted)
+32c00000-32c00fff rw- 0 1000 /dev/ashmem/dalvik-main space 1 (deleted)
+32c01000-52bfffff --- 1000 1ffff000 /dev/ashmem/dalvik-main space 1 (deleted)
+6f3b8000-6fd90fff rw- 0 9d9000 /data/dalvik-cache/x86/system@framework@boot.art
+6fd91000-71c42fff r-- 0 1eb2000 /data/dalvik-cache/x86/system@framework@boot.oat
+71c43000-7393efff r-x 1eb2000 1cfc000 /data/dalvik-cache/x86/system@framework@boot.oat (load base 0x71c43000)
+7393f000-7393ffff rw- 3bae000 1000 /data/dalvik-cache/x86/system@framework@boot.oat
+73940000-73a1bfff rw- 0 dc000 /dev/ashmem/dalvik-zygote space (deleted)
+73a1c000-73a1cfff rw- 0 1000 /dev/ashmem/dalvik-non moving space (deleted)
+73a1d000-73a2dfff rw- 1000 11000 /dev/ashmem/dalvik-non moving space (deleted)
+73a2e000-77540fff --- 12000 3b13000 /dev/ashmem/dalvik-non moving space (deleted)
+77541000-7793ffff rw- 3b25000 3ff000 /dev/ashmem/dalvik-non moving space (deleted)
+923aa000-92538fff r-- 8a9000 18f000 /data/app/com.example.app-2/base.apk
+92539000-9255bfff r-- 0 23000 /data/data/com.example.app/app_data/paks/es.pak@162db1c6689
+9255c000-92593fff r-- 213000 38000 /data/app/com.example.app-2/base.apk
+92594000-925c0fff r-- 87d000 2d000 /data/app/com.example.app-2/base.apk
+925c1000-927d3fff r-- a37000 213000 /data/app/com.example.app-2/base.apk
+927d4000-92e07fff r-- 24a000 634000 /data/app/com.example.app-2/base.apk
+92e08000-92e37fff r-- a931000 30000 /data/app/com.example.app-2/base.apk
+92e38000-92e86fff r-x a961000 4f000 /data/app/com.example.app-2/base.apk
+92e87000-92e8afff rw- a9b0000 4000 /data/app/com.example.app-2/base.apk
+92e8b000-92e8bfff rw- 0 1000
+92e8c000-92e9dfff r-- d5b0000 12000 /data/app/com.example.app-2/base.apk
+92e9e000-92ebcfff r-x d5c2000 1f000 /data/app/com.example.app-2/base.apk
+92ebd000-92ebefff rw- d5e1000 2000 /data/app/com.example.app-2/base.apk
+92ebf000-92ebffff rw- 0 1000
+'''
+
+# list of (address, size, path, offset) tuples that must appear in
+# _TEST_MEMORY_MAP. Not all sections need to be listed.
+_TEST_MEMORY_MAP_SECTIONS = [
+ (0x923aa000, 0x18f000, '/data/app/com.example.app-2/base.apk', 0x8a9000),
+ (0x9255c000, 0x038000, '/data/app/com.example.app-2/base.apk', 0x213000),
+ (0x92594000, 0x02d000, '/data/app/com.example.app-2/base.apk', 0x87d000),
+ (0x925c1000, 0x213000, '/data/app/com.example.app-2/base.apk', 0xa37000),
+]
+
+_EXPECTED_TEST_MEMORY_MAP = r'''memory map:
+12c00000-12ccafff rw- 0 cb000 /dev/ashmem/dalvik-main space (deleted)
+12ccb000-130cafff rw- cb000 400000 /dev/ashmem/dalvik-main space (deleted)
+130cb000-32bfffff --- 4cb000 1fb35000 /dev/ashmem/dalvik-main space (deleted)
+32c00000-32c00fff rw- 0 1000 /dev/ashmem/dalvik-main space 1 (deleted)
+32c01000-52bfffff --- 1000 1ffff000 /dev/ashmem/dalvik-main space 1 (deleted)
+6f3b8000-6fd90fff rw- 0 9d9000 /data/dalvik-cache/x86/system@framework@boot.art
+6fd91000-71c42fff r-- 0 1eb2000 /data/dalvik-cache/x86/system@framework@boot.oat
+71c43000-7393efff r-x 1eb2000 1cfc000 /data/dalvik-cache/x86/system@framework@boot.oat (load base 0x71c43000)
+7393f000-7393ffff rw- 3bae000 1000 /data/dalvik-cache/x86/system@framework@boot.oat
+73940000-73a1bfff rw- 0 dc000 /dev/ashmem/dalvik-zygote space (deleted)
+73a1c000-73a1cfff rw- 0 1000 /dev/ashmem/dalvik-non moving space (deleted)
+73a1d000-73a2dfff rw- 1000 11000 /dev/ashmem/dalvik-non moving space (deleted)
+73a2e000-77540fff --- 12000 3b13000 /dev/ashmem/dalvik-non moving space (deleted)
+77541000-7793ffff rw- 3b25000 3ff000 /dev/ashmem/dalvik-non moving space (deleted)
+923aa000-92538fff r-- 8a9000 18f000 /data/app/com.example.app-2/base.apk
+92539000-9255bfff r-- 0 23000 /data/data/com.example.app/app_data/paks/es.pak@162db1c6689
+9255c000-92593fff r-- 213000 38000 /data/app/com.example.app-2/base.apk
+92594000-925c0fff r-- 87d000 2d000 /data/app/com.example.app-2/base.apk
+925c1000-927d3fff r-- a37000 213000 /data/app/com.example.app-2/base.apk
+927d4000-92e07fff r-- 24a000 634000 /data/app/com.example.app-2/base.apk
+92e08000-92e37fff r-- a931000 30000 /data/app/com.example.app-2/base.apk!lib/libmanager.cr.so (offset 0x0)
+92e38000-92e86fff r-x a961000 4f000 /data/app/com.example.app-2/base.apk!lib/libmanager.cr.so (offset 0x30000)
+92e87000-92e8afff rw- a9b0000 4000 /data/app/com.example.app-2/base.apk!lib/libmanager.cr.so (offset 0x7f000)
+92e8b000-92e8bfff rw- 0 1000
+92e8c000-92e9dfff r-- d5b0000 12000 /data/app/com.example.app-2/base.apk!lib/libuser_manager.cr.so (offset 0x0)
+92e9e000-92ebcfff r-x d5c2000 1f000 /data/app/com.example.app-2/base.apk!lib/libuser_manager.cr.so (offset 0x12000)
+92ebd000-92ebefff rw- d5e1000 2000 /data/app/com.example.app-2/base.apk!lib/libuser_manager.cr.so (offset 0x31000)
+92ebf000-92ebffff rw- 0 1000
+'''
+
+# Example stack section, taken from the same tombstone that _TEST_MEMORY_MAP
+# was extracted from.
+_TEST_STACK = r'''stack:
+ bf89a070 b7439468 /system/lib/libc.so
+ bf89a074 bf89a1e4 [stack]
+ bf89a078 932d4000 /data/app/com.example.app-2/base.apk
+ bf89a07c b73bfbc9 /system/lib/libc.so (pthread_mutex_lock+65)
+ bf89a080 00000000
+ bf89a084 4000671c /dev/ashmem/dalvik-main space 1 (deleted)
+ bf89a088 932d1d86 /data/app/com.example.app-2/base.apk
+ bf89a08c b743671c /system/lib/libc.so
+ bf89a090 b77f8c00 /system/bin/linker
+ bf89a094 b743cc90
+ bf89a098 932d1d4a /data/app/com.example.app-2/base.apk
+ bf89a09c b73bf271 /system/lib/libc.so (__pthread_internal_find(long)+65)
+ bf89a0a0 b743cc90
+ bf89a0a4 bf89a0b0 [stack]
+ bf89a0a8 bf89a0b8 [stack]
+ bf89a0ac 00000008
+ ........ ........
+ #00 bf89a0b0 00000006
+ bf89a0b4 00000002
+ bf89a0b8 b743671c /system/lib/libc.so
+ bf89a0bc b73bf5d9 /system/lib/libc.so (pthread_kill+71)
+ #01 bf89a0c0 00006937
+ bf89a0c4 00006937
+ bf89a0c8 00000006
+ bf89a0cc b77fd3a9 /system/bin/app_process32 (sigprocmask+141)
+ bf89a0d0 00000002
+ bf89a0d4 bf89a0ec [stack]
+ bf89a0d8 00000000
+ bf89a0dc b743671c /system/lib/libc.so
+ bf89a0e0 bf89a12c [stack]
+ bf89a0e4 bf89a1e4 [stack]
+ bf89a0e8 932d1d4a /data/app/com.example.app-2/base.apk
+ bf89a0ec b7365206 /system/lib/libc.so (raise+37)
+ #02 bf89a0f0 b77f8c00 /system/bin/linker
+ bf89a0f4 00000006
+ bf89a0f8 b7439468 /system/lib/libc.so
+ bf89a0fc b743671c /system/lib/libc.so
+ bf89a100 bf89a12c [stack]
+ bf89a104 b743671c /system/lib/libc.so
+ bf89a108 bf89a12c [stack]
+ bf89a10c b735e9e5 /system/lib/libc.so (abort+81)
+ #03 bf89a110 00000006
+ bf89a114 bf89a12c [stack]
+ bf89a118 00000000
+ bf89a11c b55a3d3b /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::DefaultLogHandler(google::protobuf::LogLevel, char const*, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)+99)
+ bf89a120 b7439468 /system/lib/libc.so
+ bf89a124 b55ba38d /system/lib/libprotobuf-cpp-lite.so
+ bf89a128 b55ba408 /system/lib/libprotobuf-cpp-lite.so
+ bf89a12c ffffffdf
+ bf89a130 0000003d
+ bf89a134 adfedf00 [anon:libc_malloc]
+ bf89a138 bf89a158 [stack]
+ #04 bf89a13c a0cee7f0 /data/app/com.example.app-2/base.apk
+ bf89a140 b55c1cb0 /system/lib/libprotobuf-cpp-lite.so
+ bf89a144 bf89a1e4 [stack]
+'''
+
+# Expected value of _TEST_STACK after translation of addresses in the APK
+# into offsets into libraries.
+_EXPECTED_STACK = r'''stack:
+ bf89a070 b7439468 /system/lib/libc.so
+ bf89a074 bf89a1e4 [stack]
+ bf89a078 932d4000 /data/app/com.example.app-2/base.apk
+ bf89a07c b73bfbc9 /system/lib/libc.so (pthread_mutex_lock+65)
+ bf89a080 00000000
+ bf89a084 4000671c /dev/ashmem/dalvik-main space 1 (deleted)
+ bf89a088 932d1d86 /data/app/com.example.app-2/base.apk
+ bf89a08c b743671c /system/lib/libc.so
+ bf89a090 b77f8c00 /system/bin/linker
+ bf89a094 b743cc90
+ bf89a098 932d1d4a /data/app/com.example.app-2/base.apk
+ bf89a09c b73bf271 /system/lib/libc.so (__pthread_internal_find(long)+65)
+ bf89a0a0 b743cc90
+ bf89a0a4 bf89a0b0 [stack]
+ bf89a0a8 bf89a0b8 [stack]
+ bf89a0ac 00000008
+ ........ ........
+ #00 bf89a0b0 00000006
+ bf89a0b4 00000002
+ bf89a0b8 b743671c /system/lib/libc.so
+ bf89a0bc b73bf5d9 /system/lib/libc.so (pthread_kill+71)
+ #01 bf89a0c0 00006937
+ bf89a0c4 00006937
+ bf89a0c8 00000006
+ bf89a0cc b77fd3a9 /system/bin/app_process32 (sigprocmask+141)
+ bf89a0d0 00000002
+ bf89a0d4 bf89a0ec [stack]
+ bf89a0d8 00000000
+ bf89a0dc b743671c /system/lib/libc.so
+ bf89a0e0 bf89a12c [stack]
+ bf89a0e4 bf89a1e4 [stack]
+ bf89a0e8 932d1d4a /data/app/com.example.app-2/base.apk
+ bf89a0ec b7365206 /system/lib/libc.so (raise+37)
+ #02 bf89a0f0 b77f8c00 /system/bin/linker
+ bf89a0f4 00000006
+ bf89a0f8 b7439468 /system/lib/libc.so
+ bf89a0fc b743671c /system/lib/libc.so
+ bf89a100 bf89a12c [stack]
+ bf89a104 b743671c /system/lib/libc.so
+ bf89a108 bf89a12c [stack]
+ bf89a10c b735e9e5 /system/lib/libc.so (abort+81)
+ #03 bf89a110 00000006
+ bf89a114 bf89a12c [stack]
+ bf89a118 00000000
+ bf89a11c b55a3d3b /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::DefaultLogHandler(google::protobuf::LogLevel, char const*, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)+99)
+ bf89a120 b7439468 /system/lib/libc.so
+ bf89a124 b55ba38d /system/lib/libprotobuf-cpp-lite.so
+ bf89a128 b55ba408 /system/lib/libprotobuf-cpp-lite.so
+ bf89a12c ffffffdf
+ bf89a130 0000003d
+ bf89a134 adfedf00 [anon:libc_malloc]
+ bf89a138 bf89a158 [stack]
+ #04 bf89a13c a0cee7f0 /data/app/com.example.app-2/base.apk
+ bf89a140 b55c1cb0 /system/lib/libprotobuf-cpp-lite.so
+ bf89a144 bf89a1e4 [stack]
+'''
+
+_TEST_BACKTRACE = r'''backtrace:
+ #00 pc 00084126 /system/lib/libc.so (tgkill+22)
+ #01 pc 000815d8 /system/lib/libc.so (pthread_kill+70)
+ #02 pc 00027205 /system/lib/libc.so (raise+36)
+ #03 pc 000209e4 /system/lib/libc.so (abort+80)
+ #04 pc 0000cf73 /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::LogMessage::Finish()+117)
+ #05 pc 0000cf8e /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::LogFinisher::operator=(google::protobuf::internal::LogMessage&)+26)
+ #06 pc 0000d27f /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::VerifyVersion(int, int, char const*)+574)
+ #07 pc 007cd236 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #08 pc 000111a9 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0xbfc2000)
+ #09 pc 00013228 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0xbfc2000)
+ #10 pc 000131de /data/app/com.google.android.apps.chrome-2/base.apk (offset 0xbfc2000)
+ #11 pc 007cd2d8 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #12 pc 007cd956 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #13 pc 007c2d4a /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #14 pc 009fc9f1 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #15 pc 009fc8ea /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #16 pc 00561c63 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #17 pc 0106fbdb /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #18 pc 004d7371 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #19 pc 004d8159 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #20 pc 004d7b96 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #21 pc 004da4b6 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #22 pc 005ab66c /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x7daa000)
+ #23 pc 005afca2 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x7daa000)
+ #24 pc 0000cae8 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x598d000)
+ #25 pc 00ce864f /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x7daa000)
+ #26 pc 00ce8dfa /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x7daa000)
+ #27 pc 00ce74c6 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x7daa000)
+ #28 pc 00004616 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x961e000)
+ #29 pc 00ce8215 /data/app/com.google.android.apps.chrome-2/base.apk (offset 0x7daa000)
+ #30 pc 0013d8c7 /system/lib/libart.so (art_quick_generic_jni_trampoline+71)
+ #31 pc 00137c52 /system/lib/libart.so (art_quick_invoke_static_stub+418)
+ #32 pc 00143651 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+353)
+ #33 pc 005e06ae /system/lib/libart.so (artInterpreterToCompiledCodeBridge+190)
+ #34 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #35 pc 0032cfc0 /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+160)
+ #36 pc 000fc703 /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+29891)
+ #37 pc 00300af7 /system/lib/libart.so (artInterpreterToInterpreterBridge+188)
+ #38 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #39 pc 0032cfc0 /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+160)
+ #40 pc 000fc703 /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+29891)
+ #41 pc 00300af7 /system/lib/libart.so (artInterpreterToInterpreterBridge+188)
+ #42 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #43 pc 0032ebf9 /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+297)
+ #44 pc 000fc955 /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+30485)
+ #45 pc 00300af7 /system/lib/libart.so (artInterpreterToInterpreterBridge+188)
+ #46 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #47 pc 0033090c /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+636)
+ #48 pc 000fc67f /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+29759)
+ #49 pc 00300700 /system/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame*)+128)
+ #50 pc 00667c73 /system/lib/libart.so (artQuickToInterpreterBridge+808)
+ #51 pc 0013d98d /system/lib/libart.so (art_quick_to_interpreter_bridge+77)
+ #52 pc 7264bc5b /data/dalvik-cache/x86/system@framework@boot.oat (offset 0x1eb2000)
+'''
+
+_EXPECTED_BACKTRACE = r'''backtrace:
+ #00 pc 00084126 /system/lib/libc.so (tgkill+22)
+ #01 pc 000815d8 /system/lib/libc.so (pthread_kill+70)
+ #02 pc 00027205 /system/lib/libc.so (raise+36)
+ #03 pc 000209e4 /system/lib/libc.so (abort+80)
+ #04 pc 0000cf73 /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::LogMessage::Finish()+117)
+ #05 pc 0000cf8e /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::LogFinisher::operator=(google::protobuf::internal::LogMessage&)+26)
+ #06 pc 0000d27f /system/lib/libprotobuf-cpp-lite.so (google::protobuf::internal::VerifyVersion(int, int, char const*)+574)
+ #07 pc 007cd236 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #08 pc 000111a9 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libprotobuf_lite.cr.so (offset 0x1c000)
+ #09 pc 00013228 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libprotobuf_lite.cr.so (offset 0x1c000)
+ #10 pc 000131de /data/app/com.google.android.apps.chrome-2/base.apk!lib/libprotobuf_lite.cr.so (offset 0x1c000)
+ #11 pc 007cd2d8 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #12 pc 007cd956 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #13 pc 007c2d4a /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #14 pc 009fc9f1 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #15 pc 009fc8ea /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #16 pc 00561c63 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #17 pc 0106fbdb /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #18 pc 004d7371 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #19 pc 004d8159 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #20 pc 004d7b96 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #21 pc 004da4b6 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #22 pc 005ab66c /data/app/com.google.android.apps.chrome-2/base.apk!lib/libcontent.cr.so (offset 0xc2d000)
+ #23 pc 005afca2 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libcontent.cr.so (offset 0xc2d000)
+ #24 pc 0000cae8 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so (offset 0x90e000)
+ #25 pc 00ce864f /data/app/com.google.android.apps.chrome-2/base.apk!lib/libcontent.cr.so (offset 0xc2d000)
+ #26 pc 00ce8dfa /data/app/com.google.android.apps.chrome-2/base.apk!lib/libcontent.cr.so (offset 0xc2d000)
+ #27 pc 00ce74c6 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libcontent.cr.so (offset 0xc2d000)
+ #28 pc 00004616 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libembedder.cr.so (offset 0x28000)
+ #29 pc 00ce8215 /data/app/com.google.android.apps.chrome-2/base.apk!lib/libcontent.cr.so (offset 0xc2d000)
+ #30 pc 0013d8c7 /system/lib/libart.so (art_quick_generic_jni_trampoline+71)
+ #31 pc 00137c52 /system/lib/libart.so (art_quick_invoke_static_stub+418)
+ #32 pc 00143651 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+353)
+ #33 pc 005e06ae /system/lib/libart.so (artInterpreterToCompiledCodeBridge+190)
+ #34 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #35 pc 0032cfc0 /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+160)
+ #36 pc 000fc703 /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+29891)
+ #37 pc 00300af7 /system/lib/libart.so (artInterpreterToInterpreterBridge+188)
+ #38 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #39 pc 0032cfc0 /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+160)
+ #40 pc 000fc703 /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+29891)
+ #41 pc 00300af7 /system/lib/libart.so (artInterpreterToInterpreterBridge+188)
+ #42 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #43 pc 0032ebf9 /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+297)
+ #44 pc 000fc955 /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+30485)
+ #45 pc 00300af7 /system/lib/libart.so (artInterpreterToInterpreterBridge+188)
+ #46 pc 00328b5d /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+445)
+ #47 pc 0033090c /system/lib/libart.so (bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+636)
+ #48 pc 000fc67f /system/lib/libart.so (art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)+29759)
+ #49 pc 00300700 /system/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame*)+128)
+ #50 pc 00667c73 /system/lib/libart.so (artQuickToInterpreterBridge+808)
+ #51 pc 0013d98d /system/lib/libart.so (art_quick_to_interpreter_bridge+77)
+ #52 pc 7264bc5b /data/dalvik-cache/x86/system@framework@boot.oat (offset 0x1eb2000)
+'''
+
+_EXPECTED_BACKTRACE_OFFSETS_MAP = {
+ '/data/app/com.google.android.apps.chrome-2/base.apk!lib/libprotobuf_lite.cr.so':
+ set([
+ 0x1c000 + 0x111a9,
+ 0x1c000 + 0x13228,
+ 0x1c000 + 0x131de,
+ ]),
+
+ '/data/app/com.google.android.apps.chrome-2/base.apk!lib/libchrome.cr.so':
+ set([
+ 0x90e000 + 0x7cd236,
+ 0x90e000 + 0x7cd2d8,
+ 0x90e000 + 0x7cd956,
+ 0x90e000 + 0x7c2d4a,
+ 0x90e000 + 0x9fc9f1,
+ 0x90e000 + 0x9fc8ea,
+ 0x90e000 + 0x561c63,
+ 0x90e000 + 0x106fbdb,
+ 0x90e000 + 0x4d7371,
+ 0x90e000 + 0x4d8159,
+ 0x90e000 + 0x4d7b96,
+ 0x90e000 + 0x4da4b6,
+ 0x90e000 + 0xcae8,
+ ]),
+ '/data/app/com.google.android.apps.chrome-2/base.apk!lib/libcontent.cr.so':
+ set([
+ 0xc2d000 + 0x5ab66c,
+ 0xc2d000 + 0x5afca2,
+ 0xc2d000 + 0xce864f,
+ 0xc2d000 + 0xce8dfa,
+ 0xc2d000 + 0xce74c6,
+ 0xc2d000 + 0xce8215,
+ ]),
+ '/data/app/com.google.android.apps.chrome-2/base.apk!lib/libembedder.cr.so':
+ set([
+ 0x28000 + 0x4616,
+ ])
+}
+
+# pylint: enable=line-too-long
+
+_ONE_MB = 1024 * 1024
+_TEST_SYMBOL_DATA = {
+ # Regular symbols
+ 0: 'mock_sym_for_addr_0 [mock_src/libmock1.so.c:0]',
+ 0x1000: 'mock_sym_for_addr_4096 [mock_src/libmock1.so.c:4096]',
+
+ # Symbols without source file path.
+ _ONE_MB: 'mock_sym_for_addr_1048576 [??:0]',
+ _ONE_MB + 0x8234: 'mock_sym_for_addr_1081908 [??:0]',
+
+ # Unknown symbol.
+ 2 * _ONE_MB: '?? [??:0]',
+
+ # Inlined symbol.
+ 3 * _ONE_MB:
+ 'mock_sym_for_addr_3145728_inner [mock_src/libmock1.so.c:3145728]',
+}
+
+@contextlib.contextmanager
+def _TempDir():
+ dirname = tempfile.mkdtemp()
+ try:
+ yield dirname
+ finally:
+ shutil.rmtree(dirname)
+
+
+def _TouchFile(path):
+ # Create parent directories.
+ try:
+ os.makedirs(os.path.dirname(path))
+ except OSError:
+ pass
+ with open(path, 'a'):
+ os.utime(path, None)
+
+class MockApkTranslator(object):
+ """A mock ApkLibraryPathTranslator object used for testing."""
+
+ # Regex that matches the content of APK native library map files generated
+ # with apk_lib_dump.py.
+ _RE_MAP_FILE = re.compile(
+ r'0x(?P<file_start>[0-9a-f]+)\s+' +
+ r'0x(?P<file_end>[0-9a-f]+)\s+' +
+ r'0x(?P<file_size>[0-9a-f]+)\s+' +
+ r'0x(?P<lib_path>[0-9a-f]+)\s+')
+
+ def __init__(self, test_apk_libs=None):
+ """Initialize instance.
+
+ Args:
+ test_apk_libs: Optional list of (file_start, file_end, size, lib_path)
+ tuples, like _TEST_APK_LIBS for example. This will be used to
+ implement TranslatePath().
+ """
+ self._apk_libs = []
+ if test_apk_libs:
+ self._AddLibEntries(test_apk_libs)
+
+ def _AddLibEntries(self, entries):
+ self._apk_libs = sorted(self._apk_libs + entries,
+ lambda x, y: cmp(x[0], y[0]))
+
+ def ReadMapFile(self, file_path):
+ """Read an .apk.native-libs file that was produced with apk_lib_dump.py.
+
+ Args:
+ file_path: input path to .apk.native-libs file. Its format is
+ essentially: 0x<start> 0x<end> 0x<size> <library-path>
+ """
+ new_libs = []
+ with open(file_path) as f:
+ for line in f.readlines():
+ m = MockApkTranslator._RE_MAP_FILE.match(line)
+ if m:
+ file_start = int(m.group('file_start'), 16)
+ file_end = int(m.group('file_end'), 16)
+ file_size = int(m.group('file_size'), 16)
+ lib_path = m.group('lib_path')
+ # Sanity check
+ if file_start + file_size != file_end:
+ logging.warning('%s: Inconsistent (start, end, size) values '
+ '(0x%x, 0x%x, 0x%x)',
+ file_path, file_start, file_end, file_size)
+ else:
+ new_libs.append((file_start, file_end, file_size, lib_path))
+
+ self._AddLibEntries(new_libs)
+
+ def TranslatePath(self, lib_path, lib_offset):
+ """Translate an APK file path + offset into a library path + offset."""
+ min_pos = 0
+ max_pos = len(self._apk_libs)
+ while min_pos < max_pos:
+ mid_pos = (min_pos + max_pos) / 2
+ mid_entry = self._apk_libs[mid_pos]
+ mid_offset = mid_entry[0]
+ mid_size = mid_entry[2]
+ if lib_offset < mid_offset:
+ max_pos = mid_pos
+ elif lib_offset >= mid_offset + mid_size:
+ min_pos = mid_pos + 1
+ else:
+ # Found it
+ new_path = '%s!lib/%s' % (lib_path, mid_entry[3])
+ new_offset = lib_offset - mid_offset
+ return (new_path, new_offset)
+
+ return lib_path, lib_offset
+
+
+class HostLibraryFinderTest(unittest.TestCase):
+
+ def testEmpty(self):
+ finder = symbol_utils.HostLibraryFinder()
+ self.assertIsNone(finder.Find('/data/data/com.example.app-1/lib/libfoo.so'))
+ self.assertIsNone(
+ finder.Find('/data/data/com.example.app-1/base.apk!lib/libfoo.so'))
+
+
+ def testSimpleDirectory(self):
+ finder = symbol_utils.HostLibraryFinder()
+ with _TempDir() as tmp_dir:
+ host_libfoo_path = os.path.join(tmp_dir, 'libfoo.so')
+ host_libbar_path = os.path.join(tmp_dir, 'libbar.so')
+ _TouchFile(host_libfoo_path)
+ _TouchFile(host_libbar_path)
+
+ finder.AddSearchDir(tmp_dir)
+
+ # Regular library path (extracted at installation by the PackageManager).
+ # Note that the extraction path has changed between Android releases,
+ # i.e. it can be /data/app/, /data/data/ or /data/app-lib/ depending
+ # on the system.
+ self.assertEqual(
+ host_libfoo_path,
+ finder.Find('/data/app-lib/com.example.app-1/lib/libfoo.so'))
+
+ # Verify that the path doesn't really matter
+ self.assertEqual(
+ host_libfoo_path,
+ finder.Find('/whatever/what.apk!lib/libfoo.so'))
+
+ self.assertEqual(
+ host_libbar_path,
+ finder.Find('/data/data/com.example.app-1/lib/libbar.so'))
+
+ self.assertIsNone(
+ finder.Find('/data/data/com.example.app-1/lib/libunknown.so'))
+
+
+ def testMultipleDirectories(self):
+ with _TempDir() as tmp_dir:
+ # Create the following files:
+ # <tmp_dir>/aaa/
+ # libfoo.so
+ # <tmp_dir>/bbb/
+ # libbar.so
+ # libfoo.so (this one should never be seen because 'aaa'
+ # shall be first in the search path list).
+ #
+ aaa_dir = os.path.join(tmp_dir, 'aaa')
+ bbb_dir = os.path.join(tmp_dir, 'bbb')
+ os.makedirs(aaa_dir)
+ os.makedirs(bbb_dir)
+
+ host_libfoo_path = os.path.join(aaa_dir, 'libfoo.so')
+ host_libbar_path = os.path.join(bbb_dir, 'libbar.so')
+ host_libfoo2_path = os.path.join(bbb_dir, 'libfoo.so')
+
+ _TouchFile(host_libfoo_path)
+ _TouchFile(host_libbar_path)
+ _TouchFile(host_libfoo2_path)
+
+ finder = symbol_utils.HostLibraryFinder()
+ finder.AddSearchDir(aaa_dir)
+ finder.AddSearchDir(bbb_dir)
+
+ self.assertEqual(
+ host_libfoo_path,
+ finder.Find('/data/data/com.example.app-1/lib/libfoo.so'))
+
+ self.assertEqual(
+ host_libfoo_path,
+ finder.Find('/data/whatever/base.apk!lib/libfoo.so'))
+
+ self.assertEqual(
+ host_libbar_path,
+ finder.Find('/data/data/com.example.app-1/lib/libbar.so'))
+
+ self.assertIsNone(
+ finder.Find('/data/data/com.example.app-1/lib/libunknown.so'))
+
+
+class ElfSymbolResolverTest(unittest.TestCase):
+
+ def testCreation(self):
+ resolver = symbol_utils.ElfSymbolResolver(
+ addr2line_path_for_tests=_MOCK_A2L_PATH)
+ self.assertTrue(resolver)
+
+ def testWithSimpleOffsets(self):
+ resolver = symbol_utils.ElfSymbolResolver(
+ addr2line_path_for_tests=_MOCK_A2L_PATH)
+ resolver.SetAndroidAbi('ignored-abi')
+
+ for addr, expected_sym in _TEST_SYMBOL_DATA.iteritems():
+ self.assertEqual(resolver.FindSymbolInfo('/some/path/libmock1.so', addr),
+ expected_sym)
+
+ def testWithPreResolvedSymbols(self):
+ resolver = symbol_utils.ElfSymbolResolver(
+ addr2line_path_for_tests=_MOCK_A2L_PATH)
+ resolver.SetAndroidAbi('ignored-abi')
+ resolver.AddLibraryOffsets('/some/path/libmock1.so',
+ _TEST_SYMBOL_DATA.keys())
+
+ resolver.DisallowSymbolizerForTesting()
+
+ for addr, expected_sym in _TEST_SYMBOL_DATA.iteritems():
+ sym_info = resolver.FindSymbolInfo('/some/path/libmock1.so', addr)
+ self.assertIsNotNone(sym_info, 'None symbol info for addr %x' % addr)
+ self.assertEqual(
+ sym_info, expected_sym,
+ 'Invalid symbol info for addr %x [%s] expected [%s]' % (
+ addr, sym_info, expected_sym))
+
+
+class MemoryMapTest(unittest.TestCase):
+
+ def testCreation(self):
+ mem_map = symbol_utils.MemoryMap('test-abi32')
+ self.assertIsNone(mem_map.FindSectionForAddress(0))
+
+ def testParseLines(self):
+ mem_map = symbol_utils.MemoryMap('test-abi32')
+ mem_map.ParseLines(_TEST_MEMORY_MAP.splitlines())
+ for exp_addr, exp_size, exp_path, exp_offset in _TEST_MEMORY_MAP_SECTIONS:
+ text = '(addr:%x, size:%x, path:%s, offset=%x)' % (
+ exp_addr, exp_size, exp_path, exp_offset)
+
+ t = mem_map.FindSectionForAddress(exp_addr)
+ self.assertTrue(t, 'Could not find %s' % text)
+ self.assertEqual(t.address, exp_addr)
+ self.assertEqual(t.size, exp_size)
+ self.assertEqual(t.offset, exp_offset)
+ self.assertEqual(t.path, exp_path)
+
+ def testTranslateLine(self):
+ android_abi = 'test-abi'
+ apk_translator = MockApkTranslator(_TEST_APK_LIBS)
+ mem_map = symbol_utils.MemoryMap(android_abi)
+ for line, expected_line in zip(_TEST_MEMORY_MAP.splitlines(),
+ _EXPECTED_TEST_MEMORY_MAP.splitlines()):
+ self.assertEqual(mem_map.TranslateLine(line, apk_translator),
+ expected_line)
+
+class StackTranslatorTest(unittest.TestCase):
+
+ def testSimpleStack(self):
+ android_abi = 'test-abi32'
+ mem_map = symbol_utils.MemoryMap(android_abi)
+ mem_map.ParseLines(_TEST_MEMORY_MAP)
+ apk_translator = MockApkTranslator(_TEST_APK_LIBS)
+ stack_translator = symbol_utils.StackTranslator(android_abi, mem_map,
+ apk_translator)
+ input_stack = _TEST_STACK.splitlines()
+ expected_stack = _EXPECTED_STACK.splitlines()
+ self.assertEqual(len(input_stack), len(expected_stack))
+ for stack_line, expected_line in zip(input_stack, expected_stack):
+ new_line = stack_translator.TranslateLine(stack_line)
+ self.assertEqual(new_line, expected_line)
+
+
+class MockSymbolResolver(symbol_utils.SymbolResolver):
+
+ # A regex matching a symbol definition as it appears in a test symbol file.
+ # Format is: <hex-offset> <whitespace> <symbol-string>
+ _RE_SYMBOL_DEFINITION = re.compile(
+ r'(?P<offset>[0-9a-f]+)\s+(?P<symbol>.*)')
+
+ def __init__(self):
+ super(MockSymbolResolver, self).__init__()
+ self._map = collections.defaultdict(dict)
+
+ def AddTestLibrarySymbols(self, lib_name, offsets_map):
+ """Add a new test entry for a given library name.
+
+ Args:
+ lib_name: Library name (e.g. 'libfoo.so')
+ offsets_map: A mapping from offsets to symbol info strings.
+ """
+ self._map[lib_name] = offsets_map
+
+ def ReadTestFile(self, file_path, lib_name):
+ """Read a single test symbol file, matching a given library.
+
+ Args:
+ file_path: Input file path.
+ lib_name: Library name these symbols correspond to (e.g. 'libfoo.so')
+ """
+ with open(file_path) as f:
+ for line in f.readlines():
+ line = line.rstrip()
+ m = MockSymbolResolver._RE_SYMBOL_DEFINITION.match(line)
+ if m:
+ offset = int(m.group('offset'))
+ symbol = m.group('symbol')
+ self._map[lib_name][offset] = symbol
+
+ def ReadTestFilesInDir(self, dir_path, file_suffix):
+ """Read all symbol test files in a given directory.
+
+ Args:
+ dir_path: Directory path.
+ file_suffix: File suffix used to detect test symbol files.
+ """
+ for filename in os.listdir(dir_path):
+ if filename.endswith(file_suffix):
+ lib_name = filename[:-len(file_suffix)]
+ self.ReadTestFile(os.path.join(dir_path, filename), lib_name)
+
+ def FindSymbolInfo(self, device_path, device_offset):
+ """Implement SymbolResolver.FindSymbolInfo."""
+ lib_name = os.path.basename(device_path)
+ offsets = self._map.get(lib_name)
+ if not offsets:
+ return None
+
+ return offsets.get(device_offset)
+
+
+class BacktraceTranslatorTest(unittest.TestCase):
+
+ def testEmpty(self):
+ android_abi = 'test-abi'
+ apk_translator = MockApkTranslator()
+ backtrace_translator = symbol_utils.BacktraceTranslator(android_abi,
+ apk_translator)
+ self.assertTrue(backtrace_translator)
+
+ def testFindLibraryOffsets(self):
+ android_abi = 'test-abi'
+ apk_translator = MockApkTranslator(_TEST_APK_LIBS)
+ backtrace_translator = symbol_utils.BacktraceTranslator(android_abi,
+ apk_translator)
+ input_backtrace = _EXPECTED_BACKTRACE.splitlines()
+ expected_lib_offsets_map = _EXPECTED_BACKTRACE_OFFSETS_MAP
+ offset_map = backtrace_translator.FindLibraryOffsets(input_backtrace)
+ for lib_path, offsets in offset_map.iteritems():
+ self.assertTrue(lib_path in expected_lib_offsets_map,
+ '%s is not in expected library-offsets map!' % lib_path)
+ sorted_offsets = sorted(offsets)
+ sorted_expected_offsets = sorted(expected_lib_offsets_map[lib_path])
+ self.assertEqual(sorted_offsets, sorted_expected_offsets,
+ '%s has invalid offsets %s expected %s' % (
+ lib_path, sorted_offsets, sorted_expected_offsets))
+
+ def testTranslateLine(self):
+ android_abi = 'test-abi'
+ apk_translator = MockApkTranslator(_TEST_APK_LIBS)
+ backtrace_translator = symbol_utils.BacktraceTranslator(android_abi,
+ apk_translator)
+ input_backtrace = _TEST_BACKTRACE.splitlines()
+ expected_backtrace = _EXPECTED_BACKTRACE.splitlines()
+ self.assertEqual(len(input_backtrace), len(expected_backtrace))
+ for trace_line, expected_line in zip(input_backtrace, expected_backtrace):
+ line = backtrace_translator.TranslateLine(trace_line,
+ MockSymbolResolver())
+ self.assertEqual(line, expected_line)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/chromium/build/android/pylib/utils/app_bundle_utils.py b/chromium/build/android/pylib/utils/app_bundle_utils.py
new file mode 100644
index 00000000000..946e62661ba
--- /dev/null
+++ b/chromium/build/android/pylib/utils/app_bundle_utils.py
@@ -0,0 +1,66 @@
+# Copyright 2018 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.
+
+import logging
+import os
+import sys
+
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'gyp'))
+
+from util import build_utils
+from util import md5_check
+import bundletool
+
+def GenerateBundleApks(bundle_path, bundle_apks_path, aapt2_path,
+ keystore_path, keystore_password, keystore_alias):
+ """Generate an .apks archive from a an app bundle if needed.
+
+ Args:
+ bundle_path: Input bundle file path.
+ bundle_apks_path: Output bundle .apks archive path. Name must end with
+ '.apks' or this operation will fail.
+ aapt2_path: Path to aapt2 build tool.
+ keystore_path: Path to keystore.
+ keystore_password: Keystore password, as a string.
+ keystore_alias: Keystore signing key alias.
+ """
+ # NOTE: BUNDLETOOL_JAR_PATH is added to input_strings, rather than
+ # input_paths, to speed up MD5 computations by about 400ms (the .jar file
+ # contains thousands of class files which are checked independently,
+ # resulting in an .md5.stamp of more than 60000 lines!).
+ input_paths = [
+ bundle_path,
+ aapt2_path,
+ keystore_path
+ ]
+ input_strings = [
+ keystore_password,
+ keystore_alias,
+ bundletool.BUNDLETOOL_JAR_PATH,
+ # NOTE: BUNDLETOOL_VERSION is already part of BUNDLETOOL_JAR_PATH, but
+ # it's simpler to assume that this may not be the case in the future.
+ bundletool.BUNDLETOOL_VERSION
+ ]
+ output_paths = [bundle_apks_path]
+
+ def rebuild():
+ logging.info('Building %s', os.path.basename(bundle_apks_path))
+ with build_utils.AtomicOutput(bundle_apks_path) as tmp_apks:
+ cmd_args = [
+ 'java', '-jar', bundletool.BUNDLETOOL_JAR_PATH, 'build-apks',
+ '--aapt2=%s' % aapt2_path,
+ '--output=%s' % tmp_apks.name,
+ '--bundle=%s' % bundle_path,
+ '--ks=%s' % keystore_path,
+ '--ks-pass=pass:%s' % keystore_password,
+ '--ks-key-alias=%s' % keystore_alias,
+ '--overwrite',
+ ]
+ build_utils.CheckOutput(cmd_args)
+
+ md5_check.CallAndRecordIfStale(
+ rebuild,
+ input_paths=input_paths,
+ input_strings=input_strings,
+ output_paths=output_paths)
diff --git a/chromium/build/android/pylib/utils/device_dependencies.py b/chromium/build/android/pylib/utils/device_dependencies.py
index 6481d43881f..bccc1c37a67 100644
--- a/chromium/build/android/pylib/utils/device_dependencies.py
+++ b/chromium/build/android/pylib/utils/device_dependencies.py
@@ -16,6 +16,7 @@ _BLACKLIST = [
re.compile(r'.*\.py'), # Some test_support targets include python deps.
re.compile(r'.*\.stamp'), # Stamp files should never be included.
re.compile(r'.*\.apk'), # Should be installed separately.
+ re.compile(r'.*lib.java/.*'), # Never need java intermediates.
# Chrome external extensions config file.
re.compile(r'.*external_extensions\.json'),
diff --git a/chromium/build/android/pylib/utils/google_storage_helper.py b/chromium/build/android/pylib/utils/google_storage_helper.py
index 3101d71439a..d184810517a 100644
--- a/chromium/build/android/pylib/utils/google_storage_helper.py
+++ b/chromium/build/android/pylib/utils/google_storage_helper.py
@@ -79,10 +79,7 @@ def exists(name, bucket):
cmd = [_GSUTIL_PATH, '-q', 'stat', gs_path]
return_code = cmd_helper.RunCmd(cmd)
- if return_code == 0:
- return True
- else:
- return False
+ return return_code == 0
# TODO(jbudorick): Delete this function. Only one user of it.
diff --git a/chromium/build/android/pylib/utils/logdog_helper.py b/chromium/build/android/pylib/utils/logdog_helper.py
index 58fe7814bea..68a7ba57ab7 100644
--- a/chromium/build/android/pylib/utils/logdog_helper.py
+++ b/chromium/build/android/pylib/utils/logdog_helper.py
@@ -92,4 +92,3 @@ def get_viewer_url(name):
def get_logdog_client():
logging.info('Getting logdog client.')
return bootstrap.ButlerBootstrap.probe().stream_client()
-
diff --git a/chromium/build/android/pylib/utils/maven_downloader.py b/chromium/build/android/pylib/utils/maven_downloader.py
index c5b0badf29c..c60b0140acc 100755
--- a/chromium/build/android/pylib/utils/maven_downloader.py
+++ b/chromium/build/android/pylib/utils/maven_downloader.py
@@ -36,7 +36,8 @@ class MavenDownloader(object):
_REMOTE_REPO = 'https://maven.google.com'
# Default Maven repository.
- _DEFAULT_REPO_PATH = os.path.join(os.getenv('HOME'), '.m2', 'repository')
+ _DEFAULT_REPO_PATH = os.path.join(
+ os.path.expanduser('~'), '.m2', 'repository')
def __init__(self, debug=False):
self._repo_path = MavenDownloader._DEFAULT_REPO_PATH
diff --git a/chromium/build/android/pylib/utils/proguard.py b/chromium/build/android/pylib/utils/proguard.py
index c243ce9c9f3..2d439a52c32 100644
--- a/chromium/build/android/pylib/utils/proguard.py
+++ b/chromium/build/android/pylib/utils/proguard.py
@@ -31,15 +31,13 @@ _PROGUARD_ELEMENT_RES = [
_PROGUARD_INDENT_WIDTH = 2
_PROGUARD_ANNOTATION_VALUE_RE = re.compile(r'^(\s*?)- \S+? \[(.*)\]$')
-_PROGUARD_PATH_SDK = os.path.join(
- constants.PROGUARD_ROOT, 'lib', 'proguard.jar')
-_PROGUARD_PATH_BUILT = (
- os.path.join(os.environ['ANDROID_BUILD_TOP'], 'external', 'proguard',
- 'lib', 'proguard.jar')
- if 'ANDROID_BUILD_TOP' in os.environ else None)
-_PROGUARD_PATH = (
- _PROGUARD_PATH_SDK if os.path.exists(_PROGUARD_PATH_SDK)
- else _PROGUARD_PATH_BUILT)
+
+def _GetProguardPath():
+ # Use the one in lib.java rather than source tree because it is the one that
+ # is added to swarming .isolate files.
+ return os.path.join(
+ constants.GetOutDirectory(), 'lib.java', 'third_party', 'proguard',
+ 'proguard603.jar')
def Dump(jar_path):
@@ -96,7 +94,7 @@ def Dump(jar_path):
with tempfile.NamedTemporaryFile() as proguard_output:
cmd_helper.GetCmdStatusAndOutput([
'java',
- '-jar', _PROGUARD_PATH,
+ '-jar', _GetProguardPath(),
'-injars', jar_path,
'-dontshrink', '-dontoptimize', '-dontobfuscate', '-dontpreverify',
'-dump', proguard_output.name])
diff --git a/chromium/build/android/pylib/valgrind_tools.py b/chromium/build/android/pylib/valgrind_tools.py
index 3dc2488b269..4c27b083b7a 100644
--- a/chromium/build/android/pylib/valgrind_tools.py
+++ b/chromium/build/android/pylib/valgrind_tools.py
@@ -127,4 +127,3 @@ def PushFilesForTool(tool_name, device):
print 'Unknown tool %s, available tools: %s' % (
tool_name, ', '.join(sorted(TOOL_REGISTRY.keys())))
sys.exit(1)
-
diff --git a/chromium/build/android/pylintrc b/chromium/build/android/pylintrc
index 8005a5d276c..2a721bf2709 100644
--- a/chromium/build/android/pylintrc
+++ b/chromium/build/android/pylintrc
@@ -4,7 +4,7 @@ max-line-length=80
[MESSAGES CONTROL]
-disable=abstract-class-not-used,bad-continuation,bad-indentation,duplicate-code,fixme,invalid-name,locally-disabled,locally-enabled,missing-docstring,star-args,too-few-public-methods,too-many-arguments,too-many-branches,too-many-instance-attributes,too-many-lines,too-many-locals,too-many-public-methods,too-many-statements,
+disable=abstract-class-not-used,bad-continuation,bad-indentation,duplicate-code,fixme,invalid-name,locally-disabled,locally-enabled,missing-docstring,star-args,too-few-public-methods,too-many-arguments,too-many-branches,too-many-instance-attributes,too-many-lines,too-many-locals,too-many-public-methods,too-many-statements,wrong-import-position
[REPORTS]
diff --git a/chromium/build/android/resource_sizes.py b/chromium/build/android/resource_sizes.py
index 6287d9842e4..d87a8e25a62 100755
--- a/chromium/build/android/resource_sizes.py
+++ b/chromium/build/android/resource_sizes.py
@@ -99,9 +99,9 @@ _BASE_CHART = {
}
_DUMP_STATIC_INITIALIZERS_PATH = os.path.join(
host_paths.DIR_SOURCE_ROOT, 'tools', 'linux', 'dump-static-initializers.py')
-# Pragma exists when enable_resource_whitelist_generation=true.
-_RC_HEADER_RE = re.compile(
- r'^#define (?P<name>\w+) (?:_Pragma\(.*?\) )?(?P<id>\d+)$')
+# Macro definitions look like (something, 123) when
+# enable_resource_whitelist_generation=true.
+_RC_HEADER_RE = re.compile(r'^#define (?P<name>\w+).* (?P<id>\d+)\)?$')
_RE_NON_LANGUAGE_PAK = re.compile(r'^assets/.*(resources|percent)\.pak$')
_RE_COMPRESSED_LANGUAGE_PAK = re.compile(
r'\.lpak$|^assets/(?!stored-locales/).*(?!resources|percent)\.pak$')
diff --git a/chromium/build/android/stacktrace/java_deobfuscate_test.py b/chromium/build/android/stacktrace/java_deobfuscate_test.py
index 58ab1e8f48a..6ee40ce5b5d 100755
--- a/chromium/build/android/stacktrace/java_deobfuscate_test.py
+++ b/chromium/build/android/stacktrace/java_deobfuscate_test.py
@@ -6,10 +6,14 @@
"""Tests for java_deobfuscate."""
import argparse
+import os
import subprocess
import sys
import tempfile
+import unittest
+# Set by command-line argument.
+_JAVA_DEOBFUSCATE_PATH = None
LINE_PREFIXES = [
'',
@@ -59,44 +63,75 @@ this.was.Deobfuscated: Error message
""".splitlines(True)
-def _RunTest(bin_path, map_file, prefix):
- cmd = [bin_path, map_file]
- payload = TEST_DATA
- expected_output = EXPECTED_OUTPUT
+class JavaDeobfuscateTest(unittest.TestCase):
- payload = [prefix + x for x in payload]
- expected_output = [prefix + x for x in expected_output]
+ def __init__(self, *args, **kwargs):
+ super(JavaDeobfuscateTest, self).__init__(*args, **kwargs)
+ self._map_file = None
- proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
- actual_output = proc.communicate(''.join(payload))[0].splitlines(True)
- any_unexpected_failures = False
- for actual, expected in zip(actual_output, expected_output):
- if actual == expected:
- sys.stdout.write('Good: ' + actual)
- elif actual.replace('bar', 'someMethod') == expected:
- # TODO(agrieve): Fix ReTrace's ability to deobfuscated methods.
- sys.stdout.write('Fine: ' + actual)
- else:
- sys.stdout.write('BAD: ' + actual)
- any_unexpected_failures = True
- return not any_unexpected_failures
+ def setUp(self):
+ self._map_file = tempfile.NamedTemporaryFile()
+ self._map_file.write(TEST_MAP)
+ self._map_file.flush()
+ def tearDown(self):
+ if self._map_file:
+ self._map_file.close()
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('path_to_java_deobfuscate')
- args = parser.parse_args()
+ def _testImpl(self, input_lines=None, expected_output_lines=None,
+ prefix=''):
+ self.assertTrue(bool(input_lines) == bool(expected_output_lines))
+
+ if not input_lines:
+ input_lines = [prefix + x for x in TEST_DATA]
+ if not expected_output_lines:
+ expected_output_lines = [prefix + x for x in EXPECTED_OUTPUT]
+
+ cmd = [_JAVA_DEOBFUSCATE_PATH, self._map_file.name]
+ proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+ proc_output, _ = proc.communicate(''.join(input_lines))
+ actual_output_lines = proc_output.splitlines(True)
+ for actual, expected in zip(actual_output_lines, expected_output_lines):
+ self.assertTrue(
+ actual == expected or actual.replace('bar', 'someMethod') == expected,
+ msg=''.join([
+ 'Deobfuscation failed.\n',
+ ' actual: %s' % actual,
+ ' expected: %s' % expected]))
+
+ def testNoPrefix(self):
+ self._testImpl(prefix='')
- with tempfile.NamedTemporaryFile() as map_file:
- map_file.write(TEST_MAP)
- map_file.flush()
- passed = True
- for prefix in LINE_PREFIXES:
- if not _RunTest(args.path_to_java_deobfuscate, map_file.name, prefix):
- passed = False
- print 'Result:', 'PASS' if passed else 'FAIL'
- sys.exit(int(not passed))
+ def testThreadtimePrefix(self):
+ self._testImpl(prefix='09-08 14:38:35.535 18029 18084 E qcom_sensors_hal: ')
+
+ def testStandardPrefix(self):
+ self._testImpl(prefix='W/GCM (15158): ')
+
+ def testStandardPrefixWithPadding(self):
+ self._testImpl(prefix='W/GCM ( 158): ')
+
+ @unittest.skip('causes java_deobfuscate to hang, see crbug.com/876539')
+ def testIndefiniteHang(self):
+ # Test for crbug.com/876539.
+ self._testImpl(
+ input_lines=[
+ 'VFY: unable to resolve virtual method 2: LFOO;'
+ + '.onDescendantInvalidated '
+ + '(Landroid/view/View;Landroid/view/View;)V',
+ ],
+ expected_output_lines=[
+ 'VFY: unable to resolve virtual method 2: Lthis.was.Deobfuscated;'
+ + '.onDescendantInvalidated '
+ + '(Landroid/view/View;Landroid/view/View;)V',
+ ])
if __name__ == '__main__':
- main()
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--java-deobfuscate-path', type=os.path.realpath,
+ required=True)
+ known_args, unittest_args = parser.parse_known_args()
+ _JAVA_DEOBFUSCATE_PATH = known_args.java_deobfuscate_path
+ unittest_args = [sys.argv[0]] + unittest_args
+ unittest.main(argv=unittest_args)
diff --git a/chromium/build/android/test_runner.py b/chromium/build/android/test_runner.py
index a83d9ab6950..8512accd1b9 100755
--- a/chromium/build/android/test_runner.py
+++ b/chromium/build/android/test_runner.py
@@ -25,6 +25,7 @@ import unittest
# See http://crbug.com/724524 and https://bugs.python.org/issue7980.
import _strptime # pylint: disable=unused-import
+# pylint: disable=ungrouped-imports
from pylib.constants import host_paths
if host_paths.DEVIL_PATH not in sys.path:
@@ -49,7 +50,6 @@ from pylib.utils import logging_utils
from py_utils import contextlib_ext
-
_DEVIL_STATIC_CONFIG_FILE = os.path.abspath(os.path.join(
host_paths.DIR_SOURCE_ROOT, 'build', 'android', 'devil_config.json'))
@@ -212,10 +212,12 @@ def AddCommonOptions(parser):
def ProcessCommonOptions(args):
"""Processes and handles all common options."""
run_tests_helper.SetLogLevel(args.verbose_count, add_handler=False)
+ # pylint: disable=redefined-variable-type
if args.verbose_count > 0:
handler = logging_utils.ColorStreamHandler()
else:
handler = logging.StreamHandler(sys.stdout)
+ # pylint: enable=redefined-variable-type
handler.setFormatter(run_tests_helper.CustomFormatter())
logging.getLogger().addHandler(handler)
@@ -429,6 +431,7 @@ def AddInstrumentationTestOptions(parser):
split_arg = arg.split(',')
if len(split_arg) != 2:
raise argparse.ArgumentError(
+ arg,
'Expected two comma-separated strings for --replace-system-package, '
'received %d' % len(split_arg))
PackageReplacement = collections.namedtuple('PackageReplacement',
diff --git a/chromium/build/check_gn_headers_whitelist.txt b/chromium/build/check_gn_headers_whitelist.txt
index 9547f354b76..a435ceb6207 100644
--- a/chromium/build/check_gn_headers_whitelist.txt
+++ b/chromium/build/check_gn_headers_whitelist.txt
@@ -51,7 +51,6 @@ chrome/browser/component_updater/component_installer_errors.h
chrome/browser/download/download_file_icon_extractor.h
chrome/browser/extensions/api/networking_cast_private/chrome_networking_cast_private_delegate.h
chrome/browser/extensions/api/omnibox/omnibox_api_testbase.h
-chrome/browser/extensions/api/socket/mock_tcp_client_socket.h
chrome/browser/mac/bluetooth_utility.h
chrome/browser/media/router/mojo/media_route_provider_util_win.h
chrome/browser/media/webrtc/desktop_media_list_ash.h
@@ -61,7 +60,6 @@ chrome/browser/media_galleries/media_file_system_context.h
chrome/browser/notifications/displayed_notifications_dispatch_callback.h
chrome/browser/permissions/permission_queue_controller.h
chrome/browser/prefs/active_profile_pref_service.h
-chrome/browser/rlz/chrome_rlz_tracker_delegate.h
chrome/browser/ui/android/content_settings/subresource_filter_infobar_delegate.h
chrome/browser/ui/app_icon_loader_delegate.h
chrome/browser/ui/app_list/app_list_syncable_service_factory.h
@@ -235,7 +233,6 @@ remoting/protocol/video_feedback_stub.h
remoting/protocol/video_stream.h
sandbox/linux/system_headers/capability.h
services/service_manager/public/c/main.h
-services/ui/ws/ids.h
skia/ext/convolver_mips_dspr2.h
skia/ext/skia_commit_hash.h
testing/gmock_mutant.h
@@ -346,7 +343,6 @@ third_party/woff2/src/port.h
third_party/yasm/source/config/linux/config.h
third_party/yasm/source/config/linux/libyasm-stdint.h
third_party/zlib/contrib/minizip/crypt.h
-tools/battor_agent/battor_protocol_types.h
tools/gn/ordered_set.h
tools/ipc_fuzzer/message_lib/all_message_null_macros.h
ui/app_list/app_list_export.h
@@ -362,7 +358,6 @@ ui/gl/GL/glextchromium.h
ui/gl/gl_bindings_api_autogen_egl.h
ui/gl/gl_bindings_api_autogen_gl.h
ui/gl/gl_bindings_api_autogen_glx.h
-ui/gl/gl_bindings_api_autogen_osmesa.h
ui/gl/gpu_preference.h
ui/gl/gpu_switching_observer.h
ui/ozone/ozone_base_export.h
diff --git a/chromium/build/chromeos/PRESUBMIT.py b/chromium/build/chromeos/PRESUBMIT.py
new file mode 100644
index 00000000000..5700f542bd0
--- /dev/null
+++ b/chromium/build/chromeos/PRESUBMIT.py
@@ -0,0 +1,24 @@
+# Copyright (c) 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.
+
+"""Presubmit script for build/chromeos/.
+
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for
+details on the presubmit API built into depot_tools.
+"""
+
+
+def CommonChecks(input_api, output_api):
+ return input_api.canned_checks.RunPylint(
+ input_api,
+ output_api,
+ pylintrc='pylintrc')
+
+
+def CheckChangeOnUpload(input_api, output_api):
+ return CommonChecks(input_api, output_api)
+
+
+def CheckChangeOnCommit(input_api, output_api):
+ return CommonChecks(input_api, output_api)
diff --git a/chromium/build/chromeos/create_vm_test_script.py b/chromium/build/chromeos/create_vm_test_script.py
index f14b81814cd..80a7dbb4467 100755
--- a/chromium/build/chromeos/create_vm_test_script.py
+++ b/chromium/build/chromeos/create_vm_test_script.py
@@ -10,7 +10,6 @@ build/chromeos/run_vm_test.py.
import argparse
import os
-import re
import sys
@@ -42,6 +41,7 @@ if __name__ == '__main__':
sys.exit(main())
"""
+
def main(args):
parser = argparse.ArgumentParser()
parser.add_argument('--script-output-path')
@@ -50,9 +50,9 @@ def main(args):
parser.add_argument('--runtime-deps-path')
parser.add_argument('--cros-cache')
parser.add_argument('--board')
+ parser.add_argument('--deploy-chrome', action='store_true')
args = parser.parse_args(args)
-
def RelativizePathToScript(path):
return os.path.relpath(path, os.path.dirname(args.script_output_path))
@@ -63,6 +63,7 @@ def main(args):
'--board', args.board,
'-v',
]
+
if args.test_exe:
vm_test_args.extend([
'vm-test',
@@ -71,6 +72,8 @@ def main(args):
])
else:
vm_test_args.append('host-cmd')
+ if args.deploy_chrome:
+ vm_test_args.append('--deploy-chrome')
vm_test_path_args = [
('--cros-cache', RelativizePathToScript(args.cros_cache)),
diff --git a/chromium/build/chromeos/pylintrc b/chromium/build/chromeos/pylintrc
new file mode 100644
index 00000000000..2a721bf2709
--- /dev/null
+++ b/chromium/build/chromeos/pylintrc
@@ -0,0 +1,15 @@
+[FORMAT]
+
+max-line-length=80
+
+[MESSAGES CONTROL]
+
+disable=abstract-class-not-used,bad-continuation,bad-indentation,duplicate-code,fixme,invalid-name,locally-disabled,locally-enabled,missing-docstring,star-args,too-few-public-methods,too-many-arguments,too-many-branches,too-many-instance-attributes,too-many-lines,too-many-locals,too-many-public-methods,too-many-statements,wrong-import-position
+
+[REPORTS]
+
+reports=no
+
+[VARIABLES]
+
+dummy-variables-rgx=^_.*$|dummy
diff --git a/chromium/build/chromeos/run_vm_test.py b/chromium/build/chromeos/run_vm_test.py
index bbc2089c629..f392ca4e95e 100755
--- a/chromium/build/chromeos/run_vm_test.py
+++ b/chromium/build/chromeos/run_vm_test.py
@@ -5,16 +5,15 @@
# found in the LICENSE file.
import argparse
-import contextlib
import json
import logging
import os
import re
import signal
-import stat
import sys
+import tempfile
-import psutil
+import psutil # pylint: disable=import-error
CHROMIUM_SRC_PATH = os.path.abspath(os.path.join(
os.path.dirname(__file__), '..', '..'))
@@ -22,268 +21,364 @@ CHROMIUM_SRC_PATH = os.path.abspath(os.path.join(
# Use the android test-runner's gtest results support library for generating
# output json ourselves.
sys.path.insert(0, os.path.join(CHROMIUM_SRC_PATH, 'build', 'android'))
-from pylib.base import base_test_result
-from pylib.results import json_results
+from pylib.base import base_test_result # pylint: disable=import-error
+from pylib.results import json_results # pylint: disable=import-error
# Use luci-py's subprocess42.py
sys.path.insert(
0, os.path.join(CHROMIUM_SRC_PATH, 'tools', 'swarming_client', 'utils'))
-import subprocess42
+import subprocess42 # pylint: disable=import-error
CHROMITE_PATH = os.path.abspath(os.path.join(
CHROMIUM_SRC_PATH, 'third_party', 'chromite'))
CROS_RUN_VM_TEST_PATH = os.path.abspath(os.path.join(
CHROMITE_PATH, 'bin', 'cros_run_vm_test'))
+# GN target that corresponds to the cros browser sanity test.
+SANITY_TEST_TARGET = 'cros_vm_sanity_test'
-_FILE_BLACKLIST = [
- re.compile(r'.*build/chromeos.*'),
- re.compile(r'.*build/cros_cache.*'),
- re.compile(r'.*third_party/chromite.*'),
-]
+class TestFormatError(Exception):
+ pass
-def read_runtime_files(runtime_deps_path, outdir):
- if not runtime_deps_path:
- return []
- abs_runtime_deps_path = os.path.abspath(
- os.path.join(outdir, runtime_deps_path))
- with open(abs_runtime_deps_path) as runtime_deps_file:
- files = [l.strip() for l in runtime_deps_file if l]
- rel_file_paths = []
- for f in files:
- rel_file_path = os.path.relpath(
- os.path.abspath(os.path.join(outdir, f)),
- os.getcwd())
- if not any(regex.match(rel_file_path) for regex in _FILE_BLACKLIST):
- rel_file_paths.append(rel_file_path)
+class RemoteTest(object):
- return rel_file_paths
+ def __init__(self, args, unknown_args):
+ self._additional_args = unknown_args
+ self._path_to_outdir = args.path_to_outdir
+ self._test_exe = args.test_exe
+ self._test_launcher_summary_output = args.test_launcher_summary_output
+ self._vm_logs_dir = args.vm_logs_dir
+ self._test_env = os.environ.copy()
+ self._retries = 0
+ self._timeout = None
-def host_cmd(args, unknown_args):
- if not args.cmd:
- logging.error('Must specify command to run on the host.')
- return 1
- elif unknown_args:
- logging.error(
- 'Args "%s" unsupported. Is your host command correctly formatted?',
- ' '.join(unknown_args))
- return 1
+ self._vm_test_cmd = [
+ CROS_RUN_VM_TEST_PATH,
+ '--start',
+ '--board', args.board,
+ '--cache-dir', args.cros_cache,
+ ]
+ if args.vm_logs_dir:
+ self._vm_test_cmd += [
+ '--results-src', '/var/log/',
+ '--results-dest-dir', args.vm_logs_dir,
+ ]
- cros_run_vm_test_cmd = [
- CROS_RUN_VM_TEST_PATH,
- '--start',
- '--board', args.board,
- '--cache-dir', args.cros_cache,
+ @property
+ def vm_test_cmd(self):
+ return self._vm_test_cmd
+
+ def run_test(self):
+ # Traps SIGTERM and kills all child processes of cros_run_vm_test when it's
+ # caught. This will allow us to capture logs from the VM if a test hangs
+ # and gets timeout-killed by swarming. See also:
+ # https://chromium.googlesource.com/infra/luci/luci-py/+/master/appengine/swarming/doc/Bot.md#graceful-termination_aka-the-sigterm-and-sigkill-dance
+ test_proc = None
+ def _kill_child_procs(trapped_signal, _):
+ logging.warning(
+ 'Received signal %d. Killing child processes of test.',
+ trapped_signal)
+ if not test_proc or not test_proc.pid:
+ # This shouldn't happen?
+ logging.error('Test process not running.')
+ return
+ for child in psutil.Process(test_proc.pid).children():
+ logging.warning('Killing process %s', child)
+ child.kill()
+
+ signal.signal(signal.SIGTERM, _kill_child_procs)
+
+ for i in xrange(self._retries+1):
+ logging.info('########################################')
+ logging.info('Test attempt #%d', i)
+ logging.info('########################################')
+ test_proc = subprocess42.Popen(
+ self._vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr,
+ env=self._test_env)
+ try:
+ test_proc.wait(timeout=self._timeout)
+ except subprocess42.TimeoutExpired:
+ logging.error('Test timed out. Sending SIGTERM.')
+ # SIGTERM the proc and wait 10s for it to close.
+ test_proc.terminate()
+ try:
+ test_proc.wait(timeout=10)
+ except subprocess42.TimeoutExpired:
+ # If it hasn't closed in 10s, SIGKILL it.
+ logging.error('Test did not exit in time. Sending SIGKILL.')
+ test_proc.kill()
+ test_proc.wait()
+ logging.info('Test exitted with %d.', test_proc.returncode)
+ if test_proc.returncode == 0:
+ break
+
+ self.post_run(test_proc.returncode)
+ return test_proc.returncode
+
+ def post_run(self, return_code):
+ raise NotImplementedError()
+
+
+class GTestTest(RemoteTest):
+
+ _FILE_BLACKLIST = [
+ re.compile(r'.*build/chromeos.*'),
+ re.compile(r'.*build/cros_cache.*'),
+ re.compile(r'.*third_party/chromite.*'),
]
- if args.verbose:
- cros_run_vm_test_cmd.append('--debug')
- cros_run_vm_test_cmd += [
- '--host-cmd',
- '--',
- ] + args.cmd
+ def __init__(self, args, unknown_args):
+ super(GTestTest, self).__init__(args, unknown_args)
+
+ self._runtime_deps_path = args.runtime_deps_path
+ self._vpython_dir = args.vpython_dir
+
+ self._test_launcher_shard_index = args.test_launcher_shard_index
+ self._test_launcher_total_shards = args.test_launcher_total_shards
+
+ self._on_vm_script = None
+
+ def build_test_command(self):
+ # To keep things easy for us, ensure both types of output locations are
+ # the same.
+ if self._test_launcher_summary_output and self._vm_logs_dir:
+ json_out_dir = os.path.dirname(self._test_launcher_summary_output) or '.'
+ if os.path.abspath(json_out_dir) != os.path.abspath(self._vm_logs_dir):
+ raise TestFormatError(
+ '--test-launcher-summary-output and --vm-logs-dir must point to '
+ 'the same directory.')
+
+ if self._test_launcher_summary_output:
+ result_dir, result_file = os.path.split(
+ self._test_launcher_summary_output)
+ # If args.test_launcher_summary_output is a file in cwd, result_dir will
+ # be an empty string, so replace it with '.' when this is the case so
+ # cros_run_vm_test can correctly handle it.
+ if not result_dir:
+ result_dir = '.'
+ vm_result_file = '/tmp/%s' % result_file
+ self._vm_test_cmd += [
+ '--results-src', vm_result_file,
+ '--results-dest-dir', result_dir,
+ ]
- logging.info('Running the following command:')
- logging.info(' '.join(cros_run_vm_test_cmd))
+ # Build the shell script that will be used on the VM to invoke the test.
+ vm_test_script_contents = ['#!/bin/sh']
- return subprocess42.call(
- cros_run_vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr)
+ # /home is mounted with "noexec" in the VM, but some of our tools
+ # and tests use the home dir as a workspace (eg: vpython downloads
+ # python binaries to ~/.vpython-root). /tmp doesn't have this
+ # restriction, so change the location of the home dir for the
+ # duration of the test.
+ vm_test_script_contents.append('export HOME=/tmp')
+ if self._vpython_dir:
+ vpython_spec_path = os.path.relpath(
+ os.path.join(CHROMIUM_SRC_PATH, '.vpython'),
+ self._path_to_outdir)
+ # Initialize the vpython cache. This can take 10-20s, and some tests
+ # can't afford to wait that long on the first invocation.
+ vm_test_script_contents.extend([
+ 'export PATH=$PATH:$PWD/%s' % (self._vpython_dir),
+ 'vpython -vpython-spec %s -vpython-tool install' % (
+ vpython_spec_path),
+ ])
+
+ test_invocation = (
+ './%s --test-launcher-shard-index=%d '
+ '--test-launcher-total-shards=%d' % (
+ self._test_exe, self._test_launcher_shard_index,
+ self._test_launcher_total_shards)
+ )
+ if self._test_launcher_summary_output:
+ test_invocation += ' --test-launcher-summary-output=%s' % vm_result_file
+ if self._additional_args:
+ test_invocation += ' %s' % ' '.join(self._additional_args)
+ vm_test_script_contents.append(test_invocation)
+
+ logging.info('Running the following command in the VM:')
+ logging.info('\n'.join(vm_test_script_contents))
+ fd, tmp_path = tempfile.mkstemp(suffix='.sh', dir=self._path_to_outdir)
+ os.fchmod(fd, 0755)
+ with os.fdopen(fd, 'wb') as f:
+ f.write('\n'.join(vm_test_script_contents))
+ self._on_vm_script = tmp_path
+
+ runtime_files = [os.path.relpath(self._on_vm_script)]
+ runtime_files += self._read_runtime_files()
+ if self._vpython_dir:
+ # --vpython-dir is relative to the out dir, but --files expects paths
+ # relative to src dir, so fix the path up a bit.
+ runtime_files.append(
+ os.path.relpath(
+ os.path.abspath(os.path.join(self._path_to_outdir,
+ self._vpython_dir)),
+ CHROMIUM_SRC_PATH))
+ # TODO(bpastene): Add the vpython spec to the test's runtime deps instead
+ # of handling it here.
+ runtime_files.append('.vpython')
+
+ # Since we're pushing files, we need to set the cwd.
+ self._vm_test_cmd.extend(
+ ['--cwd', os.path.relpath(self._path_to_outdir, CHROMIUM_SRC_PATH)])
+ for f in runtime_files:
+ self._vm_test_cmd.extend(['--files', f])
+
+ self._vm_test_cmd += [
+ # Some tests fail as root, so run as the less privileged user 'chronos'.
+ '--as-chronos',
+ '--cmd',
+ '--',
+ './' + os.path.relpath(self._on_vm_script, self._path_to_outdir)
+ ]
-def vm_test(args, unknown_args):
- is_sanity_test = args.test_exe == 'cros_vm_sanity_test'
-
- # To keep things easy for us, ensure both types of output locations are
- # the same.
- if args.test_launcher_summary_output and args.vm_logs_dir:
- json_output_dir = os.path.dirname(args.test_launcher_summary_output) or '.'
- if os.path.abspath(json_output_dir) != os.path.abspath(args.vm_logs_dir):
- logging.error(
- '--test-launcher-summary-output and --vm-logs-dir must point to '
- 'the same directory.')
- return 1
+ def _read_runtime_files(self):
+ if not self._runtime_deps_path:
+ return []
- cros_run_vm_test_cmd = [
- CROS_RUN_VM_TEST_PATH,
- '--start',
- '--board', args.board,
- '--cache-dir', args.cros_cache,
- ]
+ abs_runtime_deps_path = os.path.abspath(
+ os.path.join(self._path_to_outdir, self._runtime_deps_path))
+ with open(abs_runtime_deps_path) as runtime_deps_file:
+ files = [l.strip() for l in runtime_deps_file if l]
+ rel_file_paths = []
+ for f in files:
+ rel_file_path = os.path.relpath(
+ os.path.abspath(os.path.join(self._path_to_outdir, f)))
+ if not any(regex.match(rel_file_path) for regex in self._FILE_BLACKLIST):
+ rel_file_paths.append(rel_file_path)
+ return rel_file_paths
- # cros_run_vm_test has trouble with relative paths that go up directories, so
- # cd to src/, which should be the root of all data deps.
- os.chdir(CHROMIUM_SRC_PATH)
+ def post_run(self, _):
+ if self._on_vm_script:
+ os.remove(self._on_vm_script)
- runtime_files = read_runtime_files(
- args.runtime_deps_path, args.path_to_outdir)
- if args.vpython_dir:
- # --vpython-dir is relative to the out dir, but --files expects paths
- # relative to src dir, so fix the path up a bit.
- runtime_files.append(
- os.path.relpath(
- os.path.abspath(os.path.join(args.path_to_outdir,
- args.vpython_dir)),
- CHROMIUM_SRC_PATH))
- runtime_files.append('.vpython')
-
- # If we're pushing files, we need to set the cwd.
- if runtime_files:
- cros_run_vm_test_cmd.extend(
- ['--cwd', os.path.relpath(args.path_to_outdir, CHROMIUM_SRC_PATH)])
- for f in runtime_files:
- cros_run_vm_test_cmd.extend(['--files', f])
-
- if args.vm_logs_dir:
- cros_run_vm_test_cmd += [
- '--results-src', '/var/log/',
- '--results-dest-dir', args.vm_logs_dir,
- ]
- if args.test_launcher_summary_output and not is_sanity_test:
- result_dir, result_file = os.path.split(args.test_launcher_summary_output)
- # If args.test_launcher_summary_output is a file in cwd, result_dir will be
- # an empty string, so replace it with '.' when this is the case so
- # cros_run_vm_test can correctly handle it.
- if not result_dir:
- result_dir = '.'
- vm_result_file = '/tmp/%s' % result_file
- cros_run_vm_test_cmd += [
- '--results-src', vm_result_file,
- '--results-dest-dir', result_dir,
- ]
+class BrowserSanityTest(RemoteTest):
+
+ def __init__(self, args, unknown_args):
+ super(BrowserSanityTest, self).__init__(args, unknown_args)
+
+ # 5 min should be enough time for the sanity test to pass.
+ self._retries = 2
+ self._timeout = 300
+
+ def build_test_command(self):
+ if '--gtest_filter=%s' % SANITY_TEST_TARGET in self._additional_args:
+ logging.info(
+ 'GTest filtering not supported for the sanity test. The '
+ '--gtest_filter arg will be ignored.')
+ self._additional_args.remove('--gtest_filter=%s' % SANITY_TEST_TARGET)
+
+ if self._additional_args:
+ raise TestFormatError(
+ 'Sanity test should not have additional args: %s' % (
+ self._additional_args))
- if is_sanity_test:
# run_cros_vm_test's default behavior when no cmd is specified is the sanity
# test that's baked into the VM image. This test smoke-checks the system
# browser, so deploy our locally-built chrome to the VM before testing.
- cros_run_vm_test_cmd += [
+ self._vm_test_cmd += [
'--deploy',
- '--build-dir', os.path.relpath(args.path_to_outdir, CHROMIUM_SRC_PATH),
+ '--build-dir', os.path.relpath(self._path_to_outdir, CHROMIUM_SRC_PATH),
]
+
+ # deploy_chrome needs a set of GN args used to build chrome to determine if
+ # certain libraries need to be pushed to the VM. It looks for the args via
+ # an env var. To trigger the default deploying behavior, give it a dummy set
+ # of args.
+ # TODO(crbug.com/823996): Make the GN-dependent deps controllable via cmd
+ # line args.
+ if not self._test_env.get('GN_ARGS'):
+ self._test_env['GN_ARGS'] = 'is_chromeos = true'
+ self._test_env['PATH'] = (
+ self._test_env['PATH'] + ':' + os.path.join(CHROMITE_PATH, 'bin'))
+
+ def post_run(self, return_code):
+ # Create a simple json results file for the sanity test if needed. The
+ # results will contain only one test (SANITY_TEST_TARGET), and will
+ # either be a PASS or FAIL depending on the return code of cros_run_vm_test.
+ if self._test_launcher_summary_output:
+ result = (base_test_result.ResultType.FAIL if return_code else
+ base_test_result.ResultType.PASS)
+ sanity_test_result = base_test_result.BaseTestResult(
+ SANITY_TEST_TARGET, result)
+ run_results = base_test_result.TestRunResults()
+ run_results.AddResult(sanity_test_result)
+ with open(self._test_launcher_summary_output, 'w') as f:
+ json.dump(json_results.GenerateResultsDict([run_results]), f)
+
+
+def vm_test(args, unknown_args):
+ # cros_run_vm_test has trouble with relative paths that go up directories,
+ # so cd to src/, which should be the root of all data deps.
+ os.chdir(CHROMIUM_SRC_PATH)
+
+ # pylint: disable=redefined-variable-type
+ # TODO: Remove the above when depot_tool's pylint is updated to include the
+ # fix to https://github.com/PyCQA/pylint/issues/710.
+ if args.test_exe == SANITY_TEST_TARGET:
+ test = BrowserSanityTest(args, unknown_args)
else:
- pre_test_cmds = [
- # /home is mounted with "noexec" in the VM, but some of our tools
- # and tests use the home dir as a workspace (eg: vpython downloads
- # python binaries to ~/.vpython-root). /tmp doesn't have this
- # restriction, so change the location of the home dir for the
- # duration of the test.
- 'export HOME=/tmp', '\;',
- ]
- if args.vpython_dir:
- vpython_spec_path = os.path.relpath(
- os.path.join(CHROMIUM_SRC_PATH, '.vpython'),
- args.path_to_outdir)
- pre_test_cmds += [
- # Backslash is needed to prevent $PATH from getting prematurely
- # executed on the host.
- 'export PATH=\$PATH:\$PWD/%s' % args.vpython_dir, '\;',
- # Initialize the vpython cache. This can take 10-20s, and some tests
- # can't afford to wait that long on the first invocation.
- 'vpython', '-vpython-spec', vpython_spec_path, '-vpython-tool',
- 'install', '\;',
- ]
- cros_run_vm_test_cmd += [
- # Some tests fail as root, so run as the less privileged user 'chronos'.
- '--as-chronos',
- '--cmd',
- '--',
- # Wrap the cmd to run in the VM around quotes (") so that the
- # interpreter on the host doesn't stop at any ";" or "&&" tokens in the
- # cmd.
- '"',
- ] + pre_test_cmds + [
- './' + args.test_exe,
- '--test-launcher-shard-index=%d' % args.test_launcher_shard_index,
- '--test-launcher-total-shards=%d' % args.test_launcher_total_shards,
- ] + unknown_args + [
- '"',
- ]
+ test = GTestTest(args, unknown_args)
+
+ test.build_test_command()
+ logging.info('Running the following command on the host:')
+ logging.info(' '.join(test.vm_test_cmd))
+
+ return test.run_test()
+
+
+def host_cmd(args, unknown_args):
+ if not args.cmd:
+ raise TestFormatError('Must specify command to run on the host.')
+ elif unknown_args:
+ raise TestFormatError(
+ 'Args "%s" unsupported. Is your host command correctly formatted?' % (
+ ' '.join(unknown_args)))
+ elif args.deploy_chrome and not args.path_to_outdir:
+ raise TestFormatError(
+ '--path-to-outdir must be specified if --deploy-chrome is passed.')
+
+ cros_run_vm_test_cmd = [
+ CROS_RUN_VM_TEST_PATH,
+ '--start',
+ '--board', args.board,
+ '--cache-dir', args.cros_cache,
+ ]
+ if args.verbose:
+ cros_run_vm_test_cmd.append('--debug')
- if args.test_launcher_summary_output and not is_sanity_test:
+ test_env = os.environ.copy()
+ if args.deploy_chrome:
cros_run_vm_test_cmd += [
- '--test-launcher-summary-output=%s' % vm_result_file,
+ '--deploy',
+ '--build-dir', os.path.abspath(args.path_to_outdir),
]
+ # If we're deploying, push chromite/bin's deploy_chrome onto PATH.
+ test_env['PATH'] = (
+ test_env['PATH'] + ':' + os.path.join(CHROMITE_PATH, 'bin'))
+ # deploy_chrome needs a set of GN args used to build chrome to determine if
+ # certain libraries need to be pushed to the VM. It looks for the args via
+ # an env var. To trigger the default deploying behavior, give it a dummy set
+ # of args.
+ # TODO(crbug.com/823996): Make the GN-dependent deps controllable via cmd
+ # line args.
+ if not test_env.get('GN_ARGS'):
+ test_env['GN_ARGS'] = 'is_chromeos = true'
+
+ cros_run_vm_test_cmd += [
+ '--host-cmd',
+ '--',
+ ] + args.cmd
logging.info('Running the following command:')
logging.info(' '.join(cros_run_vm_test_cmd))
- # deploy_chrome needs a set of GN args used to build chrome to determine if
- # certain libraries need to be pushed to the VM. It looks for the args via an
- # env var. To trigger the default deploying behavior, give it a dummy set of
- # args.
- # TODO(crbug.com/823996): Make the GN-dependent deps controllable via cmd-line
- # args.
- env_copy = os.environ.copy()
- if not env_copy.get('GN_ARGS'):
- env_copy['GN_ARGS'] = 'is_chromeos = true'
- env_copy['PATH'] = env_copy['PATH'] + ':' + os.path.join(CHROMITE_PATH, 'bin')
-
- # Traps SIGTERM and kills all child processes of cros_run_vm_test when it's
- # caught. This will allow us to capture logs from the VM if a test hangs
- # and gets timeout-killed by swarming. See also:
- # https://chromium.googlesource.com/infra/luci/luci-py/+/master/appengine/swarming/doc/Bot.md#graceful-termination_aka-the-sigterm-and-sigkill-dance
- test_proc = None
- def _kill_child_procs(trapped_signal, _):
- logging.warning(
- 'Received signal %d. Killing child processes of test.', trapped_signal)
- if not test_proc or not test_proc.pid:
- # This shouldn't happen?
- logging.error('Test process not running.')
- return
- for child in psutil.Process(test_proc.pid).children():
- logging.warning('Killing process %s', child)
- child.kill()
-
- # Standard GTests should handle retries and timeouts themselves.
- retries, timeout = 0, None
- if is_sanity_test:
- # 5 min should be enough time for the sanity test to pass.
- retries, timeout = 2, 300
- signal.signal(signal.SIGTERM, _kill_child_procs)
-
- for i in xrange(retries+1):
- logging.info('########################################')
- logging.info('Test attempt #%d', i)
- logging.info('########################################')
- test_proc = subprocess42.Popen(
- cros_run_vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr,
- env=env_copy)
- try:
- test_proc.wait(timeout=timeout)
- except subprocess42.TimeoutExpired:
- logging.error('Test timed out. Sending SIGTERM.')
- # SIGTERM the proc and wait 10s for it to close.
- test_proc.terminate()
- try:
- test_proc.wait(timeout=10)
- except subprocess42.TimeoutExpired:
- # If it hasn't closed in 10s, SIGKILL it.
- logging.error('Test did not exit in time. Sending SIGKILL.')
- test_proc.kill()
- test_proc.wait()
- logging.info('Test exitted with %d.', test_proc.returncode)
- if test_proc.returncode == 0:
- break
-
- rc = test_proc.returncode
-
- # Create a simple json results file for the sanity test if needed. The results
- # will contain only one test ('cros_vm_sanity_test'), and will either be a
- # PASS or FAIL depending on the return code of cros_run_vm_test above.
- if args.test_launcher_summary_output and is_sanity_test:
- result = (base_test_result.ResultType.FAIL if rc else
- base_test_result.ResultType.PASS)
- sanity_test_result = base_test_result.BaseTestResult(
- 'cros_vm_sanity_test', result)
- run_results = base_test_result.TestRunResults()
- run_results.AddResult(sanity_test_result)
- with open(args.test_launcher_summary_output, 'w') as f:
- json.dump(json_results.GenerateResultsDict([run_results]), f)
-
- return rc
+ return subprocess42.call(
+ cros_run_vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr, env=test_env)
def main():
@@ -301,6 +396,14 @@ def main():
host_cmd_parser.set_defaults(func=host_cmd)
host_cmd_parser.add_argument(
'--cros-cache', type=str, required=True, help='Path to cros cache.')
+ host_cmd_parser.add_argument(
+ '--path-to-outdir', type=os.path.realpath,
+ help='Path to output directory, all of whose contents will be deployed '
+ 'to the device.')
+ host_cmd_parser.add_argument(
+ '--deploy-chrome', action='store_true',
+ help='Will deploy a locally built Chrome binary to the VM before running '
+ 'the host-cmd.')
host_cmd_parser.add_argument('cmd', nargs=argparse.REMAINDER)
# VM-side test args.
vm_test_parser = subparsers.add_parser(
@@ -312,11 +415,11 @@ def main():
vm_test_parser.add_argument(
'--test-exe', type=str, required=True,
help='Path to test executable to run inside VM. If the value is '
- '"cros_vm_sanity_test", the sanity test that ships with the VM '
+ '%s, the sanity test that ships with the VM '
'image runs instead. This test smokes-check the system browser '
'(eg: loads a simple webpage, executes some javascript), so a '
'fully-built Chrome binary that can get deployed to the VM is '
- 'expected to available in the out-dir.')
+ 'expected to be available in the out-dir.' % SANITY_TEST_TARGET)
# GTest args. Some are passed down to the test binary in the VM. Others are
# parsed here since they might need tweaking or special handling.
diff --git a/chromium/build/compute_build_timestamp.py b/chromium/build/compute_build_timestamp.py
new file mode 100755
index 00000000000..a7191bb24c9
--- /dev/null
+++ b/chromium/build/compute_build_timestamp.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+# Copyright 2018 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.
+"""Returns a timestamp that approximates the build date.
+
+build_type impacts the timestamp generated, both relative to the date of the
+last recent commit:
+- default: the build date is set to the most recent first Sunday of a month at
+ 5:00am. The reason is that it is a time where invalidating the build cache
+ shouldn't have major reprecussions (due to lower load).
+- official: the build date is set to the current date at 5:00am, or the day
+ before if the current time is before 5:00am.
+Either way, it is guaranteed to be in the past and always in UTC.
+"""
+
+# The requirements for the timestamp:
+# (1) for the purposes of continuous integration, longer duration
+# between cache invalidation is better, but >=1mo is preferable.
+# (2) for security purposes, timebombs would ideally be as close to
+# the actual time of the build as possible. It must be in the past.
+# (3) HSTS certificate pinning is valid for 70 days. To make CI builds enforce
+# HTST pinning, <=1mo is preferable.
+#
+# On Windows, the timestamp is also written in the PE/COFF file header of
+# executables of dlls. That timestamp and the executable's file size are
+# the only two pieces of information that identify a given executable on
+# the symbol server, so rarely changing timestamps can cause conflicts there
+# as well. We only upload symbols for official builds to the symbol server.
+
+import argparse
+import calendar
+import datetime
+import doctest
+import os
+import sys
+
+
+THIS_DIR = os.path.abspath(os.path.dirname(__file__))
+
+
+def GetFirstSundayOfMonth(year, month):
+ """Returns the first sunday of the given month of the given year.
+
+ >>> GetFirstSundayOfMonth(2016, 2)
+ 7
+ >>> GetFirstSundayOfMonth(2016, 3)
+ 6
+ >>> GetFirstSundayOfMonth(2000, 1)
+ 2
+ """
+ weeks = calendar.Calendar().monthdays2calendar(year, month)
+ # Return the first day in the first week that is a Sunday.
+ return [date_day[0] for date_day in weeks[0] if date_day[1] == 6][0]
+
+
+def GetBuildDate(build_type, utc_now):
+ """Gets the approximate build date given the specific build type.
+
+ >>> GetBuildDate('default', datetime.datetime(2016, 2, 6, 1, 2, 3))
+ datetime.datetime(2016, 1, 3, 1, 2, 3)
+ >>> GetBuildDate('default', datetime.datetime(2016, 2, 7, 5))
+ datetime.datetime(2016, 2, 7, 5, 0)
+ >>> GetBuildDate('default', datetime.datetime(2016, 2, 8, 5))
+ datetime.datetime(2016, 2, 7, 5, 0)
+ >>> GetBuildDate('official', datetime.datetime(2016, 2, 8, 5))
+ datetime.datetime(2016, 2, 8, 5, 0)
+ """
+ day = utc_now.day
+ month = utc_now.month
+ year = utc_now.year
+ if build_type != 'official':
+ first_sunday = GetFirstSundayOfMonth(year, month)
+ # If our build is after the first Sunday, we've already refreshed our build
+ # cache on a quiet day, so just use that day.
+ # Otherwise, take the first Sunday of the previous month.
+ if day >= first_sunday:
+ day = first_sunday
+ else:
+ month -= 1
+ if month == 0:
+ month = 12
+ year -= 1
+ day = GetFirstSundayOfMonth(year, month)
+ return datetime.datetime(
+ year, month, day, utc_now.hour, utc_now.minute, utc_now.second)
+
+
+def main():
+ if doctest.testmod()[0]:
+ return 1
+ argument_parser = argparse.ArgumentParser()
+ argument_parser.add_argument(
+ 'build_type', help='The type of build', choices=('official', 'default'))
+ args = argument_parser.parse_args()
+
+ # The mtime of the revision in build/util/LASTCHANGE is stored in a file
+ # next to it. Read it, to get a deterministic time close to "now".
+ # That date is then modified as described at the top of the file so that
+ # it changes less frequently than with every commit.
+ # This intentionally always uses build/util/LASTCHANGE's commit time even if
+ # use_dummy_lastchange is set.
+ lastchange_file = os.path.join(THIS_DIR, 'util', 'LASTCHANGE.committime')
+ last_commit_timestamp = int(open(lastchange_file).read())
+ now = datetime.datetime.utcfromtimestamp(last_commit_timestamp)
+
+ if now.hour < 5:
+ # The time is locked at 5:00 am in UTC to cause the build cache
+ # invalidation to not happen exactly at midnight. Use the same calculation
+ # as the day before.
+ # See //base/build_time.cc.
+ now = now - datetime.timedelta(days=1)
+ now = datetime.datetime(now.year, now.month, now.day, 5, 0, 0)
+ build_date = GetBuildDate(args.build_type, now)
+ print int(calendar.timegm(build_date.utctimetuple()))
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/chromium/build/config/BUILD.gn b/chromium/build/config/BUILD.gn
index 997cdc85ec9..b3cb81ca05a 100644
--- a/chromium/build/config/BUILD.gn
+++ b/chromium/build/config/BUILD.gn
@@ -277,7 +277,7 @@ config("default_libs") {
}
# Only //build/config/BUILDCONFIG.gn should reference this.
-group("executable_and_loadable_module_and_shared_library_deps") {
+group("common_deps") {
public_deps = []
if (using_sanitizer) {
@@ -301,6 +301,27 @@ group("executable_and_loadable_module_and_shared_library_deps") {
}
}
+group("executable_deps") {
+ public_deps = [
+ ":common_deps",
+ ]
+ if (export_libcxxabi_from_executables) {
+ public_deps += [ "//buildtools/third_party/libc++abi" ]
+ }
+}
+
+group("loadable_module_deps") {
+ public_deps = [
+ ":common_deps",
+ ]
+}
+
+group("shared_library_deps") {
+ public_deps = [
+ ":common_deps",
+ ]
+}
+
# Executable configs -----------------------------------------------------------
# Windows linker setup for EXEs and DLLs.
diff --git a/chromium/build/config/BUILDCONFIG.gn b/chromium/build/config/BUILDCONFIG.gn
index fcc00ee0e49..387fdb2795a 100644
--- a/chromium/build/config/BUILDCONFIG.gn
+++ b/chromium/build/config/BUILDCONFIG.gn
@@ -522,7 +522,6 @@ default_compiler_configs = [
"//build/config/compiler:afdo",
"//build/config/compiler:afdo_optimize_size",
"//build/config/compiler:compiler",
- "//build/config/compiler:clang_stackrealign",
"//build/config/compiler:compiler_arm_fpu",
"//build/config/compiler:compiler_arm_thumb",
"//build/config/compiler:chromium_code",
@@ -530,6 +529,7 @@ default_compiler_configs = [
"//build/config/compiler:default_optimization",
"//build/config/compiler:default_stack_frames",
"//build/config/compiler:default_symbols",
+ "//build/config/compiler:export_dynamic",
"//build/config/compiler:no_exceptions",
"//build/config/compiler:no_rtti",
"//build/config/compiler:runtime_library",
@@ -577,10 +577,6 @@ if (is_clang && !is_nacl) {
]
}
-if (is_desktop_linux) {
- default_compiler_configs += [ "//build/config/linux:export_dynamic" ]
-}
-
# Debug/release-related defines.
if (is_debug) {
default_compiler_configs += [ "//build/config:debug" ]
@@ -651,20 +647,20 @@ set_defaults("loadable_module") {
#
# Variables
# no_default_deps: If true, no standard dependencies will be added.
-foreach(target_type,
+foreach(_target_type,
[
"executable",
"loadable_module",
"shared_library",
]) {
- template(target_type) {
- target(target_type, target_name) {
+ template(_target_type) {
+ target(_target_type, target_name) {
forward_variables_from(invoker, "*", [ "no_default_deps" ])
if (!defined(deps)) {
deps = []
}
if (!defined(invoker.no_default_deps) || !invoker.no_default_deps) {
- deps += [ "//build/config:executable_and_loadable_module_and_shared_library_deps" ]
+ deps += [ "//build/config:${_target_type}_deps" ]
}
}
}
diff --git a/chromium/build/config/allocator.gni b/chromium/build/config/allocator.gni
index 709f80f3563..6a144e1bde0 100644
--- a/chromium/build/config/allocator.gni
+++ b/chromium/build/config/allocator.gni
@@ -32,6 +32,9 @@ declare_args() {
# Partition alloc is included by default except iOS.
use_partition_alloc = !is_ios
+
+ # Use the new tcmalloc. It's relevant only when use_allocator == "tcmalloc".
+ use_new_tcmalloc = false
}
if (is_nacl) {
diff --git a/chromium/build/config/android/BUILD.gn b/chromium/build/config/android/BUILD.gn
index dbf6e4a99a5..5ebde213fbe 100644
--- a/chromium/build/config/android/BUILD.gn
+++ b/chromium/build/config/android/BUILD.gn
@@ -3,6 +3,7 @@
# found in the LICENSE file.
import("//build/config/android/config.gni")
+import("//build/config/compiler/compiler.gni")
import("//build/config/c++/c++.gni")
import("//build/config/sanitizers/sanitizers.gni")
@@ -81,12 +82,6 @@ config("compiler") {
rebase_path("$android_ndk_root/sysroot/usr/include/$abi_target",
root_build_dir),
"-D__ANDROID_API__=$compile_api_level",
-
- # Temporary workaround for third party dependencies requiring this to be
- # defined.
- # TODO(crbug.com/771171): Remove this once the third party deps have been
- # fixed to be compatible with newer NDK versions
- "-D__NDK_FPABI__=",
]
ldflags += [ "--target=$abi_target" ]
@@ -194,12 +189,14 @@ config("executable_config") {
config("hide_all_but_jni_onload") {
ldflags = [ "-Wl,--version-script=" + rebase_path(
- "//build/android/android_only_explicit_jni_exports.lst") ]
+ "//build/android/android_only_explicit_jni_exports.lst",
+ root_build_dir) ]
}
config("hide_all_but_jni") {
ldflags = [ "-Wl,--version-script=" +
- rebase_path("//build/android/android_only_jni_exports.lst") ]
+ rebase_path("//build/android/android_only_jni_exports.lst",
+ root_build_dir) ]
}
config("lld_pack_relocations") {
@@ -210,5 +207,10 @@ config("lld_pack_relocations") {
config("default_orderfile_instrumentation") {
if (use_order_profiling) {
cflags = [ "-finstrument-function-entry-bare" ]
+ if (use_thin_lto) {
+ # TODO(pcc): This should not be necessary. Remove once
+ # https://reviews.llvm.org/D50017 lands and gets rolled in.
+ ldflags = [ "-Wl,-u,__cyg_profile_func_enter_bare" ]
+ }
}
}
diff --git a/chromium/build/config/android/chrome_version.gni b/chromium/build/config/android/chrome_version.gni
new file mode 100644
index 00000000000..1531bf21701
--- /dev/null
+++ b/chromium/build/config/android/chrome_version.gni
@@ -0,0 +1,16 @@
+# Copyright 2018 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.
+
+import("//build/config/android/config.gni")
+import("//build/util/version.gni")
+
+chrome_version_name = android_default_version_name
+if (chrome_version_name == "Developer Build") {
+ # In general, let the versionName attribute in the APK be the real chromium
+ # version number. This is important for WebView/Monochrome, as we expose this
+ # in an API, but we implement this for other Chrome targets for consistency.
+ # We check for "Developer Build" so that we don't interfere with official
+ # builders (which currently set the version number with this GN arg).
+ chrome_version_name = chrome_version_full
+}
diff --git a/chromium/build/config/android/config.gni b/chromium/build/config/android/config.gni
index b919f1829e0..3799dad1b2f 100644
--- a/chromium/build/config/android/config.gni
+++ b/chromium/build/config/android/config.gni
@@ -8,6 +8,7 @@
# toolchain, this GNI file may be read and processed from within Chrome OS
# toolchains. Checking |is_android| here would therefore be too restrictive.
if (is_android || is_chromeos) {
+ import("//build/config/chromecast_build.gni")
import("//build_overrides/build.gni")
import("abi.gni")
@@ -116,11 +117,11 @@ if (is_android || is_chromeos) {
# google_play_services_package contains the path where individual client
# targets (e.g. google_play_services_base_java) are located.
if (!defined(google_play_services_package)) {
- google_play_services_package = "//third_party/android_tools"
- }
-
- if (!defined(android_support_library_package)) {
- android_support_library_package = "//third_party/android_tools/support"
+ if (is_chromecast && chromecast_branding != "public") {
+ google_play_services_package = "//chromecast/internal/android/prebuilt/google-play-services-first-party"
+ } else {
+ google_play_services_package = "//third_party/android_tools"
+ }
}
if (!defined(system_webview_apk_target)) {
@@ -167,9 +168,6 @@ if (is_android || is_chromeos) {
# The password for the keystore to use for signing builds.
android_keystore_password = default_android_keystore_password
- # Enables verbose proguard output (summaries and unfiltered output).
- proguard_verbose = false
-
# Java debug on Android. Having this on enables multidexing, and turning it
# off will enable proguard.
is_java_debug = is_debug
@@ -209,13 +207,16 @@ if (is_android || is_chromeos) {
# Refer to android_aar_prebuilt() for more details.
update_android_aar_prebuilts = false
- # When true, uses the third party libraries from //third_party/android_deps
- # over the ones in other places. (instead of the support library from
- # android_tools for example)
- enable_android_deps_repository = true
-
# Turns off android lint. Useful for prototyping or for faster local builds.
disable_android_lint = false
+
+ # Location of aapt2 binary used for app bundles. For now, a more recent version
+ # than the one distributed with the Android SDK is required.
+ android_sdk_tools_bundle_aapt2 =
+ "//third_party/android_build_tools/aapt2/aapt2"
+
+ # Path to r8.jar. If specified, will be used instead of ProGuard for optimization.
+ experimental_r8_path = ""
}
# We need a second declare_args block to make sure we are using the overridden
@@ -353,13 +354,6 @@ if (is_android || is_chromeos) {
if (android_libcpp_lib_dir == "") {
android_libcpp_lib_dir = "${android_libcpp_root}/libs/${android_app_abi}"
}
-
- declare_args() {
- # Location of aapt2 binary used for app bundles. For now, a more recent version
- # than the one distributed with the Android SDK is required.
- android_sdk_tools_bundle_aapt2 =
- "//third_party/android_build_tools/aapt2/aapt2"
- }
}
declare_args() {
diff --git a/chromium/build/config/android/internal_rules.gni b/chromium/build/config/android/internal_rules.gni
index 0de3860ccf5..46c6dae1d27 100644
--- a/chromium/build/config/android/internal_rules.gni
+++ b/chromium/build/config/android/internal_rules.gni
@@ -6,14 +6,15 @@
# Some projects (e.g. V8) do not have non-build directories DEPS'ed in.
import("//build_overrides/build.gni")
import("//build/config/android/config.gni")
-import("//build/config/compute_inputs_for_analyze.gni")
import("//build/config/dcheck_always_on.gni")
+import("//build/config/python.gni")
import("//build/config/sanitizers/sanitizers.gni")
assert(is_android)
# These identify targets that have .build_config files (except for android_apk,
-# java_binary, resource_rewriter, since we never need to depend on these).
+# java_binary, resource_rewriter, android_app_bundle since we never need to
+# depend on these).
_java_target_whitelist = [
"*:*_java",
"*:*_javalib",
@@ -30,6 +31,7 @@ _java_target_whitelist = [
"*:*_resources",
"*:*_grd",
"*:*locale_paks",
+ "*_module",
# TODO(agrieve): Rename targets below to match above patterns.
"*android_webview/glue:glue",
@@ -43,14 +45,6 @@ _java_target_blacklist = [
_default_proguard_jar_path = "//third_party/proguard/lib/proguard.jar"
-# List of .py files required when scripts import build_utils.py.
-# Use this for "inputs" for actions that rely on build_utils.py.
-build_utils_py = [
- "//build/android/gyp/util/build_utils.py",
- "//build/android/gyp/util/md5_check.py",
- "//build/gn_helpers.py",
-]
-
# Write the target's .build_config file. This is a json file that contains a
# dictionary of information about how to build this target (things that
# require knowledge about this target's dependencies and cannot be calculated
@@ -67,7 +61,8 @@ template("write_build_config") {
# consider them in dependency chains.
if (_type != "android_apk" && _type != "java_binary" &&
_type != "resource_rewriter" && _type != "dist_jar" &&
- _type != "java_annotation_processor" && _type != "dist_aar") {
+ _type != "java_annotation_processor" && _type != "dist_aar" &&
+ _type != "android_app_bundle") {
set_sources_assignment_filter(_java_target_whitelist)
_parent_invoker = invoker.invoker
_target_label =
@@ -88,7 +83,7 @@ template("write_build_config") {
sources = []
}
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -103,7 +98,7 @@ template("write_build_config") {
script = "//build/android/gyp/write_build_config.py"
depfile = "$target_gen_dir/$target_name.d"
- inputs = build_utils_py
+ inputs = []
outputs = [
invoker.build_config,
]
@@ -289,10 +284,15 @@ template("write_build_config") {
]
}
+ if (defined(invoker.loadable_modules) && invoker.loadable_modules != []) {
+ _rebased_modules = rebase_path(invoker.loadable_modules, root_build_dir)
+ args += [ "--native-libs=$_rebased_modules" ]
+ }
+
if (defined(invoker.extra_shared_libraries)) {
_rebased_extra_shared_libraries =
rebase_path(invoker.extra_shared_libraries, root_build_dir)
- args += [ "--extra-shared-libraries=$_rebased_extra_shared_libraries" ]
+ args += [ "--native-libs=$_rebased_extra_shared_libraries" ]
}
if (defined(invoker.secondary_abi_shared_libraries_runtime_deps_file)) {
@@ -306,6 +306,13 @@ template("write_build_config") {
]
}
+ if (defined(invoker.secondary_abi_loadable_modules) &&
+ invoker.secondary_abi_loadable_modules != []) {
+ _rebased_secondary_abi_modules =
+ rebase_path(invoker.secondary_abi_loadable_modules, root_build_dir)
+ args += [ "--secondary-native-libs=$_rebased_secondary_abi_modules" ]
+ }
+
if (defined(invoker.uncompress_shared_libraries) &&
invoker.uncompress_shared_libraries) {
args += [ "--uncompress-shared-libraries" ]
@@ -428,7 +435,7 @@ template("write_build_config") {
#
template("copy_ex") {
set_sources_assignment_filter([])
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"data",
@@ -441,9 +448,8 @@ template("copy_ex") {
if (defined(invoker.sources)) {
sources += invoker.sources
}
- inputs = build_utils_py
if (defined(invoker.inputs)) {
- inputs += invoker.inputs
+ inputs = invoker.inputs
}
script = "//build/android/gyp/copy_ex.py"
@@ -509,7 +515,7 @@ template("test_runner_script") {
}
}
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"data_deps",
@@ -523,7 +529,6 @@ template("test_runner_script") {
}
script = "//build/android/gyp/create_test_runner_script.py"
- inputs = build_utils_py
data_deps += [
"//build/android:test_runner_py",
@@ -621,25 +626,25 @@ template("test_runner_script") {
"--android-manifest-path",
rebase_path(invoker.android_manifest_path, root_build_dir),
]
- }
-
- if (defined(invoker.package_name)) {
+ } else if (defined(invoker.package_name)) {
test_runner_args += [
"--package-name",
invoker.package_name,
]
-
- deps += [ ":${invoker.test_suite}__build_config" ]
- _junit_binary_build_config =
- "${target_gen_dir}/${invoker.test_suite}.build_config"
- _rebased_build_config =
- rebase_path("$_junit_binary_build_config", root_build_dir)
- test_runner_args += [
- "--resource-zips",
- "@FileArg($_rebased_build_config:resources:dependency_zips)",
- ]
+ } else {
+ assert(false, "Must specify a package_name or android_manifest_path")
}
+ deps += [ ":${invoker.test_suite}__build_config" ]
+ _junit_binary_build_config =
+ "${target_gen_dir}/${invoker.test_suite}.build_config"
+ _rebased_build_config =
+ rebase_path("$_junit_binary_build_config", root_build_dir)
+ test_runner_args += [
+ "--resource-zips",
+ "@FileArg($_rebased_build_config:resources:dependency_zips)",
+ ]
+
test_runner_args += [
"--robolectric-runtime-deps-dir",
rebase_path("$root_build_dir/lib.java/third_party/robolectric",
@@ -715,15 +720,12 @@ template("test_runner_script") {
}
template("stack_script") {
- forward_variables_from(invoker, [ "testonly" ])
-
- _stack_target_name = invoker.stack_target_name
-
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"data_deps",
"deps",
+ "testonly",
])
if (!defined(deps)) {
deps = []
@@ -736,8 +738,8 @@ template("stack_script") {
[ "//third_party/android_platform/development/scripts:stack_py" ]
script = "//build/android/gyp/create_stack_script.py"
- inputs = build_utils_py
+ _stack_target_name = invoker.stack_target_name
_stack_script = "//third_party/android_platform/development/scripts/stack"
_generated_script = "$root_build_dir/bin/stack_${_stack_target_name}"
@@ -773,7 +775,7 @@ if (enable_java_templates) {
android_default_aapt2_path = "$android_sdk_build_tools/aapt2"
template("android_lint") {
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -801,10 +803,10 @@ if (enable_java_templates) {
script = "//build/android/gyp/lint.py"
depfile = "$target_gen_dir/$target_name.d"
- inputs = build_utils_py + [
- _platform_xml_path,
- _suppressions_file,
- ]
+ inputs = [
+ _platform_xml_path,
+ _suppressions_file,
+ ]
outputs = [
_result_path,
@@ -881,7 +883,7 @@ if (enable_java_templates) {
}
template("proguard") {
- action(target_name) {
+ action_with_pydeps(target_name) {
set_sources_assignment_filter([])
forward_variables_from(invoker,
[
@@ -902,21 +904,17 @@ if (enable_java_templates) {
_proguard_jar_path = invoker.proguard_jar_path
}
- inputs = build_utils_py + [
- "//build/android/gyp/util/proguard_util.py",
- _proguard_jar_path,
- invoker.build_config,
- ]
+ inputs = [
+ _proguard_jar_path,
+ invoker.build_config,
+ ]
if (defined(invoker.inputs)) {
inputs += invoker.inputs
}
depfile = "${target_gen_dir}/${target_name}.d"
outputs = [
_output_jar_path,
- "$_output_jar_path.flags",
"$_output_jar_path.mapping",
- "$_output_jar_path.seeds",
- "$_output_jar_path.usage",
]
_rebased_build_config = rebase_path(invoker.build_config, root_build_dir)
args = [
@@ -927,10 +925,15 @@ if (enable_java_templates) {
"--output-path",
rebase_path(_output_jar_path, root_build_dir),
"--classpath",
+ "@FileArg($_rebased_build_config:deps_info:proguard_classpath_jars)",
+ "--classpath",
"@FileArg($_rebased_build_config:android:sdk_jars)",
]
- if (proguard_verbose) {
- args += [ "--verbose" ]
+ if (experimental_r8_path != "") {
+ args += [
+ "--r8-path",
+ rebase_path(experimental_r8_path, root_build_dir),
+ ]
}
if (defined(invoker.args)) {
args += invoker.args
@@ -956,7 +959,7 @@ if (enable_java_templates) {
# class path when the script will invoke javac.
#
template("java_binary_script") {
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -968,7 +971,9 @@ if (enable_java_templates) {
_script_name = invoker.script_name
script = "//build/android/gyp/create_java_binary_script.py"
- inputs = build_utils_py + [ _build_config ]
+ inputs = [
+ _build_config,
+ ]
_java_script = "$root_build_dir/bin/$_script_name"
outputs = [
_java_script,
@@ -1013,7 +1018,7 @@ if (enable_java_templates) {
if (_enable_multidex) {
_main_dex_list_path = invoker.output + ".main_dex_list"
_main_dex_list_target_name = "${target_name}__main_dex_list"
- action(_main_dex_list_target_name) {
+ action_with_pydeps(_main_dex_list_target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -1036,13 +1041,12 @@ if (enable_java_templates) {
_shrinked_android = "$android_sdk_build_tools/lib/shrinkedAndroid.jar"
_dx = "$android_sdk_build_tools/lib/dx.jar"
- inputs = build_utils_py + [
- "//build/android/gyp/util/proguard_util.py",
- main_dex_rules,
- _dx,
- _proguard_jar_path,
- _shrinked_android,
- ]
+ inputs = [
+ main_dex_rules,
+ _dx,
+ _proguard_jar_path,
+ _shrinked_android,
+ ]
outputs = [
_main_dex_list_path,
@@ -1089,7 +1093,7 @@ if (enable_java_templates) {
}
assert(defined(invoker.output))
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -1097,7 +1101,7 @@ if (enable_java_templates) {
])
script = "//build/android/gyp/dex.py"
depfile = "$target_gen_dir/$target_name.d"
- inputs = build_utils_py
+ inputs = []
outputs = [
invoker.output,
]
@@ -1145,7 +1149,7 @@ if (enable_java_templates) {
}
template("emma_instr") {
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -1158,7 +1162,7 @@ if (enable_java_templates) {
_emma_jar = "${android_sdk_root}/tools/lib/emma.jar"
script = "//build/android/gyp/emma_instr.py"
- inputs = build_utils_py + invoker.java_files + [
+ inputs = invoker.java_files + [
_emma_jar,
invoker.input_jar_path,
]
@@ -1266,7 +1270,7 @@ if (enable_java_templates) {
_java_bytecode_rewriter_output_jar =
"$target_out_dir/$target_name-bytecode-rewritten.jar"
- action(_java_bytecode_rewriter_target) {
+ action_with_pydeps(_java_bytecode_rewriter_target) {
script = "//build/android/gyp/bytecode_processor.py"
_bytecode_rewriter_script =
"$root_build_dir/bin/helper/java_bytecode_rewriter"
@@ -1317,7 +1321,7 @@ if (enable_java_templates) {
_desugar_input_jar = _previous_output_jar
_desugar_output_jar = "$target_out_dir/$target_name-desugar.jar"
- action(_desugar_target) {
+ action_with_pydeps(_desugar_target) {
script = "//build/android/gyp/desugar.py"
deps = _deps
if (defined(invoker.deps)) {
@@ -1325,11 +1329,11 @@ if (enable_java_templates) {
}
_desugar_jar = "//third_party/bazel/desugar/Desugar.jar"
- inputs = build_utils_py + [
- _build_config,
- _desugar_input_jar,
- _desugar_jar,
- ]
+ inputs = [
+ _build_config,
+ _desugar_input_jar,
+ _desugar_jar,
+ ]
outputs = [
_desugar_output_jar,
]
@@ -1355,16 +1359,16 @@ if (enable_java_templates) {
_filter_input_jar = _previous_output_jar
_filter_output_jar = "$target_out_dir/$target_name-filtered.jar"
- action(_filter_target) {
+ action_with_pydeps(_filter_target) {
script = "//build/android/gyp/filter_zip.py"
deps = _deps
if (defined(invoker.deps)) {
deps += invoker.deps
}
- inputs = build_utils_py + [
- _build_config,
- _filter_input_jar,
- ]
+ inputs = [
+ _build_config,
+ _filter_input_jar,
+ ]
outputs = [
_filter_output_jar,
]
@@ -1446,7 +1450,7 @@ if (enable_java_templates) {
}
template("merge_manifests") {
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -1455,10 +1459,10 @@ if (enable_java_templates) {
script = "//build/android/gyp/merge_manifest.py"
depfile = "$target_gen_dir/$target_name.d"
- inputs = build_utils_py + [
- invoker.build_config,
- invoker.input_manifest,
- ]
+ inputs = [
+ invoker.build_config,
+ invoker.input_manifest,
+ ]
outputs = [
invoker.output_manifest,
@@ -1480,19 +1484,6 @@ if (enable_java_templates) {
}
}
- if (compute_inputs_for_analyze) {
- _prepare_resources_py =
- exec_script("//build/print_python_deps.py",
- [
- rebase_path("//build/android/gyp/prepare_resources.py"),
- "--no-header",
- "--gn-paths",
- "--root",
- rebase_path("//", root_build_dir),
- ],
- "list lines")
- }
-
# This template is used to parse a set of resource directories and
# create the R.txt, .srcjar and .resources.zip for it.
#
@@ -1548,7 +1539,7 @@ if (enable_java_templates) {
if (defined(invoker.srcjar_path)) {
_srcjar_path = invoker.srcjar_path
}
- action(target_name) {
+ action_with_pydeps(target_name) {
set_sources_assignment_filter([])
forward_variables_from(invoker,
[
@@ -1589,9 +1580,6 @@ if (enable_java_templates) {
invoker.build_config,
_android_aapt_path,
]
- if (compute_inputs_for_analyze) {
- inputs += _prepare_resources_py
- }
_rebased_all_resource_dirs =
rebase_path(_all_resource_dirs, root_build_dir)
@@ -1676,19 +1664,6 @@ if (enable_java_templates) {
}
}
- if (compute_inputs_for_analyze) {
- _compile_resources_py =
- exec_script("//build/print_python_deps.py",
- [
- rebase_path("//build/android/gyp/compile_resources.py"),
- "--no-header",
- "--gn-paths",
- "--root",
- rebase_path("//", root_build_dir),
- ],
- "list lines")
- }
-
# A template that is used to compile all resources needed by a binary
# (e.g. an android_apk or a junit_binary) into an intermediate .ar_
# archive. It can also generate an associated .srcjar that contains the
@@ -1791,7 +1766,7 @@ if (enable_java_templates) {
# _2.d for the optional processed compiled resources.
# _3.d for the proto-compiled resources.
- action(_compile_resources_target_name) {
+ action_with_pydeps(_compile_resources_target_name) {
set_sources_assignment_filter([])
forward_variables_from(invoker,
[
@@ -1814,9 +1789,6 @@ if (enable_java_templates) {
invoker.build_config,
_android_aapt_path,
]
- if (compute_inputs_for_analyze) {
- inputs += _compile_resources_py
- }
_rebased_build_config = rebase_path(invoker.build_config, root_build_dir)
@@ -2027,57 +1999,6 @@ if (enable_java_templates) {
}
}
- # Compile resources for an APK.
- #
- # This is very similar to compile_resources, except that it can *also*
- # compile the same set of inputs using the new protocol-buffer based
- # format, if proto_outut and proto_resources_target are set.
- #
- # Takes the same variables as compile_resources, with the following
- # extras:
- #
- # proto_output: optional. If provided, the path to an output file that
- # will contain the resources compiled in the new protocol buffer format.
- # proto_resources_target: required when proto_output is set. Name of the
- # target associated with compiling the protocol-buffer based resources.
- #
- template("compile_apk_resources") {
- # First call to compile_resources() is used to generate the compiled
- # resources using the standard binary xml + resources.arsc format.
- compile_resources(target_name) {
- forward_variables_from(invoker,
- "*",
- [
- "proto_format",
- "proto_output",
- "proto_resources_target",
- ])
- }
-
- # The second call is optional, and is only used to compile the resources
- # using the new protocol buffer based format. This omits the generation of
- # R.txt, /srcjar and proguard files (performed during the first call), or
- # resources post-processing.
- if (defined(invoker.proto_output)) {
- compile_resources(invoker.proto_resources_target) {
- forward_variables_from(invoker,
- "*",
- [
- "output",
- "post_process_script",
- "proguard_file",
- "proguard_file_main_dex",
- "proto_output",
- "proto_resources_target",
- "r_text_out_path",
- "srcjar_path",
- ])
- output = invoker.proto_output
- proto_format = true
- }
- }
- }
-
# Create an apk.jar.info file by merging several .jar.info files into one.
#
# Variables:
@@ -2089,17 +2010,16 @@ if (enable_java_templates) {
_output = invoker.output
_build_config = invoker.apk_build_config
_rebased_build_config = rebase_path(_build_config, root_build_dir)
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"testonly",
"deps",
])
script = "//build/android/gyp/merge_jar_info_files.py"
- inputs = build_utils_py + [
- _build_config,
- "//build/android/gyp/util/jar_info_utils.py",
- ]
+ inputs = [
+ _build_config,
+ ]
outputs = [
_output,
]
@@ -2135,7 +2055,7 @@ if (enable_java_templates) {
# native_libs_filearg: @FileArg() of additionally native libraries.
# secondary_abi_native_libs: (optional) List of native libraries for
# secondary ABI.
- # secondary_abi_native_libs_filearg: (optiona). @FileArg() of additional
+ # secondary_abi_native_libs_filearg: (optional). @FileArg() of additional
# secondary ABI native libs.
# write_asset_list: Adds an extra file to the assets, which contains a list of
# all other asset files.
@@ -2145,7 +2065,7 @@ if (enable_java_templates) {
# uncompress_shared_libraries: (optional, default false) Whether to store
# native libraries inside the APK uncompressed and page-aligned.
template("package_apk") {
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -2170,8 +2090,7 @@ if (enable_java_templates) {
"//tools/android/md5sum",
] # Used when deploying APKs
- inputs = build_utils_py + invoker.native_libs + [
- "//build/android/gyp/finalize_apk.py",
+ inputs = invoker.native_libs + [
invoker.keystore_path,
invoker.packaged_resources_path,
_apksigner,
@@ -2249,8 +2168,8 @@ if (enable_java_templates) {
args += [ "--android-abi=$android_app_abi" ]
}
if (defined(invoker.secondary_abi_native_libs_filearg) ||
- (defined(invoker.secondary_native_libs) &&
- invoker.secondary_native_libs != []) ||
+ (defined(invoker.secondary_abi_loadable_modules) &&
+ invoker.secondary_abi_loadable_modules != []) ||
_secondary_native_lib_placeholders != []) {
assert(defined(android_app_secondary_abi))
args += [ "--secondary-android-abi=$android_app_secondary_abi" ]
@@ -2269,14 +2188,8 @@ if (enable_java_templates) {
args += [ "--secondary-native-lib-placeholders=$_secondary_native_lib_placeholders" ]
}
- # TODO (michaelbai): Remove the secondary_native_libs variable.
if (defined(invoker.secondary_abi_native_libs_filearg)) {
args += [ "--secondary-native-libs=${invoker.secondary_abi_native_libs_filearg}" ]
- } else if (defined(invoker.secondary_native_libs) &&
- invoker.secondary_native_libs != []) {
- inputs += invoker.secondary_native_libs
- _secondary_native_libs = rebase_path(invoker.secondary_native_libs)
- args += [ "--secondary-native-libs=$_secondary_native_libs" ]
}
if (defined(invoker.uncompress_shared_libraries) &&
@@ -2313,7 +2226,8 @@ if (enable_java_templates) {
_native_libs = invoker.native_libs
}
_native_libs_even_when_incremental = []
- if (defined(invoker.native_libs_even_when_incremental)) {
+ if (defined(invoker.native_libs_even_when_incremental) &&
+ invoker.native_libs_even_when_incremental != []) {
_native_libs_even_when_incremental =
invoker.native_libs_even_when_incremental
}
@@ -2336,7 +2250,7 @@ if (enable_java_templates) {
"packaged_resources_path",
"secondary_native_lib_placeholders",
"secondary_abi_native_libs_filearg",
- "secondary_native_libs",
+ "secondary_abi_loadable_modules",
"uncompress_shared_libraries",
"write_asset_list",
])
@@ -2378,16 +2292,14 @@ if (enable_java_templates) {
_rebased_build_config =
rebase_path(invoker.assets_build_config, root_build_dir)
- action(_incremental_compile_resources_target_name) {
+ action_with_pydeps(_incremental_compile_resources_target_name) {
deps = _incremental_deps
script =
"//build/android/incremental_install/generate_android_manifest.py"
- inputs = build_utils_py + [
- # Save on a depfile by listing only .py dep here.
- "//build/android/gyp/util/build_utils.py",
- _android_manifest,
- invoker.packaged_resources_path,
- ]
+ inputs = [
+ _android_manifest,
+ invoker.packaged_resources_path,
+ ]
outputs = [
# Output the non-compiled manifest for easy debugging (as opposed to
# generating to a temp file).
@@ -2417,12 +2329,9 @@ if (enable_java_templates) {
forward_variables_from(invoker,
[
"assets_build_config",
- "secondary_native_libs",
+ "secondary_abi_loadable_modules",
"uncompress_shared_libraries",
])
- if (!defined(uncompress_shared_libraries)) {
- uncompress_shared_libraries = _load_library_from_apk
- }
_dex_target = "//build/android/incremental_install:bootstrap_java__dex"
deps = _incremental_deps + [
":${_incremental_compile_resources_target_name}",
@@ -2452,18 +2361,6 @@ if (enable_java_templates) {
}
}
- if (compute_inputs_for_analyze) {
- _javac_py = exec_script("//build/print_python_deps.py",
- [
- rebase_path("//build/android/gyp/javac.py"),
- "--no-header",
- "--gn-paths",
- "--root",
- rebase_path("//", root_build_dir),
- ],
- "list lines")
- }
-
# Compile Java source files into a .jar file, potentially using an
# annotation processor, and/or the errorprone compiler.
#
@@ -2572,7 +2469,7 @@ if (enable_java_templates) {
_javac_args = invoker.javac_args
}
- action(target_name) {
+ action_with_pydeps(target_name) {
script = "//build/android/gyp/javac.py"
depfile = "$target_gen_dir/$target_name.d"
deps = _srcjar_deps
@@ -2589,9 +2486,6 @@ if (enable_java_templates) {
if (invoker.java_files != []) {
inputs += [ invoker.java_sources_file ]
}
- if (compute_inputs_for_analyze) {
- inputs += _javac_py
- }
_rebased_build_config = rebase_path(_build_config, root_build_dir)
_rebased_javac_jar_path =
@@ -2664,7 +2558,7 @@ if (enable_java_templates) {
# output_jar: Path to output .ijar.
#
template("generate_interface_jar") {
- action(target_name) {
+ action_with_pydeps(target_name) {
_ijar_target = "//third_party/ijar:ijar($host_toolchain)"
_ijar_executable = get_label_info(_ijar_target, "root_out_dir") + "/ijar"
forward_variables_from(invoker,
@@ -2682,10 +2576,10 @@ if (enable_java_templates) {
if (defined(invoker.deps)) {
deps += invoker.deps
}
- inputs = build_utils_py + [
- invoker.input_jar,
- _ijar_executable,
- ]
+ inputs = [
+ invoker.input_jar,
+ _ijar_executable,
+ ]
if (defined(invoker.inputs)) {
inputs += invoker.inputs
}
@@ -2994,31 +2888,40 @@ if (enable_java_templates) {
"classpath_deps",
"gradle_treat_as_prebuilt",
"input_jars_paths",
+ "loadable_modules",
"main_class",
"proguard_configs",
"proguard_enabled",
"proguard_output_jar_path",
+ "secondary_abi_loadable_modules",
"type",
])
- if (type == "android_apk") {
+ if (type == "android_apk" || type == "android_app_bundle_module") {
forward_variables_from(
invoker,
[
"android_manifest",
"android_manifest_dep",
- "apk_path",
- "apk_under_test",
"extra_shared_libraries",
"final_dex_path",
- "incremental_allowed",
- "incremental_apk_path",
- "incremental_install_json_path",
- "proto_resources_path",
"secondary_abi_shared_libraries_runtime_deps_file",
"shared_libraries_runtime_deps_file",
"uncompress_shared_libraries",
])
}
+ if (type == "android_apk") {
+ forward_variables_from(invoker,
+ [
+ "apk_path",
+ "apk_under_test",
+ "incremental_allowed",
+ "incremental_apk_path",
+ "incremental_install_json_path",
+ ])
+ }
+ if (type == "android_app_bundle_module") {
+ forward_variables_from(invoker, [ "proto_resources_path" ])
+ }
build_config = _build_config
is_prebuilt = _is_prebuilt
possible_config_deps = _accumulated_deps
@@ -3078,6 +2981,7 @@ if (enable_java_templates) {
# TODO(agrieve): Enable lint for _has_sources rather than just _java_files.
_lint_enabled = _java_files != [] && _supports_android && _chromium_code &&
!disable_android_lint
+
if (_has_sources) {
_compile_java_target = "${_main_target_name}__compile_java"
compile_java(_compile_java_target) {
@@ -3116,7 +3020,8 @@ if (enable_java_templates) {
}
if (_lint_enabled) {
android_lint("${_main_target_name}__lint") {
- if (invoker.type == "android_apk") {
+ if (invoker.type == "android_apk" ||
+ invoker.type == "android_app_bundle_module") {
forward_variables_from(invoker, [ "android_manifest" ])
} else if (defined(_android_manifest_for_lint)) {
android_manifest = _android_manifest_for_lint
@@ -3268,11 +3173,15 @@ if (enable_java_templates) {
deps = _accumulated_public_deps
}
_accumulated_public_deps += [ ":${target_name}__java_binary_script" ]
+ }
+ if (_is_java_binary ||
+ (_is_annotation_processor && !defined(_final_jar_path))) {
group(target_name) {
forward_variables_from(invoker,
[
"data",
+ "deps",
"data_deps",
"visibility",
])
@@ -3290,49 +3199,37 @@ if (enable_java_templates) {
# Create a zip archive corresponding to an application bundle module.
#
-# Each module corresponds to the content of an existing android_apk() target
-# except that the internal directory layout is slightly different, and
-# resources as well as xml files are compiled into a protocol buffer format,
-# instead of the regular binary xml + resources.arsc.
+# Compile all the components of a given android_apk_or_module() target into a zip archive
+# suitable to later create an android_app_bundle() target. This archive's format is very
+# similar to that on an APK, except for a few differences in internal directory
+# layouts, and the fact that resources, as well ass xml files, are compiled using a
+# protocol-buffer based format (instead of the regular binary xml + resources.arsc).
#
# A final application bundle is built from one or more module bundle modules,
# plus some configuration file.
#
# Variables:
-# apk_target: Name of the android_apk target this module refers to.
-# The archive will contain the same content, but organized slightly
-# differently.
+# module_zip_path: Output module path.
#
-# module_path: Output module path.
+# build_config: Path to build_config of the android_apk_or_module() target.
#
-template("android_app_bundle_module") {
- _apk_target = invoker.apk_target
- _apk_target_name = get_label_info(_apk_target, "name")
- _apk_target_gen_dir = get_label_info(_apk_target, "target_gen_dir")
-
- _apk_build_config = "$_apk_target_gen_dir/${_apk_target_name}.build_config"
- _rebased_apk_build_config = rebase_path(_apk_build_config, root_build_dir)
+# dex_path_file_arg: Path to the module's dex file passed directly to the
+# creation script. Must be a rebased path or @FileArg expression.
+#
+template("create_android_app_bundle_module") {
+ _build_config = invoker.build_config
+ _rebased_build_config = rebase_path(_build_config, root_build_dir)
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"testonly",
"visibility",
+ "deps",
])
script = "//build/android/gyp/apkbuilder.py"
depfile = "$target_gen_dir/$target_name.d"
- # NOTE: Building the APK is not necessary to build the bundle module,
- # only its individual components, hence depend on their intermediate
- # targets itself. This also allows building the APK and the bundle module
- # in parallel if necessary.
- deps = [
- "${_apk_target}__build_config",
- "${_apk_target}__compile_proto_resources",
- "${_apk_target}__create", # Required to get final dex zip.
- "${_apk_target}__merge_manifests",
- ]
-
# NOTE: Compared to the inputs of the "package_apk" template action,
# this list is much smaller, since finalize_apk is never called
# by apkbuild.py --format=bundle-module. This means not using
@@ -3340,34 +3237,74 @@ template("android_app_bundle_module") {
# dependencies like extra native libraries are all pulled from the
# .build_config through @FileArg() references (see below) and
# will be listed in the generated depfile instead.
- inputs = build_utils_py + [ _apk_build_config ]
+ inputs = [
+ _build_config,
+ ]
outputs = [
- invoker.module_path,
+ invoker.module_zip_path,
]
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--format=bundle-module",
"--output-apk",
- rebase_path(invoker.module_path, root_build_dir),
- "--dex-file=@FileArg($_rebased_apk_build_config:final_dex:path)",
+ rebase_path(invoker.module_zip_path, root_build_dir),
+ "--dex-file=${invoker.dex_path_file_arg}",
"--resource-apk=@FileArg(" +
- "$_rebased_apk_build_config:deps_info:proto_resources_path)",
- "--assets=@FileArg($_rebased_apk_build_config:assets)",
+ "$_rebased_build_config:deps_info:proto_resources_path)",
+ "--assets=@FileArg($_rebased_build_config:assets)",
"--uncompressed-assets=@FileArg(" +
- "$_rebased_apk_build_config:uncompressed_assets)",
- "--native-libs=@FileArg($_rebased_apk_build_config:native:libraries)",
- "--native-libs=@FileArg($_rebased_apk_build_config:native:extra_shared_libraries)",
+ "$_rebased_build_config:uncompressed_assets)",
+ "--native-libs=@FileArg($_rebased_build_config:native:libraries)",
+ "--native-libs=@FileArg($_rebased_build_config:native:extra_shared_libraries)",
"--android-abi=$android_app_abi",
"--uncompress-shared-libraries=@FileArg(" +
- "$_rebased_apk_build_config:native:uncompress_shared_libraries)",
+ "$_rebased_build_config:native:uncompress_shared_libraries)",
]
if (defined(android_app_secondary_abi)) {
args += [
"--secondary-native-libs=@FileArg(" +
- "$_rebased_apk_build_config:native:secondary_abi_libraries)",
+ "$_rebased_build_config:native:secondary_abi_libraries)",
"--secondary-android-abi=$android_app_secondary_abi",
]
}
}
}
+
+# Extracts a bundle module's classes from jar created in the synchronized
+# proguarding step and packages them into a new jar.
+#
+# Variables:
+# proguarded_jar: Path to input jar produced by synchronized proguarding.
+# proguard_mapping: Path to input proguard mapping produced by synchronized
+# proguarding
+# output_jar: Path to output jar file containing the module's optimized class
+# files.
+# build_config: Path to build config of module.
+# is_base_module: True if this is processing a base module.
+template("generate_proguarded_module_jar") {
+ _rebased_build_config = rebase_path(invoker.build_config, root_build_dir)
+
+ action_with_pydeps(target_name) {
+ forward_variables_from(invoker, [ "deps" ])
+ script = "//build/android/gyp/generate_proguarded_module_jar.py"
+ outputs = [
+ invoker.output_jar,
+ ]
+ depfile = "${target_gen_dir}/${target_name}.d"
+ args = [
+ "--depfile",
+ rebase_path(depfile, root_build_dir),
+ "--proguarded-jar",
+ rebase_path(invoker.proguarded_jar, root_build_dir),
+ "--proguard-mapping",
+ rebase_path(invoker.proguard_mapping, root_build_dir),
+ "--module-input-jars=@FileArg(${_rebased_build_config}:deps_info:java_runtime_classpath)",
+ "--output-jar",
+ rebase_path(invoker.output_jar, root_build_dir),
+ ]
+ if (defined(invoker.is_base_module) && invoker.is_base_module) {
+ args += [ "--is-base-module" ]
+ }
+ }
+}
diff --git a/chromium/build/config/android/rules.gni b/chromium/build/config/android/rules.gni
index d9df932e0a8..7f44a34ad69 100644
--- a/chromium/build/config/android/rules.gni
+++ b/chromium/build/config/android/rules.gni
@@ -8,8 +8,8 @@ import("//build/config/android/config.gni")
import("//build/config/android/internal_rules.gni")
import("//build/config/clang/clang.gni")
import("//build/config/compiler/compiler.gni")
-import("//build/config/compute_inputs_for_analyze.gni")
import("//build/config/dcheck_always_on.gni")
+import("//build/config/python.gni")
import("//build/config/zip.gni")
import("//build/toolchain/toolchain.gni")
@@ -76,7 +76,7 @@ template("create_native_executable_dist") {
_find_deps_target_name = "${target_name}__find_library_dependencies"
# TODO(agrieve): Extract dependent libs from GN rather than readelf.
- action(_find_deps_target_name) {
+ action_with_pydeps(_find_deps_target_name) {
deps = invoker.deps + [ ":$_runtime_deps_target_name" ]
script = "//build/android/gyp/write_ordered_libraries.py"
depfile = "$target_gen_dir/$target_name.d"
@@ -157,7 +157,7 @@ template("create_native_executable_dist") {
# target = "//pkg/foo.py"
# }
template("wrapper_script") {
- action(target_name) {
+ action_with_pydeps(target_name) {
_name = get_path_info(invoker.target, "name")
_output = "$root_out_dir/bin/$_name"
@@ -233,17 +233,14 @@ if (enable_java_templates) {
}
_foreach_target_name = "${target_name}__jni_gen"
- action_foreach(_foreach_target_name) {
+ action_foreach_with_pydeps(_foreach_target_name) {
script = "//base/android/jni_generator/jni_generator.py"
- depfile = "$target_gen_dir/$target_name.{{source_name_part}}.d"
sources = invoker.sources
outputs = [
"${_jni_output_dir}/{{source_name_part}}_jni.h",
]
args = [
- "--depfile",
- rebase_path(depfile, root_build_dir),
"--input_file={{source}}",
"--ptr_type=long",
"--output_dir",
@@ -338,10 +335,9 @@ if (enable_java_templates) {
_classname = get_path_info(_class, "name")
_jni_target_name = "${target_name}__jni_${_classname}"
_jni_actions += [ ":$_jni_target_name" ]
- action(_jni_target_name) {
+ action_with_pydeps(_jni_target_name) {
# The sources aren't compiled so don't check their dependencies.
check_includes = false
- depfile = "$target_gen_dir/$target_name.d"
script = "//base/android/jni_generator/jni_generator.py"
inputs = [
_jar_file,
@@ -351,8 +347,6 @@ if (enable_java_templates) {
]
args = [
- "--depfile",
- rebase_path(depfile, root_build_dir),
"--jar_file",
rebase_path(_jar_file, root_build_dir),
"--input_file",
@@ -402,7 +396,8 @@ if (enable_java_templates) {
# target: The Apk target to generate registrations for.
# output: Path to the generated .h file.
# exception_files: List of .java files that should be ignored when searching
- # for native methods. (optional)
+ # for native methods. (optional)
+ # namespace: Registration functions will be wrapped into this. (optional)
#
# Example
# generate_jni_registration("chrome_jni_registration") {
@@ -413,15 +408,12 @@ if (enable_java_templates) {
# ]
# }
template("generate_jni_registration") {
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker, [ "testonly" ])
_build_config = get_label_info(invoker.target, "target_gen_dir") + "/" +
get_label_info(invoker.target, "name") + ".build_config"
_rebased_build_config = rebase_path(_build_config, root_build_dir)
- _rebase_exception_java_files =
- rebase_path(invoker.exception_files, root_build_dir)
-
script = "//base/android/jni_generator/jni_registration_generator.py"
deps = [
"${invoker.target}__build_config",
@@ -439,10 +431,17 @@ if (enable_java_templates) {
"--sources_files=@FileArg($_rebased_build_config:jni:all_source)",
"--output",
rebase_path(invoker.output, root_build_dir),
- "--no_register_java=$_rebase_exception_java_files",
"--depfile",
rebase_path(depfile, root_build_dir),
]
+ if (defined(invoker.exception_files)) {
+ _rebase_exception_java_files =
+ rebase_path(invoker.exception_files, root_build_dir)
+ args += [ "--no_register_java=$_rebase_exception_java_files" ]
+ }
+ if (defined(invoker.namespace)) {
+ args += [ "--namespace=${invoker.namespace}" ]
+ }
}
}
@@ -494,7 +493,7 @@ if (enable_java_templates) {
_base_gen_dir = "${target_gen_dir}/${target_name}/java_cpp_template"
_package_path = invoker.package_path
- action_foreach(_apply_gcc_target_name) {
+ action_foreach_with_pydeps(_apply_gcc_target_name) {
forward_variables_from(invoker,
[
"deps",
@@ -568,7 +567,7 @@ if (enable_java_templates) {
# }
template("java_cpp_enum") {
set_sources_assignment_filter([])
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"sources",
@@ -596,19 +595,6 @@ if (enable_java_templates) {
}
}
- if (compute_inputs_for_analyze) {
- _jinja_template_pydeps =
- exec_script("//build/print_python_deps.py",
- [
- rebase_path("//build/android/gyp/jinja_template.py"),
- "--no-header",
- "--gn-paths",
- "--root",
- rebase_path("//", root_build_dir),
- ],
- "list lines")
- }
-
# Declare a target for processing a Jinja template.
#
# Variables
@@ -624,26 +610,20 @@ if (enable_java_templates) {
# output = "$target_gen_dir/AndroidManifest.xml"
# }
template("jinja_template") {
- forward_variables_from(invoker, [ "testonly" ])
-
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker,
[
"visibility",
"deps",
+ "testonly",
])
-
inputs = [
invoker.input,
]
if (defined(invoker.includes)) {
inputs += invoker.includes
}
- if (compute_inputs_for_analyze) {
- inputs += _jinja_template_pydeps
- }
script = "//build/android/gyp/jinja_template.py"
- depfile = "$target_gen_dir/$target_name.d"
outputs = [
invoker.output,
@@ -656,8 +636,7 @@ if (enable_java_templates) {
rebase_path(invoker.input, root_build_dir),
"--output",
rebase_path(invoker.output, root_build_dir),
- "--depfile",
- rebase_path(depfile, root_build_dir),
+ "--check-includes",
]
if (defined(invoker.includes)) {
_rebased_includes = rebase_path(invoker.includes, root_build_dir)
@@ -753,8 +732,6 @@ if (enable_java_templates) {
# variables = ["color=red"]
# }
template("jinja_template_resources") {
- forward_variables_from(invoker, [ "testonly" ])
-
# JUnit tests use resource zip files. These must not be put in gen/
# directory or they will not be available to tester bots.
_resources_zip_rebased_path = rebase_path(target_gen_dir, root_gen_dir)
@@ -762,11 +739,14 @@ if (enable_java_templates) {
_generating_target_name = "${target_name}__template"
- action(_generating_target_name) {
- forward_variables_from(invoker, [ "deps" ])
+ action_with_pydeps(_generating_target_name) {
+ forward_variables_from(invoker,
+ [
+ "deps",
+ "testonly",
+ ])
inputs = invoker.resources
script = "//build/android/gyp/jinja_template.py"
- depfile = "$target_gen_dir/$target_name.d"
outputs = [
_resources_zip,
@@ -779,8 +759,7 @@ if (enable_java_templates) {
rebase_path(invoker.res_dir, root_build_dir),
"--outputs-zip",
rebase_path(_resources_zip, root_build_dir),
- "--depfile",
- rebase_path(depfile, root_build_dir),
+ "--check-includes",
]
if (defined(invoker.variables)) {
variables = invoker.variables
@@ -789,7 +768,11 @@ if (enable_java_templates) {
}
android_generated_resources(target_name) {
- forward_variables_from(invoker, [ "deps" ])
+ forward_variables_from(invoker,
+ [
+ "deps",
+ "testonly",
+ ])
generating_target_name = ":$_generating_target_name"
generated_resources_zip = _resources_zip
}
@@ -1255,13 +1238,22 @@ if (enable_java_templates) {
_deps += invoker.deps
}
+ # a package name or a manifest is required to have resources. This is
+ # added so that junit tests that do not care about the package name can
+ # still use resources without having to explicitly set one.
+ if (defined(invoker.package_name)) {
+ _package_name = invoker.package_name
+ } else if (!defined(invoker.android_manifest_path)) {
+ _package_name = "org.chromium.test"
+ }
+
_prepare_resources_target = "${target_name}__prepare_resources"
prepare_resources(_prepare_resources_target) {
deps = _deps + [ ":$_build_config_target_name" ]
build_config = _build_config
srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
- if (defined(invoker.package_name)) {
- custom_package = invoker.package_name
+ if (defined(_package_name)) {
+ custom_package = _package_name
}
if (defined(invoker.android_manifest_path)) {
android_manifest = invoker.android_manifest_path
@@ -1301,11 +1293,10 @@ if (enable_java_templates) {
test_suite = invoker.target_name
test_type = "junit"
ignore_all_data_deps = true
- forward_variables_from(invoker,
- [
- "android_manifest_path",
- "package_name",
- ])
+ forward_variables_from(invoker, [ "android_manifest_path" ])
+ if (defined(_package_name)) {
+ package_name = _package_name
+ }
}
group(target_name) {
@@ -1527,7 +1518,6 @@ if (enable_java_templates) {
args = [
"--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)",
"--input-paths=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)",
- "--classpath=@FileArg($_rebased_build_config:deps_info:proguard_all_extra_jars)",
]
if (defined(invoker.proguard_config_exclusions)) {
_rebased_proguard_config_exclusions =
@@ -1538,7 +1528,7 @@ if (enable_java_templates) {
}
}
} else {
- action(_jar_target_name) {
+ action_with_pydeps(_jar_target_name) {
forward_variables_from(invoker, [ "data" ])
script = "//build/android/gyp/create_dist_jar.py"
depfile = "$target_gen_dir/$target_name.d"
@@ -1646,7 +1636,7 @@ if (enable_java_templates) {
_rebased_build_config = rebase_path(_build_config, root_build_dir)
- action(target_name) {
+ action_with_pydeps(target_name) {
forward_variables_from(invoker, [ "data" ])
depfile = "$target_gen_dir/$target_name.d"
deps = _deps
@@ -1832,7 +1822,8 @@ if (enable_java_templates) {
inputs = [
invoker.build_config,
]
- _rebased_build_config = rebase_path(invoker.build_config)
+ _rebased_build_config =
+ rebase_path(invoker.build_config, root_build_dir)
defines += [
"COMPRESSED_LOCALE_LIST=" +
"@FileArg($_rebased_build_config:compressed_locales_java_list)",
@@ -1851,21 +1842,14 @@ if (enable_java_templates) {
}
}
- # Declare an Android apk target
- #
- # This target creates an Android APK containing java code, resources, assets,
- # and (possibly) native libraries.
+ # Declare an Android app module target, which is used as the basis for an
+ # Android APK or an Android app bundle module.
#
# Supports all variables of android_library(), plus:
# android_manifest: Path to AndroidManifest.xml.
# android_manifest_dep: Target that generates AndroidManifest (if applicable)
# png_to_webp: If true, pngs (with the exception of 9-patch) are
# converted to webp during resource packaging.
- # dist_ijar_path: Path to create "${target_name}_dist_ijar" target
- # (used by instrumentation_test_apk).
- # apk_name: Name for final apk.
- # final_apk_path: Path to final built apk. Default is
- # $root_out_dir/apks/$apk_name.apk. Setting this will override apk_name.
# loadable_modules: List of paths to native libraries to include. Different
# from |shared_libraries| in that:
# * dependencies of this .so are not automatically included
@@ -1875,6 +1859,8 @@ if (enable_java_templates) {
# and enable_relocation_packing do not apply
# Use this instead of shared_libraries when you are going to load the library
# conditionally, and only when shared_libraries doesn't work for you.
+ # secondary_abi_loadable_modules: This is the loadable_modules analog to
+ # secondary_abi_shared_libraries.
# shared_libraries: List shared_library targets to bundle. If these
# libraries depend on other shared_library targets, those dependencies will
# also be included in the apk (e.g. for is_component_build).
@@ -1885,8 +1871,6 @@ if (enable_java_templates) {
# (optional).
# secondary_native_lib_placeholders: List of placeholder filenames to add to
# the apk for the secondary ABI (optional).
- # apk_under_test: For an instrumentation test apk, this is the target of the
- # tested apk.
# write_asset_list: Adds an extra file to the assets, which contains a list of
# all other asset files.
# generate_buildconfig_java: If defined and false, skip generating the
@@ -1897,11 +1881,6 @@ if (enable_java_templates) {
# requires_sdk_api_level_23: If defined and true, the apk is intended for
# installation only on Android M or later. In these releases the system
# linker does relocation unpacking, so we can enable it unconditionally.
- # secondary_native_libs (deprecated): The path of native libraries for secondary
- # app abi.
- # proguard_jar_path: The path to proguard.jar you wish to use. If undefined,
- # the proguard used will be the checked in one in //third_party/proguard.
- # never_incremental: If true, |incremental_apk_by_default| will be ignored.
# aapt_locale_whitelist: If set, all locales not in this list will be
# stripped from resources.arsc.
# exclude_xxxhdpi: Causes all drawable-xxxhdpi images to be excluded
@@ -1918,29 +1897,13 @@ if (enable_java_templates) {
# shared_resources_whitelist_target: Optional name of a target specifying
# an input R.txt file that lists the resources that can be exported
# by the APK when shared_resources or app_as_shared_lib is defined.
- #
- # Example
- # android_apk("foo_apk") {
- # android_manifest = "AndroidManifest.xml"
- # java_files = [
- # "android/org/chromium/foo/FooApplication.java",
- # "android/org/chromium/foo/FooActivity.java",
- # ]
- # deps = [
- # ":foo_support_java"
- # ":foo_resources"
- # ]
- # srcjar_deps = [
- # ":foo_generated_enum"
- # ]
- # shared_libraries = [
- # ":my_shared_lib",
- # ]
- # }
- template("android_apk") {
+ # uncompress_shared_libraries: True if shared libraries should be stored
+ # uncompressed in the APK. Must be unset or true if load_library_from_apk
+ # is set to true.
+ template("android_apk_or_module") {
forward_variables_from(invoker, [ "testonly" ])
- assert(defined(invoker.final_apk_path) || defined(invoker.apk_name))
+ assert(defined(invoker.final_apk_path) || defined(invoker.name))
assert(defined(invoker.android_manifest))
_gen_dir = "$target_gen_dir/$target_name"
_base_path = "$_gen_dir/$target_name"
@@ -1954,6 +1917,9 @@ if (enable_java_templates) {
_rebased_lib_dex_path = rebase_path(_lib_dex_path, root_build_dir)
_template_name = target_name
+ _is_bundle_module =
+ defined(invoker.is_bundle_module) && invoker.is_bundle_module
+
_enable_multidex =
defined(invoker.enable_multidex) && invoker.enable_multidex
if (_enable_multidex) {
@@ -1961,12 +1927,13 @@ if (enable_java_templates) {
} else {
_final_dex_path = "$_gen_dir/classes.dex"
}
- _final_dex_target_name = "${_template_name}__final_dex"
if (defined(invoker.final_apk_path)) {
_final_apk_path = invoker.final_apk_path
+ } else if (!_is_bundle_module) {
+ _final_apk_path = "$root_build_dir/apks/${invoker.name}.apk"
} else {
- _final_apk_path = "$root_build_dir/apks/${invoker.apk_name}.apk"
+ _final_apk_path = "$root_build_dir/bundle_modules/${invoker.name}"
}
_final_apk_path_no_ext_list =
process_file_template([ _final_apk_path ],
@@ -1974,13 +1941,19 @@ if (enable_java_templates) {
_final_apk_path_no_ext = _final_apk_path_no_ext_list[0]
assert(_final_apk_path_no_ext != "") # Mark as used.
- # resource_sizes.py needs to be able to find the unpacked resources.arsc file based on apk name.
- _packaged_resources_path =
- "$root_gen_dir/arsc/" +
- rebase_path(_final_apk_path_no_ext, root_build_dir) + ".ap_"
+ if (_is_bundle_module) {
+ # Path to the intermediate proto-format resources zip file.
+ _packaged_resources_path = "$target_gen_dir/$target_name.proto.ap_"
+ } else {
+ # resource_sizes.py needs to be able to find the unpacked resources.arsc
+ # file based on apk name.
+ _packaged_resources_path =
+ "$root_gen_dir/arsc/" +
+ rebase_path(_final_apk_path_no_ext, root_build_dir) + ".ap_"
+ }
- _incremental_install_json_path =
- "$target_gen_dir/$target_name.incremental.json"
+ _target_dir_name = get_label_info(target_name, "dir")
+ _incremental_install_json_path = "$root_out_dir/gen.runtime/$_target_dir_name/$target_name.incremental.json"
_version_code = android_default_version_code
if (defined(invoker.version_code)) {
@@ -1991,15 +1964,6 @@ if (enable_java_templates) {
if (defined(invoker.version_name)) {
_version_name = invoker.version_name
}
- _keystore_path = android_keystore_path
- _keystore_name = android_keystore_name
- _keystore_password = android_keystore_password
-
- if (defined(invoker.keystore_path)) {
- _keystore_path = invoker.keystore_path
- _keystore_name = invoker.keystore_name
- _keystore_password = invoker.keystore_password
- }
_deps = []
if (defined(invoker.deps)) {
@@ -2053,6 +2017,15 @@ if (enable_java_templates) {
"load_library_from_apk requires use_chromium_linker " +
"or requires_sdk_api_level_23")
+ # Make sure that uncompress_shared_libraries is set to true if
+ # load_library_from_apk is true.
+ if (defined(invoker.uncompress_shared_libraries)) {
+ _uncompress_shared_libraries = invoker.uncompress_shared_libraries
+ assert(!_load_library_from_apk || _uncompress_shared_libraries)
+ } else {
+ _uncompress_shared_libraries = _load_library_from_apk
+ }
+
# The dependency that makes the chromium linker, if any is needed.
_native_libs_deps = []
_shared_libraries_is_valid =
@@ -2117,7 +2090,7 @@ if (enable_java_templates) {
}
} else {
# Must exist for instrumentation_test_apk() to depend on.
- group("${_template_name}__secondary_abi_runtime_deps") {
+ group("${_template_name}__secondary_abi__runtime_deps") {
}
}
@@ -2134,7 +2107,9 @@ if (enable_java_templates) {
_proguard_output_jar_path = "$_base_path.proguard.jar"
}
+ # TODO(crbug.com/864142): Allow incremental installs of bundle modules.
_incremental_allowed =
+ !_is_bundle_module &&
!(defined(invoker.never_incremental) && invoker.never_incremental)
_android_manifest =
@@ -2161,20 +2136,7 @@ if (enable_java_templates) {
}
_compile_resources_target = "${_template_name}__compile_resources"
-
- # Path to the intermediate proto-format resources zip file.
- _packaged_proto_resources_path =
- "$root_gen_dir/proto_resources/" +
- rebase_path(_final_apk_path_no_ext, root_build_dir) + ".proto.ap_"
-
- # Define another target used to generate an archive containing the
- # resources compiled in protocol buffer format. This is not used by
- # the APK itself, but by android_bundle_module() targets that depend
- # on it.
- _compile_proto_resources_target =
- "${_template_name}__compile_proto_resources"
-
- compile_apk_resources(_compile_resources_target) {
+ compile_resources(_compile_resources_target) {
forward_variables_from(invoker,
[
"app_as_shared_lib",
@@ -2190,13 +2152,6 @@ if (enable_java_templates) {
version_code = _version_code
version_name = _version_name
- # Subtle: required to avoid GN build errors. "testonly" cannot be added
- # to the forward_variables_from() above because it was already forwarded
- # at the start of android_apk(). And if the assignment below is not
- # performed, GN will complain that some test-only targets depend
- # on non-test-only ones.
- testonly = defined(testonly) && testonly
-
if (defined(invoker.post_process_package_resources_script)) {
post_process_script = invoker.post_process_package_resources_script
}
@@ -2206,6 +2161,9 @@ if (enable_java_templates) {
if (_enable_multidex) {
proguard_file_main_dex = _generated_proguard_main_dex_config
}
+ if (_is_bundle_module) {
+ proto_format = true
+ }
output = _packaged_resources_path
build_config = _build_config
@@ -2226,9 +2184,6 @@ if (enable_java_templates) {
"${invoker.shared_resources_whitelist_target}__compile_resources",
]
}
-
- proto_output = _packaged_proto_resources_path
- proto_resources_target = _compile_proto_resources_target
}
_srcjar_deps += [ ":$_compile_resources_target" ]
@@ -2245,7 +2200,7 @@ if (enable_java_templates) {
# TODO(agrieve): Make GN write runtime deps in dependency order so as to
# not need this manual sorting step.
- action(_ordered_libraries_target) {
+ action_with_pydeps(_ordered_libraries_target) {
script = "//build/android/gyp/write_ordered_libraries.py"
deps = [
":$_build_config_target",
@@ -2317,7 +2272,7 @@ if (enable_java_templates) {
if (_native_libs_deps != []) {
if (_use_chromium_linker) {
_extra_native_libs +=
- [ "$root_shlib_dir/libchromium_android_linker$shlib_extension" ]
+ [ "$root_out_dir/libchromium_android_linker$shlib_extension" ]
_extra_native_libs_deps +=
[ "//base/android/linker:chromium_android_linker" ]
}
@@ -2352,11 +2307,16 @@ if (enable_java_templates) {
"classpath_deps",
"emma_never_instrument",
"java_files",
- "no_build_hooks",
"javac_args",
- "uncompress_shared_libraries",
+ "loadable_modules",
+ "no_build_hooks",
+ "secondary_abi_loadable_modules",
])
- type = "android_apk"
+ if (_is_bundle_module) {
+ type = "android_app_bundle_module"
+ } else {
+ type = "android_apk"
+ }
main_target_name = _template_name
supports_android = true
requires_android = true
@@ -2366,13 +2326,17 @@ if (enable_java_templates) {
final_jar_path = _jar_path
dex_path = _lib_dex_path
final_dex_path = _final_dex_path
- apk_path = _final_apk_path
- proto_resources_path = _packaged_proto_resources_path
+ if (_is_bundle_module) {
+ proto_resources_path = _packaged_resources_path
+ }
- incremental_allowed = _incremental_allowed
- incremental_apk_path = "${_final_apk_path_no_ext}_incremental.apk"
- incremental_install_json_path = _incremental_install_json_path
+ if (!_is_bundle_module) {
+ apk_path = _final_apk_path
+ incremental_allowed = _incremental_allowed
+ incremental_apk_path = "${_final_apk_path_no_ext}_incremental.apk"
+ incremental_install_json_path = _incremental_install_json_path
+ }
proguard_enabled = _proguard_enabled
if (_proguard_enabled) {
@@ -2399,6 +2363,8 @@ if (enable_java_templates) {
}
extra_shared_libraries = _extra_native_libs
+
+ uncompress_shared_libraries = _uncompress_shared_libraries
}
# TODO(cjhopman): This is only ever needed to calculate the list of tests to
@@ -2420,86 +2386,103 @@ if (enable_java_templates) {
}
}
- if (_proguard_enabled) {
- _proguard_target = "${_template_name}__proguard"
- proguard(_proguard_target) {
- forward_variables_from(invoker, [ "proguard_jar_path" ])
- build_config = _build_config
- deps = _deps + [
- ":$_build_config_target",
- ":$_compile_resources_target",
- ":$_java_target",
- ]
- inputs = [
- _jar_path,
- ]
+ # Dex generation for app bundle modules with proguarding enabled takes
+ # place later due to synchronized proguarding. For more details,
+ # read build/android/docs/android_app_bundles.md
+ if (!(_is_bundle_module && _proguard_enabled)) {
+ if (_proguard_enabled) {
+ _proguard_target = "${_template_name}__proguard"
+ proguard(_proguard_target) {
+ forward_variables_from(invoker, [ "proguard_jar_path" ])
+ build_config = _build_config
+ deps = _deps + [
+ ":$_build_config_target",
+ ":$_compile_resources_target",
+ ":$_java_target",
+ ]
+ inputs = [
+ _jar_path,
+ ]
- output_jar_path = _proguard_output_jar_path
- args = [
- "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)",
- "--input-paths=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)",
- "--classpath=@FileArg($_rebased_build_config:deps_info:proguard_all_extra_jars)",
- ]
- if (defined(invoker.proguard_config_exclusions)) {
- _rebased_proguard_config_exclusions =
- rebase_path(invoker.proguard_config_exclusions, root_build_dir)
- args += [
- "--proguard-config-exclusions=$_rebased_proguard_config_exclusions",
+ output_jar_path = _proguard_output_jar_path
+ args = [
+ "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)",
+ "--input-paths=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)",
+ ]
+ if (defined(invoker.proguard_config_exclusions)) {
+ _rebased_proguard_config_exclusions =
+ rebase_path(invoker.proguard_config_exclusions, root_build_dir)
+ args += [ "--proguard-config-exclusions=$_rebased_proguard_config_exclusions" ]
+ }
+ if (defined(invoker.apk_under_test)) {
+ args += [ "--mapping=@FileArg($_rebased_build_config:deps_info:proguard_under_test_mapping)" ]
+ deps += [ "${invoker.apk_under_test}__proguard" ]
+ }
+ }
+ _dex_sources = [ _proguard_output_jar_path ]
+ _dex_deps = [ ":$_proguard_target" ]
+
+ _copy_proguard_mapping_target =
+ "${_template_name}__copy_proguard_mapping"
+ copy(_copy_proguard_mapping_target) {
+ sources = [
+ "$_proguard_output_jar_path.mapping",
+ ]
+ outputs = [
+ "$_final_apk_path.mapping",
+ ]
+ deps = [
+ ":$_proguard_target",
]
}
- }
- _dex_sources = [ _proguard_output_jar_path ]
- _dex_deps = [ ":$_proguard_target" ]
-
- _copy_proguard_mapping_target = "${_template_name}__copy_proguard_mapping"
- copy(_copy_proguard_mapping_target) {
- sources = [
- "$_proguard_output_jar_path.mapping",
- ]
- outputs = [
- "$_final_apk_path.mapping",
- ]
- deps = [
- ":$_proguard_target",
- ]
- }
- } else {
- if (_enable_multidex) {
- # .jar already included in java_runtime_classpath.
- _dex_sources = []
} else {
- _dex_sources = [ _lib_dex_path ]
+ if (_enable_multidex) {
+ # .jar already included in java_runtime_classpath.
+ _dex_sources = []
+ } else {
+ _dex_sources = [ _lib_dex_path ]
+ }
+ _dex_deps = [ ":$_java_target" ]
}
- _dex_deps = [ ":$_java_target" ]
- }
-
- dex("$_final_dex_target_name") {
- deps = _dex_deps + [ ":$_build_config_target" ]
- input_jars = _dex_sources
- output = _final_dex_path
- enable_multidex = _enable_multidex
- if (_enable_multidex) {
- forward_variables_from(invoker, [ "negative_main_dex_globs" ])
- extra_main_dex_proguard_config = _generated_proguard_main_dex_config
- deps += [ ":$_compile_resources_target" ]
- }
+ _final_dex_target_name = "${_template_name}__final_dex"
+ dex("$_final_dex_target_name") {
+ deps = _dex_deps + [ ":$_build_config_target" ]
+ input_jars = _dex_sources
+ output = _final_dex_path
+ enable_multidex = _enable_multidex
- # All deps are already included in _dex_sources when proguard is used.
- if (!_proguard_enabled) {
if (_enable_multidex) {
- _dex_arg_key =
- "${_rebased_build_config}:deps_info:java_runtime_classpath"
- } else {
- _dex_arg_key =
- "${_rebased_build_config}:final_dex:dependency_dex_files"
+ forward_variables_from(invoker, [ "negative_main_dex_globs" ])
+ extra_main_dex_proguard_config = _generated_proguard_main_dex_config
+ deps += [ ":$_compile_resources_target" ]
}
- build_config = _build_config
- input_jars_file_arg = "@FileArg($_dex_arg_key)"
+
+ # All deps are already included in _dex_sources when proguard is used.
+ if (!_proguard_enabled) {
+ if (_enable_multidex) {
+ _dex_arg_key =
+ "${_rebased_build_config}:deps_info:java_runtime_classpath"
+ } else {
+ _dex_arg_key =
+ "${_rebased_build_config}:final_dex:dependency_dex_files"
+ }
+ build_config = _build_config
+ input_jars_file_arg = "@FileArg($_dex_arg_key)"
+ }
+
+ # http://crbug.com/725224. Fix for bots running out of memory.
+ use_pool = true
}
+ } else {
+ # A small sanity check to help developers with a subtle point!
+ assert(
+ !defined(invoker.proguard_jar_path),
+ "proguard_jar_path should not be used for app bundle modules " +
+ "when proguard is enabled. Pass it to the android_app_bundle() " +
+ "target instead!")
- # http://crbug.com/725224. Fix for bots running out of memory.
- use_pool = true
+ _final_deps += [ ":$_java_target" ]
}
_native_libs_file_arg_dep = ":$_build_config_target"
@@ -2509,8 +2492,12 @@ if (enable_java_templates) {
"@FileArg($_rebased_build_config:native:secondary_abi_libraries)"
assert(_secondary_abi_native_libs_file_arg != "" &&
_secondary_abi_native_libs_file_arg_dep != "") # Mark as used.
+ _all_native_libs_deps = _native_libs_deps + _extra_native_libs_deps +
+ [ _native_libs_file_arg_dep ]
+ assert(_all_native_libs_deps == _all_native_libs_deps) # Mark as used.
_extra_native_libs_even_when_incremental = []
+ assert(_extra_native_libs_even_when_incremental == []) # Mark as used.
if (_native_libs_deps != []) {
_create_stack_script_rule_name = "${_template_name}__stack_script"
_final_deps += [ ":${_create_stack_script_rule_name}" ]
@@ -2525,10 +2512,10 @@ if (enable_java_templates) {
}
# Generate .apk.jar.info files if needed.
- if (defined(invoker.apk_name)) {
+ if (defined(invoker.name)) {
_apk_jar_info_target = "${target_name}__apk_jar_info"
create_apk_jar_info(_apk_jar_info_target) {
- output = "$root_build_dir/size-info/${invoker.apk_name}.apk.jar.info"
+ output = "$root_build_dir/size-info/${invoker.name}.apk.jar.info"
apk_build_config = _build_config
deps = [
":$_build_config_target",
@@ -2538,83 +2525,110 @@ if (enable_java_templates) {
_deps += [ ":$_apk_jar_info_target" ]
}
- _final_deps += [ ":${_template_name}__create" ]
- create_apk("${_template_name}__create") {
- forward_variables_from(invoker,
- [
- "public_deps",
- "secondary_native_libs",
- "shared_resources",
- "uncompress_shared_libraries",
- "write_asset_list",
- ])
- packaged_resources_path = _packaged_resources_path
- apk_path = _final_apk_path
- assets_build_config = _build_config
- dex_path = _final_dex_path
- load_library_from_apk = _load_library_from_apk
+ if (!_is_bundle_module) {
+ _keystore_path = android_keystore_path
+ _keystore_name = android_keystore_name
+ _keystore_password = android_keystore_password
- # This is used to generate *.apk.pak.info files.
- apk_name = invoker.apk_name
+ if (defined(invoker.keystore_path)) {
+ _keystore_path = invoker.keystore_path
+ _keystore_name = invoker.keystore_name
+ _keystore_password = invoker.keystore_password
+ }
- keystore_name = _keystore_name
- keystore_path = _keystore_path
- keystore_password = _keystore_password
+ _create_apk_target = "${_template_name}__create"
+ _final_deps += [ ":$_create_apk_target" ]
+ create_apk("$_create_apk_target") {
+ forward_variables_from(invoker,
+ [
+ "public_deps",
+ "shared_resources",
+ "write_asset_list",
+ ])
+ packaged_resources_path = _packaged_resources_path
+ apk_path = _final_apk_path
+ assets_build_config = _build_config
+ dex_path = _final_dex_path
+ load_library_from_apk = _load_library_from_apk
- incremental_allowed = _incremental_allowed
- if (_incremental_allowed) {
- android_manifest = _android_manifest
- base_path = _base_path
- }
+ # This is used to generate *.apk.pak.info files.
+ apk_name = invoker.name
- # Incremental apk does not use native libs nor final dex.
- incremental_deps = _deps + [
- ":$_merge_manifest_target",
- ":$_build_config_target",
- ":$_compile_resources_target",
- ]
+ keystore_name = _keystore_name
+ keystore_path = _keystore_path
+ keystore_password = _keystore_password
- # This target generates the input file _all_resources_zip_path.
- deps = _deps + [
- ":$_merge_manifest_target",
- ":$_build_config_target",
- ":$_final_dex_target_name",
- ":$_compile_resources_target",
- ]
+ incremental_allowed = _incremental_allowed
+ if (_incremental_allowed) {
+ android_manifest = _android_manifest
+ base_path = _base_path
+ }
- if (_native_libs_deps != [] ||
- _extra_native_libs_even_when_incremental != []) {
- deps += _native_libs_deps + _extra_native_libs_deps +
- [ _native_libs_file_arg_dep ]
- native_libs_filearg = _native_libs_file_arg
- native_libs = _extra_native_libs
- native_libs_even_when_incremental =
- _extra_native_libs_even_when_incremental
- }
+ # Incremental apk does not use native libs nor final dex.
+ incremental_deps = _deps + [
+ ":$_merge_manifest_target",
+ ":$_build_config_target",
+ ":$_compile_resources_target",
+ ]
- if (_secondary_abi_native_libs_deps != []) {
- deps += _secondary_abi_native_libs_deps +
- [ _secondary_abi_native_libs_file_arg_dep ]
- secondary_abi_native_libs_filearg = _secondary_abi_native_libs_file_arg
+ # This target generates the input file _all_resources_zip_path.
+ deps = _deps + [
+ ":$_merge_manifest_target",
+ ":$_build_config_target",
+ ":$_final_dex_target_name",
+ ":$_compile_resources_target",
+ ]
+
+ if (_native_libs_deps != [] ||
+ _extra_native_libs_even_when_incremental != []) {
+ deps += _all_native_libs_deps
+ native_libs_filearg = _native_libs_file_arg
+ native_libs = _extra_native_libs
+ native_libs_even_when_incremental =
+ _extra_native_libs_even_when_incremental
+ }
+
+ if (_secondary_abi_native_libs_deps != []) {
+ deps += _secondary_abi_native_libs_deps +
+ [ _secondary_abi_native_libs_file_arg_dep ]
+ secondary_abi_native_libs_filearg =
+ _secondary_abi_native_libs_file_arg
+ }
+
+ # Placeholders necessary for some older devices.
+ # http://crbug.com/395038
+ forward_variables_from(invoker,
+ [
+ "native_lib_placeholders",
+ "secondary_native_lib_placeholders",
+ ])
+
+ uncompress_shared_libraries = _uncompress_shared_libraries
}
+ } else {
+ # placeholder native libraries never go into bundles, since they are
+ # only used for pre-L Android releases. Use the invoker variable to
+ # avoid GN errors when the target defines them.
+ assert(!defined(invoker.native_lib_placeholders) ||
+ invoker.native_lib_placeholders != [])
- # Placeholders necessary for some older devices.
- # http://crbug.com/395038
- forward_variables_from(invoker,
- [
- "native_lib_placeholders",
- "secondary_native_lib_placeholders",
- ])
+ _final_deps += [
+ ":$_merge_manifest_target",
+ ":$_build_config_target",
+ ":$_compile_resources_target",
+ ] + _all_native_libs_deps + _secondary_abi_native_libs_deps
}
_write_installer_json_rule_name = "${_template_name}__incremental_json"
- action(_write_installer_json_rule_name) {
+ action_with_pydeps(_write_installer_json_rule_name) {
script = "//build/android/incremental_install/write_installer_json.py"
- depfile = "$target_gen_dir/$target_name.d"
deps = [
_native_libs_file_arg_dep,
]
+ data = [
+ _incremental_install_json_path,
+ ]
outputs = [
_incremental_install_json_path,
]
@@ -2623,14 +2637,12 @@ if (enable_java_templates) {
rebase_path(_final_apk_path_no_ext, root_build_dir)
_rebased_incremental_install_json_path =
rebase_path(_incremental_install_json_path, root_build_dir)
- _rebased_depfile = rebase_path(depfile, root_build_dir)
_dex_arg_key = "${_rebased_build_config}:final_dex:dependency_dex_files"
args = [
"--apk-path=${_rebased_apk_path_no_ext}_incremental.apk",
"--output-path=$_rebased_incremental_install_json_path",
"--dex-file=$_rebased_lib_dex_path",
"--dex-file-list=@FileArg($_dex_arg_key)",
- "--depfile=$_rebased_depfile",
]
if (_proguard_enabled) {
args += [ "--show-proguard-warning" ]
@@ -2639,8 +2651,6 @@ if (enable_java_templates) {
args += [ "--native-libs=$_native_libs_file_arg" ]
}
if (_extra_native_libs != []) {
- # Don't pass in _extra_native_libs_even_when_incremental, since these are
- # end up in the apk and are not side-loaded.
_rebased_extra_native_libs =
rebase_path(_extra_native_libs, root_build_dir)
args += [ "--native-libs=$_rebased_extra_native_libs" ]
@@ -2656,7 +2666,7 @@ if (enable_java_templates) {
# Generate apk operation related script.
if (!defined(invoker.create_apk_script) || invoker.create_apk_script) {
_apk_operations_target_name = "${target_name}__apk_operations"
- action(_apk_operations_target_name) {
+ action_with_pydeps(_apk_operations_target_name) {
_generated_script = "$root_build_dir/bin/${invoker.target_name}"
script = "//build/android/gyp/create_apk_operations_script.py"
outputs = [
@@ -2716,7 +2726,7 @@ if (enable_java_templates) {
public_deps += _apk_operations
# Make the proguard .mapping file easy to find by putting it beside the .apk.
- if (_proguard_enabled) {
+ if (_proguard_enabled && !_is_bundle_module) {
deps = [
":$_copy_proguard_mapping_target",
]
@@ -2756,6 +2766,186 @@ if (enable_java_templates) {
}
}
+ # Declare an Android APK target
+ #
+ # This target creates an Android APK containing java code, resources, assets,
+ # and (possibly) native libraries.
+ #
+ # Supports all variables of android_apk_or_module(), plus:
+ # apk_name: Name for final apk.
+ #
+ # Example
+ # android_apk("foo_apk") {
+ # android_manifest = "AndroidManifest.xml"
+ # java_files = [
+ # "android/org/chromium/foo/FooApplication.java",
+ # "android/org/chromium/foo/FooActivity.java",
+ # ]
+ # deps = [
+ # ":foo_support_java"
+ # ":foo_resources"
+ # ]
+ # srcjar_deps = [
+ # ":foo_generated_enum"
+ # ]
+ # shared_libraries = [
+ # ":my_shared_lib",
+ # ]
+ # }
+ template("android_apk") {
+ android_apk_or_module(target_name) {
+ forward_variables_from(invoker,
+ [
+ "aapt_locale_whitelist",
+ "additional_jar_files",
+ "alternative_android_sdk_dep",
+ "android_manifest",
+ "android_manifest_dep",
+ "apk_under_test",
+ "app_as_shared_lib",
+ "build_hooks_android_impl_deps",
+ "chromium_code",
+ "classpath_deps",
+ "command_line_flags_file",
+ "create_apk_script",
+ "data",
+ "data_deps",
+ "deps",
+ "dist_ijar_path",
+ "dont_load_shared_libraries",
+ "emma_never_instrument",
+ "enable_chromium_linker_tests",
+ "enable_multidex",
+ "exclude_xxxhdpi",
+ "final_apk_path",
+ "firebase_app_id",
+ "generate_buildconfig_java",
+ "input_jars_paths",
+ "java_files",
+ "javac_args",
+ "keystore_name",
+ "keystore_password",
+ "keystore_path",
+ "load_library_from_apk",
+ "loadable_modules",
+ "native_lib_placeholders",
+ "native_lib_version_arg",
+ "native_lib_version_rule",
+ "negative_main_dex_globs",
+ "never_incremental",
+ "no_build_hooks",
+ "no_xml_namespaces",
+ "png_to_webp",
+ "post_process_package_resources_script",
+ "product_version_resources_dep",
+ "proguard_configs",
+ "proguard_enabled",
+ "proguard_jar_path",
+ "requires_sdk_api_level_23",
+ "secondary_abi_loadable_modules",
+ "secondary_abi_shared_libraries",
+ "secondary_native_lib_placeholders",
+ "shared_libraries",
+ "shared_resources",
+ "shared_resources_whitelist_target",
+ "srcjar_deps",
+ "support_zh_hk",
+ "testonly",
+ "uncompress_shared_libraries",
+ "use_chromium_linker",
+ "version_code",
+ "version_name",
+ "write_asset_list",
+ "xxxhdpi_whitelist",
+ ])
+ is_bundle_module = false
+ if (defined(invoker.apk_name)) {
+ name = invoker.apk_name
+ }
+ }
+ }
+
+ # Declare an Android app bundle module target.
+ #
+ # The module can be used for an android_apk_or_module().
+ #
+ # Supports all variables of android_library(), plus:
+ # module_name: Name of the module.
+ # is_base_module: If defined and true, indicates that this is the bundle's
+ # base module (optional).
+ template("android_app_bundle_module") {
+ _is_base_module = defined(invoker.is_base_module) && invoker.is_base_module
+
+ if (!_is_base_module) {
+ assert(!defined(write_asset_list))
+ assert(!defined(firebase_app_id))
+ assert(!defined(app_as_shared_lib))
+ assert(!defined(shared_resources))
+ assert(!defined(shared_resources_whitelist_target))
+ assert(!defined(build_hooks_android_impl_deps))
+ assert(!defined(shared_libraries))
+ }
+
+ android_apk_or_module(target_name) {
+ forward_variables_from(invoker,
+ [
+ "aapt_locale_whitelist",
+ "additional_jar_files",
+ "alternative_android_sdk_dep",
+ "android_manifest",
+ "android_manifest_dep",
+ "app_as_shared_lib",
+ "chromium_code",
+ "classpath_deps",
+ "data",
+ "data_deps",
+ "deps",
+ "emma_never_instrument",
+ "enable_chromium_linker_tests",
+ "enable_multidex",
+ "exclude_xxxhdpi",
+ "firebase_app_id",
+ "input_jars_paths",
+ "java_files",
+ "javac_args",
+ "load_library_from_apk",
+ "loadable_modules",
+ "native_lib_placeholders",
+ "native_lib_version_arg",
+ "native_lib_version_rule",
+ "negative_main_dex_globs",
+ "no_xml_namespaces",
+ "png_to_webp",
+ "product_version_resources_dep",
+ "proguard_configs",
+ "proguard_enabled",
+ "proguard_jar_path",
+ "requires_sdk_api_level_23",
+ "secondary_abi_loadable_modules",
+ "secondary_abi_shared_libraries",
+ "secondary_native_lib_placeholders",
+ "shared_libraries",
+ "shared_resources",
+ "shared_resources_whitelist_target",
+ "srcjar_deps",
+ "support_zh_hk",
+ "testonly",
+ "uncompress_shared_libraries",
+ "use_chromium_linker",
+ "version_code",
+ "version_name",
+ "write_asset_list",
+ "xxxhdpi_whitelist",
+ ])
+ is_bundle_module = true
+ generate_buildconfig_java = _is_base_module
+ no_build_hooks = !_is_base_module
+ if (defined(invoker.module_name)) {
+ name = invoker.module_name
+ }
+ }
+ }
+
# Declare an Android instrumentation test apk
#
# This target creates an Android instrumentation test apk.
@@ -2923,14 +3113,14 @@ if (enable_java_templates) {
# symbolization can be done.
deps = [
":${_apk_target_name}__runtime_deps",
- ":${_apk_target_name}__secondary_abi_runtime_deps",
+ ":${_apk_target_name}__secondary_abi__runtime_deps",
]
if (defined(invoker.apk_under_test)) {
_under_test_label =
get_label_info(invoker.apk_under_test, "label_no_toolchain")
deps += [
"${_under_test_label}__runtime_deps",
- "${_under_test_label}__secondary_abi_runtime_deps",
+ "${_under_test_label}__secondary_abi__runtime_deps",
]
}
}
@@ -3018,7 +3208,7 @@ if (enable_java_templates) {
shared_libraries = [ invoker.shared_library ]
deps += [
":${target_name}__runtime_deps",
- ":${target_name}__secondary_abi_runtime_deps",
+ ":${target_name}__secondary_abi__runtime_deps",
"//base:base_java",
"//testing/android/reporter:reporter_java",
]
@@ -3052,7 +3242,7 @@ if (enable_java_templates) {
# ]
# }
template("android_aidl") {
- action(target_name) {
+ action_with_pydeps(target_name) {
set_sources_assignment_filter([])
forward_variables_from(invoker, [ "testonly" ])
@@ -3070,14 +3260,11 @@ if (enable_java_templates) {
inputs = [ _aidl_path ] + _imports
- depfile = "${target_gen_dir}/${target_name}.d"
outputs = [
_srcjar_path,
]
_rebased_imports = rebase_path(_imports, root_build_dir)
args = [
- "--depfile",
- rebase_path(depfile, root_build_dir),
"--aidl-path",
rebase_path(_aidl_path, root_build_dir),
"--imports=$_rebased_imports",
@@ -3150,7 +3337,7 @@ if (enable_java_templates) {
_proto_path = invoker.proto_path
_template_name = target_name
- action("${_template_name}__protoc_java") {
+ action_with_pydeps("${_template_name}__protoc_java") {
_srcjar_path = "$target_gen_dir/$target_name.srcjar"
script = "//build/protoc_java.py"
@@ -3263,7 +3450,7 @@ if (enable_java_templates) {
" Use ignore_native_libraries = true to silence this error.")
assert(_scanned_files.has_classes_jar || _scanned_files.subjars == [])
- action(_unpack_target_name) {
+ action_with_pydeps(_unpack_target_name) {
script = "//build/android/gyp/aar.py" # Unzips the AAR
args = [
"extract",
@@ -3424,17 +3611,16 @@ if (enable_java_templates) {
# and zero or more associated android_apk.
#
# Variables:
- # base_apk_target: Name of the android_apk target corresponding to the
- # base module for this application bundle. The bundle file will include
- # the same content in its base module, though in a slightly different
- # format.
+ # base_module_target: Name of the android_app_bundle_module target
+ # corresponding to the base module for this application bundle. The
+ # bundle file will include the same content in its base module, though in
+ # a slightly different format.
#
# bundle_base_path: Optional. If set, the bundle will be output to this
# directory. Defaults to "$root_build_dir/apks".
#
# bundle_name: Optional. If set, the bundle will be output to the
- # filename "${bundle_name}.aab". Also, if generate_apks is true
- # "${bundle_name}.apks" will be used. Defaults to "${target_name}".
+ # filename "${bundle_name}.aab".
#
# extra_modules: Optional list of scopes, one per extra module used by
# this bundle. Each scope must have a 'name' field that specifies the
@@ -3442,16 +3628,6 @@ if (enable_java_templates) {
# base module), and an 'apk_target' field that specified the
# corresponding android_apk target name the module is modeled on.
#
- # extra_module_apk_targets: Optional list of android_apk target matching
- # the names listed in extra_module_names.
- #
- # generate_apks: Optional. If true, generate an .apks archive that
- # contains all generated APK splits from the bundle. These are
- # installable to a local device using the bundletool 'install-apks'
- # command.
- #
- # NOTE: This creates a new target with the name "${target_name}_apks"
- #
# enable_language_splits: Optional. If true, enable APK splits based
# on languages.
#
@@ -3465,13 +3641,33 @@ if (enable_java_templates) {
# keystore_password: optional keystore password, used only when
# generating APKs.
#
+ # command_line_flags_file: Optional. If provided, named of the on-device
+ # file that will be used to store command-line arguments. The default
+ # is 'command_line_flags_file', but this is typically redefined to
+ # something more specific for certain bundles (e.g. the Chromium based
+ # APKs use 'chrome-command-line', the WebView one uses
+ # 'webview-command-line').
+ #
+ # proguard_enabled: Optional. True if proguarding is enabled for this
+ # bundle. Default is to enable this only for release builds. Note that
+ # this will always perform synchronized proguarding.
+ #
+ # proguard_jar_path: Optional. Path to custom proguard jar used for
+ # proguarding.
+ #
+ # enable_multidex: Optional. Enable multidexing of optimized modules jars
+ # when using synchronized proguarding. Only applies to base module.
+ #
+ # proguard_android_sdk_dep: Optional. android_system_java_prebuilt() target
+ # used as a library jar for synchronized proguarding.
+ #
# Example:
# android_app_bundle("chrome_public_bundle") {
- # base_apk_target = "//chrome/android:chrome_public_apk"
+ # base_module_target = "//chrome/android:chrome_public_apk"
# extra_modules = [
- # { # NOTE: Scopes require one field per line, and no comma separators.
+ # { # NOTE: Scopes require one field per line, and no comma separators.
# name = "my_module"
- # apk_target = ":my_module_apk"
+ # module_target = ":my_module"
# },
# ]
# }
@@ -3480,7 +3676,7 @@ if (enable_java_templates) {
_all_modules = [
{
name = "base"
- apk_target = invoker.base_apk_target
+ module_target = invoker.base_module_target
},
]
@@ -3492,46 +3688,157 @@ if (enable_java_templates) {
"Missing 'name' field for extra module #${_module_count}.")
assert(_module.name != "base",
"Module name 'base' is reserved for the main bundle module")
- assert(defined(_module.apk_target),
- "Missing 'apk_target' field for extra module ${_module.name}.")
+ assert(
+ defined(_module.module_target),
+ "Missing 'module_target' field for extra module ${_module.name}.")
}
_all_modules += invoker.extra_modules
}
- # Generate one module .zip file per APK.
- _all_module_targets = []
- _all_module_paths = []
+ _proguard_enabled =
+ defined(invoker.proguard_enabled) && invoker.proguard_enabled
+ _enable_multidex =
+ defined(invoker.enable_multidex) && invoker.enable_multidex
+ assert(
+ _proguard_enabled || !_enable_multidex,
+ "Bundle only adds dexing step if synchronized proguarding is enabled.")
+
+ # Make build config, which is required for synchronized proguarding.
+ _module_targets = []
+ foreach(_module, _all_modules) {
+ _module_targets += [ _module.module_target ]
+ }
+ _build_config = "$target_gen_dir/${target_name}.build_config"
+ _rebased_build_config = rebase_path(_build_config, root_build_dir)
+ _build_config_target = "${target_name}__build_config"
+ if (defined(invoker.proguard_android_sdk_dep)) {
+ proguard_android_sdk_dep_ = invoker.proguard_android_sdk_dep
+ } else {
+ proguard_android_sdk_dep_ = "//third_party/android_tools:android_sdk_java"
+ }
+ write_build_config(_build_config_target) {
+ type = "android_app_bundle"
+ possible_config_deps = _module_targets + [ proguard_android_sdk_dep_ ]
+ build_config = _build_config
+ }
+
+ if (_proguard_enabled) {
+ # Proguard all modules together to keep binary size small while still
+ # maintaining compatibility between modules.
+ _proguard_output_jar_path =
+ "${target_gen_dir}/${target_name}/${target_name}.proguard.jar"
+ _sync_proguard_target = "${target_name}__sync_proguard"
+ proguard(_sync_proguard_target) {
+ forward_variables_from(invoker, [ "proguard_jar_path" ])
+ build_config = _build_config
+ deps = _module_targets + [ ":$_build_config_target" ]
+
+ output_jar_path = _proguard_output_jar_path
+ args = [
+ "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)",
+ "--input-paths=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)",
+ ]
+ }
+ }
+
+ _all_create_module_targets = []
+ _all_module_zip_paths = []
_all_module_build_configs = []
foreach(_module, _all_modules) {
+ _module_target = _module.module_target
+ _module_target_name = get_label_info(_module_target, "name")
+ _module_target_gen_dir = get_label_info(_module_target, "target_gen_dir")
+ _module_build_config_target = "${_module_target}__build_config"
+ _module_build_config =
+ "$_module_target_gen_dir/${_module_target_name}.build_config"
+
+ if (_proguard_enabled) {
+ # Extract optimized classes for each module and dex them.
+
+ _module_final_dex_target = "${target_name}__${_module.name}__dex"
+ _module_final_dex_target_dep = ":$_module_final_dex_target"
+ if (_enable_multidex) {
+ _module_final_dex_path =
+ "$target_gen_dir/$target_name/${_module.name}/classes.dex.zip"
+ } else {
+ _module_final_dex_path =
+ "$target_gen_dir/$target_name/${_module.name}/classes.dex"
+ }
+ _module_final_dex_path_file_arg =
+ rebase_path(_module_final_dex_path, root_build_dir)
+
+ _module_jar_path =
+ "${target_gen_dir}/${target_name}/${_module.name}.optimized.jar"
+ _generate_proguarded_module_jar_target =
+ "${target_name}__${_module.name}__module_jar"
+ generate_proguarded_module_jar(_generate_proguarded_module_jar_target) {
+ proguarded_jar = _proguard_output_jar_path
+ build_config = _module_build_config
+ proguard_mapping = "${_proguard_output_jar_path}.mapping"
+ output_jar = _module_jar_path
+ is_base_module = _module.name == "base"
+ deps = [
+ ":${_sync_proguard_target}",
+ "$_module_build_config_target",
+ "${_module.module_target}",
+ ]
+ }
+
+ dex(_module_final_dex_target) {
+ deps = [
+ ":${_generate_proguarded_module_jar_target}",
+ ]
+ input_jars = [ _module_jar_path ]
+ output = _module_final_dex_path
+
+ # http://crbug.com/725224. Fix for bots running out of memory.
+ use_pool = true
+
+ if (_enable_multidex && _module.name == "base") {
+ enable_multidex = _enable_multidex
+ extra_main_dex_proguard_config =
+ "$_module_target_gen_dir/$_module_target_name/" +
+ "$_module_target_name.resources.main-dex-proguard.txt"
+ deps += [ "${_module_target}__compile_resources" ]
+ }
+ }
+ } else {
+ _module_final_dex_target_dep = "${_module_target}__final_dex"
+ _rebased_module_build_config =
+ rebase_path(_module_build_config, root_build_dir)
+ _module_final_dex_path_file_arg =
+ "@FileArg($_rebased_module_build_config:final_dex:path)"
+ }
+
+ # Generate one module .zip file per bundle module.
+ #
# Important: the bundle tool uses the module's zip filename as
# the internal module name inside the final bundle, in other words,
# this file *must* be named ${_module.name}.zip
- _module_target = "${target_name}__module__${_module.name}"
- _module_path = "$target_gen_dir/$target_name/${_module.name}.zip"
- _apk_target = _module.apk_target
- _apk_build_config_target = "${_apk_target}__build_config"
-
- android_app_bundle_module(_module_target) {
- apk_target = _apk_target
- module_path = _module_path
- }
-
- # Determine the rebased path to the module's target .build_config
- # In order to pass its list of uncompressed assets later.
- _apk_target_name = get_label_info(_apk_target, "name")
- _apk_target_gen_dir = get_label_info(_apk_target, "target_gen_dir")
- _apk_build_config =
- "$_apk_target_gen_dir/${_apk_target_name}.build_config"
-
- _all_module_targets += [
- ":$_module_target",
- _apk_build_config_target,
+ _create_module_target = "${target_name}__${_module.name}__create"
+ _module_zip_path = "$target_gen_dir/$target_name/${_module.name}.zip"
+
+ create_android_app_bundle_module(_create_module_target) {
+ build_config = _module_build_config
+ module_zip_path = _module_zip_path
+ dex_path_file_arg = _module_final_dex_path_file_arg
+ deps = [
+ "$_module_build_config_target",
+ "$_module_final_dex_target_dep",
+ "$_module_target",
+ ]
+ }
+
+ _all_create_module_targets += [
+ ":$_create_module_target",
+ _module_build_config_target,
]
- _all_module_paths += [ _module_path ]
- _all_module_build_configs += [ _apk_build_config ]
+ _all_module_zip_paths += [ _module_zip_path ]
+ _all_module_build_configs += [ _module_build_config ]
}
- _all_rebased_module_paths = rebase_path(_all_module_paths, root_build_dir)
+ _all_rebased_module_zip_paths =
+ rebase_path(_all_module_zip_paths, root_build_dir)
_bundle_name = target_name
if (defined(invoker.bundle_name)) {
@@ -3547,7 +3854,6 @@ if (enable_java_templates) {
_rebased_bundle_path = rebase_path(_bundle_path, root_build_dir)
_sign_bundle = defined(invoker.sign_bundle) && invoker.sign_bundle
- _generate_apks = defined(invoker.generate_apks) && invoker.generate_apks
_split_dimensions = []
if (defined(invoker.enable_language_splits) &&
@@ -3555,46 +3861,36 @@ if (enable_java_templates) {
_split_dimensions += [ "language" ]
}
- if (_sign_bundle || _generate_apks) {
- _keystore_path = android_keystore_path
- _keystore_password = android_keystore_password
- _keystore_name = android_keystore_name
+ _keystore_path = android_keystore_path
+ _keystore_password = android_keystore_password
+ _keystore_name = android_keystore_name
- if (defined(invoker.keystore_path)) {
- _keystore_path = invoker.keystore_path
- _keystore_password = invoker.keystore_password
- _keystore_name = invoker.keystore_name
- }
+ if (defined(invoker.keystore_path)) {
+ _keystore_path = invoker.keystore_path
+ _keystore_password = invoker.keystore_password
+ _keystore_name = invoker.keystore_name
+ }
- _rebased_keystore_path = rebase_path(_keystore_path, root_build_dir)
+ _rebased_keystore_path = rebase_path(_keystore_path, root_build_dir)
- if (_sign_bundle) {
- # For now, the same keys are used to sign the bundle and the set of
- # generated APKs. In the future, signing the bundle may require a
- # different set of keys.
- _bundle_keystore_name = _keystore_name
- }
+ if (_sign_bundle) {
+ # For now, the same keys are used to sign the bundle and the set of
+ # generated APKs. In the future, signing the bundle may require a
+ # different set of keys.
+ _bundle_keystore_name = _keystore_name
}
- # NOTE: Keep this consistent with the imports of create_app_bundle.py
- _create_app_bundle_py_imports =
- build_utils_py + [
- "//build/android/gyp/util/resource_utils.py",
- "//build/android/gyp/bundletool.py",
- ]
-
- _bundle_target_name = target_name
- action(_bundle_target_name) {
+ _bundle_target_name = "${target_name}__bundle"
+ action_with_pydeps(_bundle_target_name) {
script = "//build/android/gyp/create_app_bundle.py"
- inputs = _all_module_paths + _all_module_build_configs +
- _create_app_bundle_py_imports
+ inputs = _all_module_zip_paths + _all_module_build_configs
outputs = [
_bundle_path,
]
- deps = _all_module_targets
+ deps = _all_create_module_targets + [ ":$_build_config_target" ]
args = [
"--out-bundle=$_rebased_bundle_path",
- "--module-zips=$_all_rebased_module_paths",
+ "--module-zips=$_all_rebased_module_zip_paths",
]
if (_sign_bundle) {
args += [
@@ -3620,86 +3916,65 @@ if (enable_java_templates) {
}
}
- if (_generate_apks) {
- _android_aapt2_path = android_sdk_tools_bundle_aapt2
+ # Generate a wrapper script for the bundle.
+ _android_aapt2_path = android_sdk_tools_bundle_aapt2
- _bundle_apks_target = "${target_name}_apks"
- _bundle_apks_path = "$_bundle_base_path/$_bundle_name.apks"
+ _bundle_apks_path = "$_bundle_base_path/$_bundle_name.apks"
+ _bundle_wrapper_script_dir = "$root_build_dir/bin"
+ _bundle_wrapper_script_path = "$_bundle_wrapper_script_dir/$target_name"
- # NOTE: Keep this consistent with the imports of app_bundle_to_apks.py
- # note that resource_utils.py imports build_utils.py
- _app_bundle_to_apks_py_imports =
- build_utils_py + [ "//build/android/gyp/bundletool.py" ]
+ _base_module_build_config = _all_module_build_configs[0]
+ _base_module_build_config_target =
+ "${invoker.base_module_target}__build_config"
+ _rebased_base_module_build_config =
+ rebase_path(_base_module_build_config, root_build_dir)
- action(_bundle_apks_target) {
- script = "//build/android/gyp/app_bundle_to_apks.py"
- inputs = _app_bundle_to_apks_py_imports + [
- _bundle_path,
- _android_aapt2_path,
- _keystore_path,
- ]
- outputs = [
- _bundle_apks_path,
- ]
- deps = [
- ":$_bundle_target_name",
- ]
- args = [
- "--aapt2",
- rebase_path(_android_aapt2_path, root_build_dir),
- "--bundle",
- _rebased_bundle_path,
- "--out-zip",
- rebase_path(_bundle_apks_path, root_build_dir),
- "--keystore-path",
- _rebased_keystore_path,
- "--keystore-password",
- _keystore_password,
- "--key-name",
- _keystore_name,
+ action_with_pydeps("${target_name}__wrapper_script") {
+ script = "//build/android/gyp/create_bundle_wrapper_script.py"
+ inputs = [
+ "//build/android/gyp/bundletool.py",
+ _base_module_build_config,
+ ]
+ outputs = [
+ _bundle_wrapper_script_path,
+ ]
+ deps = [
+ _base_module_build_config_target,
+ ]
+ args = [
+ "--script-output-path",
+ rebase_path(_bundle_wrapper_script_path, root_build_dir),
+ "--package-name=@FileArg(" +
+ "$_rebased_base_module_build_config:deps_info:package_name)",
+ "--aapt2",
+ rebase_path(_android_aapt2_path, root_build_dir),
+ "--bundle-path",
+ _rebased_bundle_path,
+ "--bundle-apks-path",
+ rebase_path(_bundle_apks_path, root_build_dir),
+ "--target-cpu=$target_cpu",
+ "--keystore-path",
+ _rebased_keystore_path,
+ "--keystore-password",
+ _keystore_password,
+ "--key-name",
+ _keystore_name,
+ ]
+ if (defined(invoker.command_line_flags_file)) {
+ args += [
+ "--command-line-flags-file",
+ invoker.command_line_flags_file,
]
}
- }
- }
-}
-
-# Compatibility wrapper to toggle android_deps usage for a dependency.
-#
-# This target creates a wrapper for a dependency allowing it to be loaded
-# either from //third_party/android_deps or from an existing //third_party
-# (or other) target.
-#
-# Variables
-# fallback_target: Target to use when the android_deps repo is not enabled.
-# android_deps_target_name: Name of the target from the android_deps repo to
-# use when the repo is enabled. Is not set, the wrapper's target name will
-# be used instead.
-#
-# Example
-# prebuilt_wrapper("android_support_multidex_java") {
-# android_deps_target_name = "com_android_support_multidex_java"
-# fallback_target = "$android_support_library_package:$target_name"
-# }
-template("prebuilt_wrapper") {
- if (defined(invoker.android_deps_target_name)) {
- _resolved_android_deps_target_name = invoker.android_deps_target_name
- } else {
- _resolved_android_deps_target_name = target_name
- }
- if (enable_android_deps_repository) {
- _resolved_target =
- "//third_party/android_deps:${_resolved_android_deps_target_name}"
- assert(invoker.fallback_target != "") # Mark as used.
- } else {
- _resolved_target = "${invoker.fallback_target}"
- assert(_resolved_android_deps_target_name != "") # Mark as used.
- }
+ # TODO(digit): Add --proguard-mapping-path argument.
+ }
- java_group(target_name) {
- forward_variables_from(invoker, [ "testonly" ])
- deps = [
- _resolved_target,
- ]
+ group(target_name) {
+ deps = [
+ ":${target_name}__bundle",
+ ":${target_name}__wrapper_script",
+ ]
+ }
}
}
diff --git a/chromium/build/config/c++/c++.gni b/chromium/build/config/c++/c++.gni
index 85ffde0ea00..1b94aaa8da5 100644
--- a/chromium/build/config/c++/c++.gni
+++ b/chromium/build/config/c++/c++.gni
@@ -22,21 +22,16 @@ declare_args() {
# expected usage is to set use_custom_libcxx=false and
# use_custom_libcxx_for_host=true in the passed in buildargs.
use_custom_libcxx_for_host = false
-
- # ASan, MSan and TSan builds need to override operator new, operator delete,
- # and some exception handling symbols, so libc++ must be a shared library to
- # prevent duplicate symbol errors when linking.
- # Additionally, -fsanitize=vptr requires libc++ to be a shared library
- # because the ubsan runtime library that implements -fsanitize=vptr calls
- # dynamic_cast with the ABI type info classes, which won't return the right
- # answer if each DSO has its own copy of the ABI classes.
- libcpp_is_static = !is_component_build && !is_asan && !is_msan && !is_tsan &&
- !is_ubsan && !is_ubsan_security && !is_ubsan_vptr
}
use_custom_libcxx =
use_custom_libcxx || (use_custom_libcxx_for_host && current_cpu == host_cpu)
use_custom_libcxx = use_custom_libcxx && !is_nacl
+# libc++abi needs to be exported from executables to be picked up by shared
+# libraries on certian instrumented builds.
+export_libcxxabi_from_executables =
+ use_custom_libcxx && !is_component_build && (is_asan || is_ubsan_vptr)
+
libcxx_prefix = "//buildtools/third_party/libc++/trunk"
libcxxabi_prefix = "//buildtools/third_party/libc++abi/trunk"
diff --git a/chromium/build/config/chromecast_build.gni b/chromium/build/config/chromecast_build.gni
index d4869d7abf1..61870e4a0b3 100644
--- a/chromium/build/config/chromecast_build.gni
+++ b/chromium/build/config/chromecast_build.gni
@@ -10,6 +10,10 @@ declare_args() {
# Linux and Android.
is_chromecast = false
+ # chromecast_branding is used to include or exclude Google-branded components.
+ # Set it to "public" for a Chromium build.
+ chromecast_branding = "public"
+
# Set this true for an audio-only Chromecast build.
is_cast_audio_only = false
}
diff --git a/chromium/build/config/chromeos/rules.gni b/chromium/build/config/chromeos/rules.gni
index eae196e64b6..28b03c8a234 100644
--- a/chromium/build/config/chromeos/rules.gni
+++ b/chromium/build/config/chromeos/rules.gni
@@ -9,6 +9,12 @@ declare_args() {
cros_sdk_version = ""
}
+# Creates a script at $generated_script that can be used to launch a cros VM
+# and optionally run a test within it.
+# Args:
+# generated_script: Path to place the generated script.
+# deploy_chrome: If true, deploys a locally built chrome located in the root
+# build dir to the VM after launching it.
template("generate_vm_runner_script") {
_cache_path_prefix =
"//build/cros_cache/chrome-sdk/tarballs/${cros_board}+${cros_sdk_version}"
@@ -64,8 +70,14 @@ template("generate_vm_runner_script") {
rebase_path("//build/cros_cache/", root_build_dir),
"--board",
cros_board,
+ "--output-directory",
+ rebase_path(root_out_dir, root_build_dir),
]
+ if (defined(invoker.deploy_chrome) && invoker.deploy_chrome) {
+ args += [ "--deploy-chrome" ]
+ }
+
# When --test-exe is specified, run_vm_test will push the exe to the VM and
# execute it. Otherwise it wraps a host-side command and just takes care
# launching & tearing-down the VM.
@@ -73,8 +85,6 @@ template("generate_vm_runner_script") {
args += [
"--test-exe",
rebase_path(invoker.test_exe, root_build_dir),
- "--output-directory",
- rebase_path(root_out_dir, root_build_dir),
]
if (defined(invoker.runtime_deps_file)) {
args += [
diff --git a/chromium/build/config/compiler/BUILD.gn b/chromium/build/config/compiler/BUILD.gn
index 959a5923174..d1bb5597f20 100644
--- a/chromium/build/config/compiler/BUILD.gn
+++ b/chromium/build/config/compiler/BUILD.gn
@@ -92,11 +92,12 @@ declare_args() {
auto_profile_path = ""
# Optimize symbol files for maximizing goma cache hit rate. This is on by
- # default only when goma is enabled on Linux because setting this to true may
- # make it harder to debug binaries.
+ # default when goma is enabled on Linux and Windows.
+ # But setting this to true may make it harder to debug binaries on Linux.
# See below reference for detail.
# https://chromium.googlesource.com/chromium/src/+/master/docs/linux_debugging.md#Source-level-debug-with-fdebug_compilation_dir
- strip_absolute_paths_from_debug_symbols = is_linux && use_goma
+ strip_absolute_paths_from_debug_symbols =
+ (is_linux || (is_win && use_lld)) && use_goma
# Allow projects that wish to stay on C++11 to override Chromium's default.
use_cxx11 = false
@@ -128,6 +129,15 @@ declare_args() {
# Turn this on to use ghash feature of lld for faster debug link on Windows.
# http://blog.llvm.org/2018/01/improving-link-time-on-windows-with.html
use_ghash = false
+
+ # Whether to enable ThinLTO optimizations. Turning ThinLTO optimizations on
+ # can substantially increase link time and binary size, but they generally
+ # also make binaries a fair bit faster.
+ #
+ # TODO(gbiv): We disable optimizations by default on most platforms because
+ # the space overhead is too great. We should use some mixture of profiles and
+ # optimization settings to better tune the size increase.
+ thin_lto_enable_optimizations = is_chromeos
}
declare_args() {
@@ -167,7 +177,7 @@ if (gold_path == false) {
}
if (use_debug_fission == "default") {
- use_debug_fission = is_debug && !is_android && !is_win &&
+ use_debug_fission = is_debug && !is_android && !is_fuchsia && !is_win &&
(use_gold || use_lld) && cc_wrapper == ""
}
@@ -380,7 +390,10 @@ config("compiler") {
"-Wl,-z,now",
"-Wl,-z,relro",
]
- if (!using_sanitizer) {
+
+ # Compiler instrumentation can introduce dependencies in DSOs to symbols in
+ # the executable they are loaded into, so they are unresolved at link-time.
+ if (!using_sanitizer && !is_safestack) {
ldflags += [
"-Wl,-z,defs",
"-Wl,--as-needed",
@@ -508,7 +521,6 @@ config("compiler") {
}
# Makes builds independent of absolute file path.
- # clang-cl (used if is_win) doesn't expose this flag.
# Currently disabled for nacl since its toolchain lacks this flag (too old).
# TODO(zforman): Once nacl's toolchain is updated, remove check.
if (symbol_level != 0 && is_clang && !is_nacl && !is_mac && !is_ios &&
@@ -524,6 +536,11 @@ config("compiler") {
"-Xclang",
".",
]
+
+ if (is_win && use_lld) {
+ # Absolutize source file path for PDB.
+ ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
+ }
}
# Tells the compiler not to use absolute paths when passing the default
@@ -542,16 +559,34 @@ config("compiler") {
cxx11_override = use_cxx11
}
- # gnu11/gnu++11 instead of c11/c++11 is needed because some code uses typeof()
- # (a GNU extension).
- # TODO(thakis): Eventually switch this to c++11 instead,
- # http://crbug.com/427584
- cflags_c += [ "-std=gnu11" ]
+ if (is_clang) {
+ standard_prefix = "c"
+
+ # Since we build with -std=c* and not -std=gnu*, _GNU_SOURCE will not be
+ # defined by the compiler. However, lots of code relies on the
+ # non-standard features that _GNU_SOURCE enables, so define it manually.
+ defines += [ "_GNU_SOURCE" ]
+
+ if (is_nacl) {
+ # Undefine __STRICT_ANSI__ to get non-standard features which would
+ # otherwise not be enabled by NaCl's sysroots.
+ cflags += [ "-U__STRICT_ANSI__" ]
+ }
+ } else {
+ # Gcc does not support ##__VA_ARGS__ when in standards-conforming mode,
+ # but we use this feature in several places in Chromium.
+ # TODO(thomasanderson): Replace usages of ##__VA_ARGS__ with the
+ # standard-compliant __VA_OPT__ added by C++20, and switch the gcc build
+ # to -std=c*.
+ standard_prefix = "gnu"
+ }
+
+ cflags_c += [ "-std=${standard_prefix}11" ]
if (cxx11_override) {
# Override Chromium's default for projects that wish to stay on C++11.
- cflags_cc += [ "-std=gnu++11" ]
+ cflags_cc += [ "-std=${standard_prefix}++11" ]
} else {
- cflags_cc += [ "-std=gnu++14" ]
+ cflags_cc += [ "-std=${standard_prefix}++14" ]
}
} else if (!is_win && !is_nacl) {
if (target_os == "android") {
@@ -587,26 +622,28 @@ config("compiler") {
# example by disabling the optimize configuration.
# TODO(pcc): Make this conditional on is_official_build rather than on gn
# flags for specific features.
- if (!is_debug && use_thin_lto && current_toolchain == default_toolchain) {
+ if (!is_debug && use_thin_lto &&
+ (current_toolchain == default_toolchain ||
+ (is_android && defined(android_secondary_abi_toolchain) &&
+ current_toolchain == android_secondary_abi_toolchain))) {
assert(use_lld || target_os == "chromeos",
"gold plugin only supported with ChromeOS")
cflags += [ "-flto=thin" ]
- # Limit the size of the ThinLTO cache to the lesser of 10% of available disk
- # space, 10GB and 100000 files.
- if (use_lld) {
- cache_policy =
- "cache_size=10%:cache_size_bytes=10g:cache_size_files=100000"
+ if (thin_lto_enable_optimizations) {
+ lto_opt_level = 2
+ } else {
+ lto_opt_level = 0
}
+
if (is_win) {
- # This is a straight translation of the non-Windows flags below.
+ # This is a straight translation of the non-Windows flags below,
+ # except we do not use the ThinLTO cache, which leaks temporary
+ # files on Windows (https://crbug.com/871962).
ldflags += [
- "/opt:lldlto=0",
+ "/opt:lldlto=" + lto_opt_level,
"/opt:lldltojobs=8",
- "/lldltocache:" +
- rebase_path("$root_out_dir/thinlto-cache", root_build_dir),
- "/lldltocachepolicy:$cache_policy",
]
} else {
ldflags += [ "-flto=thin" ]
@@ -615,6 +652,10 @@ config("compiler") {
# linker jobs. This is still suboptimal to a potential dynamic
# resource allocation scheme, but should be good enough.
if (use_lld) {
+ # Limit the size of the ThinLTO cache to the lesser of 10% of available disk
+ # space, 10GB and 100000 files.
+ cache_policy =
+ "cache_size=10%:cache_size_bytes=10g:cache_size_files=100000"
ldflags += [
"-Wl,--thinlto-jobs=8",
"-Wl,--thinlto-cache-dir=" +
@@ -624,12 +665,22 @@ config("compiler") {
} else {
ldflags += [ "-Wl,-plugin-opt,jobs=8" ]
}
- }
- # Disable optimization for now because they increase binary size by too
- # much.
- if (use_lld && (is_android || (is_linux && !is_chromeos))) {
- ldflags += [ "-Wl,--lto-O0" ]
+ if (use_lld) {
+ ldflags += [ "-Wl,--lto-O" + lto_opt_level ]
+ if (thin_lto_enable_optimizations) {
+ if (is_android) {
+ # TODO(gbiv): We ideally shouldn't need to specify this; ThinLTO
+ # should be able to better manage binary size increases on its own.
+ ldflags += [
+ "-Wl,-mllvm",
+ "-Wl,-import-instr-limit=5",
+ ]
+ }
+ }
+ } else {
+ not_needed([ "lto_opt_level" ])
+ }
}
# TODO(pcc): Re-enable this flag on Android. This will require libc++ to be
@@ -877,6 +928,7 @@ config("compiler_cpu_abi") {
cflags += [ "-m${mips_float_abi}-float" ]
} else if (current_cpu == "mips64el") {
+ cflags += [ "-D__SANE_USERSPACE_TYPES__" ]
ldflags += [ "-Wl,--hash-style=sysv" ]
if (custom_toolchain == "") {
if (is_clang) {
@@ -1074,20 +1126,6 @@ config("compiler_codegen") {
asmflags = cflags
}
-# This is separate from :compiler_codegen (and not even a sub-config there)
-# so that some targets can remove it from the list with:
-# configs -= [ "//build/config/compiler:clang_stackrealign" ]
-# See https://crbug.com/556393 for details of where it must be avoided.
-config("clang_stackrealign") {
- if (is_clang && current_cpu == "x86" && is_linux) {
- cflags = [
- # Align the stack on 16-byte boundaries, http://crbug.com/418554.
- "-mstack-alignment=16",
- "-mstackrealign",
- ]
- }
-}
-
config("clang_revision") {
if (is_clang && clang_base_path == default_clang_base_path) {
update_args = [
@@ -1308,7 +1346,6 @@ config("default_warnings") {
# http://crbug.com/588506 - Conversion suppressions waiting on Clang
# -Wconversion.
- "/wd4018", # 'expression' : signed/unsigned mismatch
"/wd4245", # 'conversion' : conversion from 'type1' to 'type2',
# signed/unsigned mismatch
@@ -1447,9 +1484,6 @@ config("default_warnings") {
cflags += [
# TODO(thakis): https://crbug.com/604888
"-Wno-undefined-var-template",
-
- # TODO(hans): https://crbug.com/637306
- "-Wno-address-of-packed-member",
]
if (current_toolchain == host_toolchain || !use_xcode_clang ||
xcode_version_int >= 930) {
@@ -1637,6 +1671,19 @@ config("no_rtti") {
}
}
+# export_dynamic ---------------------------------------------------------------
+#
+# Ensures all exported symbols are added to the dynamic symbol table. This is
+# necessary to expose Chrome's custom operator new() and operator delete() (and
+# other memory-related symbols) to libraries. Otherwise, they might
+# (de)allocate memory on a different heap, which would spell trouble if pointers
+# to heap-allocated memory are passed over shared library boundaries.
+config("export_dynamic") {
+ if (is_desktop_linux || export_libcxxabi_from_executables) {
+ ldflags = [ "-rdynamic" ]
+ }
+}
+
# thin_archive -----------------------------------------------------------------
#
# Enables thin archives on posix. Regular archives directly include the object
@@ -2222,6 +2269,15 @@ config("minimal_symbols") {
# Linker symbols for backtraces only.
cflags = []
ldflags = [ "/DEBUG" ]
+
+ # For win/asan, get stack traces with full line numbers.
+ # AddressSanitizerTests.TestAddressSanitizer needs this, and since
+ # win/asan isn't a default cq bot the build time hit is ok.
+ if (is_clang && using_sanitizer) {
+ # -gline-tables-only is the same as -g1, but clang-cl only exposes the
+ # former.
+ cflags += [ "-gline-tables-only" ]
+ }
} else {
cflags = []
if (target_cpu == "arm") {
diff --git a/chromium/build/config/compiler/compiler.gni b/chromium/build/config/compiler/compiler.gni
index 0b13302021b..4a6fd985fb4 100644
--- a/chromium/build/config/compiler/compiler.gni
+++ b/chromium/build/config/compiler/compiler.gni
@@ -43,7 +43,10 @@ declare_args() {
# Enables support for ThinLTO, which links 3x-10x faster than full LTO. See
# also http://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html
- use_thin_lto = is_cfi
+ # NOTE: See http://crbug.com/871722 to understand why this is disabled for
+ # 32-bit Android/ARM
+ use_thin_lto =
+ is_cfi || (is_android && is_official_build && target_cpu != "arm")
# Tell VS to create a PDB that references information in .obj files rather
# than copying it all. This should improve linker performance. mspdbcmf.exe
@@ -80,7 +83,7 @@ exclude_unwind_tables =
# Linux & Mac favor speed over size.
# TODO(brettw) it's weird that Mac and desktop Linux are different. We should
# explore favoring size over speed in this case as well.
-optimize_for_size = is_android || is_ios
+optimize_for_size = is_android || is_ios || is_fuchsia
declare_args() {
# Whether we should consider the profile we're using to be accurate. Accurate
@@ -209,7 +212,9 @@ if (symbol_level == -1) {
# them off, but keep them on for Official builds and Chromecast builds.
symbol_level = 2
} else if (using_sanitizer) {
- # Sanitizers require symbols for filename suppressions to work.
+ # Sanitizers need line table info for stack traces. They don't need type
+ # info or variable info, so we can leave that out to speed up the build.
+ # Sanitizers also require symbols for filename suppressions to work.
symbol_level = 1
} else {
symbol_level = 0
diff --git a/chromium/build/config/coverage/BUILD.gn b/chromium/build/config/coverage/BUILD.gn
index fb37787ccbf..6fd4fd5fe25 100644
--- a/chromium/build/config/coverage/BUILD.gn
+++ b/chromium/build/config/coverage/BUILD.gn
@@ -17,10 +17,25 @@ config("default_coverage") {
"-mllvm",
"-limited-coverage-experimental=true",
]
- ldflags = [ "-fprofile-instr-generate" ]
+ ldflags = []
if (!is_win) {
+ ldflags += [ "-fprofile-instr-generate" ]
cflags += [ "-fno-use-cxa-atexit" ]
+ } else {
+ # Windows directly calls link.exe instead of the compiler driver when
+ # linking. Hence, pass the runtime libraries instead of
+ # -fsanitize=address.
+ # TODO(rnk): Come up with a more uniform approach for linking against
+ # compiler-rt for sanitizers and coverage.
+ if (target_cpu == "x64") {
+ ldflags += [ "clang_rt.profile-x86_64.lib" ]
+ } else if (target_cpu == "x86") {
+ ldflags += [ "clang_rt.profile-i386.lib" ]
+ } else {
+ assert(false &&
+ "use_clang_coverage=true not supported yet for this target_cpu")
+ }
}
}
}
diff --git a/chromium/build/config/fuchsia/BUILD.gn b/chromium/build/config/fuchsia/BUILD.gn
index ab88b6eac0b..bb26045fe18 100644
--- a/chromium/build/config/fuchsia/BUILD.gn
+++ b/chromium/build/config/fuchsia/BUILD.gn
@@ -34,11 +34,11 @@ config("compiler") {
# patches, we might want to make tools/clang/scripts/update.py build it
# and bundle it with the clang package instead of using the library from
# the SDK, https://crbug.com/724204
- # Note: Intentionally 7.0.0 instead of $clang_version because the clang
+ # Note: Intentionally 8.0.0 instead of $clang_version because the clang
# version of the toolchain_libs directory in the Fuchsia SDK can be
# different from the version of Chromium's clang.
"-resource-dir",
- rebase_path(fuchsia_sdk, root_build_dir) + "/toolchain_libs/clang/7.0.0",
+ rebase_path(fuchsia_sdk, root_build_dir) + "/toolchain_libs/clang/8.0.0",
# The stack defaults to 256k on Fuchsia (see
# https://fuchsia.googlesource.com/zircon/+/master/system/private/zircon/stack.h#9),
@@ -121,8 +121,7 @@ action("blobstore_extended_qcow2") {
]
args = [
- rebase_path("//third_party/fuchsia-sdk/sdk/qemu/bin/qemu-img",
- root_build_dir),
+ rebase_path("${qemu_root}/bin/qemu-img", root_build_dir),
"convert",
"-f",
"raw",
diff --git a/chromium/build/config/fuchsia/build_manifest.py b/chromium/build/config/fuchsia/build_manifest.py
index 4896c1e92bd..db0db8cbae8 100644
--- a/chromium/build/config/fuchsia/build_manifest.py
+++ b/chromium/build/config/fuchsia/build_manifest.py
@@ -179,10 +179,13 @@ def BuildManifest(root_dir, out_dir, app_name, app_filename,
# Compute the set of dynamic libraries used by the application or its
# transitive dependencies (dist libs and components), and merge the result
# with |expanded_files| so that they are included in the manifest.
- expanded_files = expanded_files.union(
- ComputeTransitiveLibDeps(
- app_filename,
- {os.path.basename(f): f for f in expanded_files.union(dist_libs)}))
+
+ # TODO(https://crbug.com/861931): Temporarily just include all |dist_libs|.
+ #expanded_files = expanded_files.union(
+ # ComputeTransitiveLibDeps(
+ # app_filename,
+ # {os.path.basename(f): f for f in expanded_files.union(dist_libs)}))
+ expanded_files = expanded_files.union(dist_libs)
# Format and write out the manifest contents.
app_found = False
diff --git a/chromium/build/config/fuchsia/config.gni b/chromium/build/config/fuchsia/config.gni
index 52ca5e07adf..165153b2b55 100644
--- a/chromium/build/config/fuchsia/config.gni
+++ b/chromium/build/config/fuchsia/config.gni
@@ -17,3 +17,6 @@ if (current_cpu == "arm64") {
} else {
assert(false, "No libraries available for architecture: $current_cpu")
}
+
+# Compute the qemu path.
+qemu_root = "//third_party/qemu-${host_os}-${host_cpu}"
diff --git a/chromium/build/config/fuchsia/rules.gni b/chromium/build/config/fuchsia/rules.gni
index 85c9265f8c4..5194707b5c5 100644
--- a/chromium/build/config/fuchsia/rules.gni
+++ b/chromium/build/config/fuchsia/rules.gni
@@ -51,10 +51,13 @@ template("fuchsia_package_runner") {
deps = [
"//build/config/fuchsia:blobstore_extended_qcow2",
- "//testing/buildbot/filters:fuchsia_filters",
invoker.package,
]
+ if (defined(invoker.deps)) {
+ deps += invoker.deps
+ }
+
script = "//build/fuchsia/create_runner_script.py"
outputs = [
@@ -66,6 +69,7 @@ template("fuchsia_package_runner") {
_manifest_path,
"//build/fuchsia/",
"//build/util/lib/",
+ "${qemu_root}/",
"${fuchsia_sdk}/",
]
diff --git a/chromium/build/config/fuchsia/sandbox_policy b/chromium/build/config/fuchsia/sandbox_policy
index 9419bdd2b34..bbf871d30b1 100644
--- a/chromium/build/config/fuchsia/sandbox_policy
+++ b/chromium/build/config/fuchsia/sandbox_policy
@@ -1,4 +1,4 @@
{
- "features": [ "persistent-storage", "root-ssl-certificates", "system-temp" ]
+ "features": [ "persistent-storage", "root-ssl-certificates", "system-temp",
+ "deprecated-all-services", "vulkan" ]
}
-
diff --git a/chromium/build/config/fuchsia/testing_sandbox_policy b/chromium/build/config/fuchsia/testing_sandbox_policy
index 9d4db8f6faa..9da8b2213ae 100644
--- a/chromium/build/config/fuchsia/testing_sandbox_policy
+++ b/chromium/build/config/fuchsia/testing_sandbox_policy
@@ -1,5 +1,5 @@
{
- "features": [ "persistent-storage", "root-ssl-certificates", "system-temp"],
+ "features": [ "persistent-storage", "root-ssl-certificates", "system-temp",
+ "deprecated-all-services", "vulkan" ],
"dev": ["null", "zero"]
}
-
diff --git a/chromium/build/config/gcc/BUILD.gn b/chromium/build/config/gcc/BUILD.gn
index b6f4f5f2a93..365cbf90f09 100644
--- a/chromium/build/config/gcc/BUILD.gn
+++ b/chromium/build/config/gcc/BUILD.gn
@@ -51,14 +51,6 @@ config("symbol_visibility_default") {
# step will put the directory where the build generates shared libraries into
# the rpath.
#
-# It's important that this *not* be used for release builds we push out.
-# Chrome uses some setuid binaries, and hard links preserve setuid bits. An
-# unprivileged user could gain root privileges by hardlinking a setuid
-# executable and then adding in whatever binaries they want to run into the lib
-# directory.
-#
-# Example bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520126
-#
# This is required for component builds since the build generates many shared
# libraries in the build directory that we expect to be automatically loaded.
# It will be automatically applied in this case by :executable_ldconfig.
@@ -73,11 +65,7 @@ config("symbol_visibility_default") {
config("rpath_for_built_shared_libraries") {
if (!is_android) {
# Note: Android doesn't support rpath.
- if (shlib_subdir != ".") {
- rpath_link = "${shlib_subdir}/"
- } else {
- rpath_link = "."
- }
+ rpath_link = "."
if (current_toolchain != default_toolchain || gcc_target_rpath == "") {
ldflags = [
# Want to pass "\$". GN will re-escape as required for ninja.
@@ -98,10 +86,6 @@ config("rpath_for_built_shared_libraries") {
# Settings for executables.
config("executable_ldconfig") {
- # WARNING! //sandbox/linux:chrome_sandbox will not pick up this
- # config, because it is a setuid binary that needs special flags.
- # If you add things to this config, make sure you check to see
- # if they should be added to that target as well.
ldflags = []
if (is_android) {
ldflags += [
@@ -110,8 +94,8 @@ config("executable_ldconfig") {
]
} else {
# See the rpath_for... config above for why this is necessary for component
- # builds. Sanitizers use a custom libc++ where this is also necessary.
- if (is_component_build || using_sanitizer || !libcpp_is_static) {
+ # builds.
+ if (is_component_build) {
configs = [ ":rpath_for_built_shared_libraries" ]
}
if (current_cpu == "mipsel" || current_cpu == "mips64el") {
@@ -124,9 +108,6 @@ config("executable_ldconfig") {
# relative to the build directory. ${root_out_dir} will be a
# subdirectory of ${root_build_dir} when cross compiling.
_rpath_link = rebase_path(root_out_dir, root_build_dir)
- if (shlib_subdir != ".") {
- _rpath_link += "/$shlib_subdir"
- }
ldflags += [
"-Wl,-rpath-link=$_rpath_link",
diff --git a/chromium/build/config/ios/ios_sdk.gni b/chromium/build/config/ios/ios_sdk.gni
index 35de13b28ef..c9dff44add6 100644
--- a/chromium/build/config/ios/ios_sdk.gni
+++ b/chromium/build/config/ios/ios_sdk.gni
@@ -133,8 +133,11 @@ if (ios_enable_code_signing && !use_ios_simulator) {
find_signing_identity_args,
"list lines")
if (_ios_identities == []) {
- print("Tried to prepare a device build without specifying a code signing")
- print("identity and could not detect one automatically either.")
+ print("Automatic code signing identity selection was enabled but could")
+ print("not find exactly one code signing identity matching")
+ print("$ios_code_signing_identity_description. Check that your keychain")
+ print("is accessible and that there is a valid code signing identity")
+ print("listed by `xcrun security find-identity -v -p codesigning`")
print("TIP: Simulator builds don't require code signing...")
assert(false)
} else {
@@ -163,4 +166,4 @@ if (ios_enable_code_signing && !use_ios_simulator) {
}
}
-assert(xcode_version_int >= 900, "Xcode 9 is required.")
+assert(xcode_version_int >= 1000, "Xcode 10 is required.")
diff --git a/chromium/build/config/ios/rules.gni b/chromium/build/config/ios/rules.gni
index 02725177aa8..063b964c09d 100644
--- a/chromium/build/config/ios/rules.gni
+++ b/chromium/build/config/ios/rules.gni
@@ -7,6 +7,11 @@ import("//build/config/mac/base_rules.gni")
import("//build/config/mac/symbols.gni")
import("//build/toolchain/toolchain.gni")
+# Constants corresponding to the bundle type identifier for XCTest and XCUITest
+# targets.
+_ios_xcode_xctest_bundle_id = "com.apple.product-type.bundle.unit-test"
+_ios_xcode_xcuitest_bundle_id = "com.apple.product-type.bundle.ui-testing"
+
# Invokes lipo on multiple arch-specific binaries to create a fat binary.
#
# Arguments
@@ -210,8 +215,8 @@ template("create_signed_bundle") {
if (defined(invoker.xcode_test_application_name)) {
assert(
- invoker.product_type == "com.apple.product-type.bundle.unit-test" ||
- invoker.product_type == "com.apple.product-type.bundle.ui-testing",
+ invoker.product_type == _ios_xcode_xctest_bundle_id ||
+ invoker.product_type == _ios_xcode_xcuitest_bundle_id,
"xcode_test_application_name can be only defined for Xcode unit or ui test target.")
}
@@ -285,7 +290,6 @@ template("create_signed_bundle") {
"public_deps",
"testonly",
"visibility",
- "xcode_extra_attributes",
"xcode_test_application_name",
])
@@ -299,6 +303,15 @@ template("create_signed_bundle") {
public_deps = []
}
+ xcode_extra_attributes = {
+ IPHONEOS_DEPLOYMENT_TARGET = ios_deployment_target
+
+ # If invoker has defined extra attributes, they override the defaults.
+ if (defined(invoker.xcode_extra_attributes)) {
+ forward_variables_from(invoker.xcode_extra_attributes, "*")
+ }
+ }
+
if (defined(invoker.bundle_binary_target)) {
public_deps += [ invoker.bundle_binary_target ]
}
@@ -1574,8 +1587,8 @@ template("ios_xctest_bundle") {
assert(defined(invoker.deps), "deps must be defined for $target_name")
assert(defined(invoker.product_type),
"product_type must be defined for $target_name")
- assert(invoker.product_type == "com.apple.product-type.bundle.unit-test" ||
- invoker.product_type == "com.apple.product-type.bundle.ui-testing",
+ assert(invoker.product_type == _ios_xcode_xctest_bundle_id ||
+ invoker.product_type == _ios_xcode_xcuitest_bundle_id,
"product_type defined for $target_name is invalid.")
assert(defined(invoker.host_target),
"host_target must be defined for $target_name")
@@ -1712,9 +1725,18 @@ template("ios_xctest_bundle") {
# For XCUITest, Xcode requires specifying the host application name via
# the TEST_TARGET_NAME attribute.
- if (invoker.product_type == "com.apple.product-type.bundle.ui-testing") {
+ if (invoker.product_type == _ios_xcode_xcuitest_bundle_id) {
TEST_TARGET_NAME = invoker.xcode_test_application_name
}
+
+ # For XCTest, Xcode requires specifying the host application path via
+ # both BUNDLE_LOADER and TEST_HOST attributes.
+ if (invoker.product_type == _ios_xcode_xctest_bundle_id) {
+ BUNDLE_LOADER = "\$(TEST_HOST)"
+ TEST_HOST =
+ "\$(BUILT_PRODUCTS_DIR)/${invoker.xcode_test_application_name}" +
+ ".app/${invoker.xcode_test_application_name}"
+ }
}
deps = [
@@ -1773,7 +1795,7 @@ template("ios_xctest_test") {
ios_xctest_bundle(_xctest_target) {
output_name = _xctest_output
- product_type = "com.apple.product-type.bundle.unit-test"
+ product_type = _ios_xcode_xctest_bundle_id
host_target = _host_target
xcode_test_application_name = _host_output
@@ -2011,7 +2033,7 @@ template("ios_xcuitest_test") {
ios_xctest_bundle(_xcuitest_module_target) {
forward_variables_from(invoker, [ "xcode_test_application_name" ])
- product_type = "com.apple.product-type.bundle.ui-testing"
+ product_type = _ios_xcode_xcuitest_bundle_id
host_target = _xcuitest_runner_target
output_name = _xcuitest_module_output
diff --git a/chromium/build/config/linux/atk/BUILD.gn b/chromium/build/config/linux/atk/BUILD.gn
index 89eedff121b..59c06f8ee2c 100644
--- a/chromium/build/config/linux/atk/BUILD.gn
+++ b/chromium/build/config/linux/atk/BUILD.gn
@@ -3,7 +3,6 @@
# found in the LICENSE file.
import("//build/config/features.gni")
-import("//build/config/linux/gtk/gtk.gni")
import("//build/config/linux/pkg_config.gni")
import("//build/config/ui.gni")
@@ -18,18 +17,20 @@ if (use_atk) {
}
pkg_config("atk_base") {
- packages = [ "atk" ]
+ packages = [
+ "atk",
+ "atk-bridge-2.0",
+ ]
atk_lib_dir = exec_script(pkg_config_script,
pkg_config_args + [
"--libdir",
"atk",
],
"string")
- defines = [ "ATK_LIB_DIR=\"$atk_lib_dir\"" ]
- if (use_gtk3) {
- packages += [ "atk-bridge-2.0" ]
- defines += [ "USE_ATK_BRIDGE" ]
- }
+ defines = [
+ "ATK_LIB_DIR=\"$atk_lib_dir\"",
+ "USE_ATK_BRIDGE",
+ ]
}
# gn orders flags on a target before flags from configs. The default config
diff --git a/chromium/build/config/linux/gtk/BUILD.gn b/chromium/build/config/linux/gtk/BUILD.gn
index deae4d3455a..a2b40d82674 100644
--- a/chromium/build/config/linux/gtk/BUILD.gn
+++ b/chromium/build/config/linux/gtk/BUILD.gn
@@ -7,10 +7,18 @@ import("//build/config/linux/pkg_config.gni")
assert(is_linux, "This file should only be referenced on Linux")
-# The target in this file will automatically reference GTK2 or GTK3 depending
-# on the state of the build flag. Some builds reference both 2 and 3, and some
-# builds reference neither, so both need to be available but in different
-# directories so pkg-config is only run when necessary.
+# GN doesn't check visibility for configs so we give this an obviously internal
+# name to discourage random targets from accidentally depending on this and
+# bypassing the GTK target's visibility.
+pkg_config("gtk_internal_config") {
+ # Gtk requires gmodule, but it does not list it as a dependency in some
+ # misconfigured systems.
+ packages = [
+ "gmodule-2.0",
+ "gtk+-${gtk_version}.0",
+ "gthread-2.0",
+ ]
+}
# Basically no parts of Chrome should depend on GTK. To prevent accidents, the
# parts that explicitly need GTK are whitelisted on this target.
@@ -27,15 +35,18 @@ group("gtk") {
"//remoting/host:remoting_me2me_host_static",
"//remoting/test:it2me_standalone_host_main",
"//webrtc/examples:peerconnection_client",
+ "//chrome/browser/ui/libgtkui:*",
]
- if (use_gtk3) {
- public_deps = [
- "//build/config/linux/gtk3",
- ]
- } else {
- public_deps = [
- "//build/config/linux/gtk2",
- ]
- }
+ public_configs = [ ":gtk_internal_config" ]
+}
+
+# Depend on "gtkprint" to get this.
+pkg_config("gtkprint_internal_config") {
+ packages = [ "gtk+-unix-print-${gtk_version}.0" ]
+}
+
+group("gtkprint") {
+ visibility = [ "//chrome/browser/ui/libgtkui:*" ]
+ public_configs = [ ":gtkprint_internal_config" ]
}
diff --git a/chromium/build/config/linux/gtk/gtk.gni b/chromium/build/config/linux/gtk/gtk.gni
index 53e943e14d2..1e0e6ace0f3 100644
--- a/chromium/build/config/linux/gtk/gtk.gni
+++ b/chromium/build/config/linux/gtk/gtk.gni
@@ -1,12 +1,10 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
+# Copyright 2018 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.
-# Include this file if you need to know at build time whether we're compiling
-# against GTK 2 or 3. But in most cases you can just depend on
-# //build/config/linux/gtk and it will switch for you.
-
declare_args() {
- # Whether to compile against GTKv3 instead of GTKv2.
- use_gtk3 = true
+ # The (major) version of GTK to build against.
+ gtk_version = 3
}
+
+assert(gtk_version >= 3 && gtk_version <= 4)
diff --git a/chromium/build/config/linux/gtk2/BUILD.gn b/chromium/build/config/linux/gtk2/BUILD.gn
deleted file mode 100644
index 010d592df4a..00000000000
--- a/chromium/build/config/linux/gtk2/BUILD.gn
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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.
-
-import("//build/config/linux/pkg_config.gni")
-
-assert(is_linux, "This file should only be referenced on Linux")
-
-# Depend on //build/config/linux/gtk2 to use GTKv2. Depend on
-# //build/config/linux/gtk to get GTK 2 or 3 depending on the build flags.
-#
-# GN doesn't check visibility for configs so we give this an obviously internal
-# name to discourage random targets from accidentally depending on this and
-# bypassing the GTK target's visibility.
-pkg_config("gtk2_internal_config") {
- # Gtk requires gmodule, but it does not list it as a dependency in some
- # misconfigured systems.
- packages = [
- "gmodule-2.0",
- "gtk+-2.0",
- "gthread-2.0",
- ]
-}
-
-# Basically no parts of Chrome should depend on GTK. To prevent accidents, the
-# parts that explicitly need GTK2 are whitelisted on this target.
-group("gtk2") {
- visibility = [
- "//build/config/linux/gtk",
- "//chrome/browser/ui/libgtkui:*",
- ]
- public_configs = [ ":gtk2_internal_config" ]
-}
-
-# Depend on "gtkprint" to get this.
-pkg_config("gtkprint2_internal_config") {
- packages = [ "gtk+-unix-print-2.0" ]
-}
-
-group("gtkprint2") {
- visibility = [ "//chrome/browser/ui/libgtkui:libgtk2ui" ]
- public_configs = [ ":gtkprint2_internal_config" ]
-}
diff --git a/chromium/build/config/linux/gtk3/BUILD.gn b/chromium/build/config/linux/gtk3/BUILD.gn
deleted file mode 100644
index 0cfd05f3193..00000000000
--- a/chromium/build/config/linux/gtk3/BUILD.gn
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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.
-
-import("//build/config/linux/pkg_config.gni")
-
-assert(is_linux, "This file should only be referenced on Linux")
-
-# Depend on //build/config/linux/gtk3 to use GTKv3. Depend on
-# //build/config/linux/gtk to get GTK 2 or 3 depending on the build flags.
-#
-# GN doesn't check visibility for configs so we give this an obviously internal
-# name to discourage random targets from accidentally depending on this and
-# bypassing the GTK target's visibility.
-pkg_config("gtk3_internal_config") {
- # Gtk requires gmodule, but it does not list it as a dependency in some
- # misconfigured systems.
- packages = [
- "gmodule-2.0",
- "gtk+-3.0",
- "gthread-2.0",
- ]
-}
-
-# Basically no parts of Chrome should depend on GTK. To prevent accidents, the
-# parts that explicitly need GTK3 are whitelisted on this target.
-group("gtk3") {
- visibility = [
- "//build/config/linux/gtk",
- "//chrome/browser/ui/libgtkui:*",
- ]
- public_configs = [ ":gtk3_internal_config" ]
-}
-
-# Depend on "gtkprint3" to get this.
-pkg_config("gtkprint3_internal_config") {
- packages = [ "gtk+-unix-print-3.0" ]
-}
-
-group("gtkprint3") {
- visibility = [ "//chrome/browser/ui/libgtkui:libgtk3ui" ]
- public_configs = [ ":gtkprint3_internal_config" ]
-}
diff --git a/chromium/build/secondary/third_party/nss/BUILD.gn b/chromium/build/config/linux/nss/BUILD.gn
index 5788f3e5d6d..5788f3e5d6d 100644
--- a/chromium/build/secondary/third_party/nss/BUILD.gn
+++ b/chromium/build/config/linux/nss/BUILD.gn
diff --git a/chromium/build/config/linux/pkg_config.gni b/chromium/build/config/linux/pkg_config.gni
index 53ee353af8b..428e44ac0a0 100644
--- a/chromium/build/config/linux/pkg_config.gni
+++ b/chromium/build/config/linux/pkg_config.gni
@@ -103,11 +103,15 @@ template("pkg_config") {
pkgresult = exec_script(pkg_config_script, args, "value")
cflags = pkgresult[1]
- # We want the system include paths to use -isystem instead of -I to suppress
- # warnings in those headers.
foreach(include, pkgresult[0]) {
- include_relativized = rebase_path(include, root_build_dir)
- cflags += [ "-isystem$include_relativized" ]
+ if (use_sysroot) {
+ # We want the system include paths to use -isystem instead of -I to
+ # suppress warnings in those headers.
+ include_relativized = rebase_path(include, root_build_dir)
+ cflags += [ "-isystem$include_relativized" ]
+ } else {
+ cflags += [ "-I$include" ]
+ }
}
if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) {
diff --git a/chromium/build/config/mac/rules.gni b/chromium/build/config/mac/rules.gni
index 987266117ab..d9f4b6e6733 100644
--- a/chromium/build/config/mac/rules.gni
+++ b/chromium/build/config/mac/rules.gni
@@ -360,6 +360,10 @@ template("mac_framework_bundle") {
# TODO(sdefresne): should we have a framework_dirs similar to lib_dirs
# and include_dirs to avoid duplicate values on the command-line.
visibility = [ ":$_framework_target" ]
+ cflags = [
+ "-F",
+ rebase_path("$root_out_dir/.", root_build_dir),
+ ]
ldflags = [
"-F",
rebase_path("$root_out_dir/.", root_build_dir),
diff --git a/chromium/build/config/posix/BUILD.gn b/chromium/build/config/posix/BUILD.gn
index 91405fd7e56..43655a6eb87 100644
--- a/chromium/build/config/posix/BUILD.gn
+++ b/chromium/build/config/posix/BUILD.gn
@@ -35,12 +35,12 @@ config("runtime_library") {
libs = []
if (use_custom_libcxx) {
- if (libcpp_is_static) {
+ if (!is_component_build) {
# Don't leak any symbols on a static build.
- defines += [
- "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
- "_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
- ]
+ defines += [ "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS" ]
+ if (!export_libcxxabi_from_executables) {
+ defines += [ "_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS" ]
+ }
}
if (!is_clang) {
# Gcc has a built-in abs() definition with default visibility.
diff --git a/chromium/build/config/python.gni b/chromium/build/config/python.gni
index e24025f68fd..4e71e87886b 100644
--- a/chromium/build/config/python.gni
+++ b/chromium/build/config/python.gni
@@ -59,3 +59,108 @@ template("python_library") {
}
}
}
+
+# A template used for actions that execute a Python script, which has an
+# associated .pydeps file. In other words:
+#
+# - This is very similar to just an action(), except that |script| must point
+# to a Python script (e.g. "//build/.../foo.py") that has a corresponding
+# .pydeps file in the source tree (e.g. "//build/.../foo.pydeps").
+#
+# - The .pydeps file contains a list of python dependencies (imports really)
+# and is generated _manually_ by using a command like:
+#
+# build/print_python_deps.py --inplace build/android/gyp/foo.py
+#
+template("action_with_pydeps") {
+ # Read the .pydeps file now. Note that this is done everytime this
+ # template is called, but benchmarking doesn't show any impact on overall
+ # 'gn gen' speed anyway.
+ _pydeps_file = invoker.script + "deps"
+ _pydeps_raw = read_file(_pydeps_file, "list lines")
+
+ # Filter out comments.
+ # This is a bit convoluted to preserve the value of sources if defined.
+ _old_sources = []
+ if (defined(sources)) {
+ _old_sources = sources
+ }
+ set_sources_assignment_filter([ "#*" ])
+ sources = _pydeps_raw
+ _pydeps = sources
+ set_sources_assignment_filter([])
+ sources = _old_sources
+
+ action(target_name) {
+ # Forward all variables. Ensure that testonly and visibility are forwarded
+ # explicitly, since this performs recursive scope lookups, which is
+ # required to ensure their definition from scopes above the caller are
+ # properly handled. All other variables are forwarded with "*", which
+ # doesn't perform recursive lookups at all. See https://crbug.com/862232
+ forward_variables_from(invoker,
+ [
+ "testonly",
+ "visibility",
+ ])
+ forward_variables_from(invoker,
+ "*",
+ [
+ "testonly",
+ "visibility",
+ ])
+
+ if (!defined(inputs)) {
+ inputs = []
+ }
+
+ # Dependencies are listed relative to the script directory, but inputs
+ # expects paths that are relative to the current BUILD.gn
+ _script_dir = get_path_info(script, "dir")
+ inputs += rebase_path(_pydeps, ".", _script_dir)
+ }
+}
+
+template("action_foreach_with_pydeps") {
+ _pydeps_file = invoker.script + "deps"
+ _pydeps_raw = read_file(_pydeps_file, "list lines")
+
+ # Filter out comments.
+ # This is a bit convoluted to preserve the value of sources if defined.
+ _old_sources = []
+ if (defined(sources)) {
+ _old_sources = sources
+ }
+ set_sources_assignment_filter([ "#*" ])
+ sources = _pydeps_raw
+ _pydeps = sources
+ set_sources_assignment_filter([])
+ sources = _old_sources
+
+ action_foreach(target_name) {
+ # Forward all variables. Ensure that testonly and visibility are forwarded
+ # explicitly, since this performs recursive scope lookups, which is
+ # required to ensure their definition from scopes above the caller are
+ # properly handled. All other variables are forwarded with "*", which
+ # doesn't perform recursive lookups at all. See https://crbug.com/862232
+ forward_variables_from(invoker,
+ [
+ "testonly",
+ "visibility",
+ ])
+ forward_variables_from(invoker,
+ "*",
+ [
+ "testonly",
+ "visibility",
+ ])
+
+ if (!defined(inputs)) {
+ inputs = []
+ }
+
+ # Dependencies are listed relative to the script directory, but inputs
+ # expects paths that are relative to the current BUILD.gn
+ _script_dir = get_path_info(script, "dir")
+ inputs += rebase_path(_pydeps, ".", _script_dir)
+ }
+}
diff --git a/chromium/build/config/sanitizers/BUILD.gn b/chromium/build/config/sanitizers/BUILD.gn
index ba5edc1c2f4..2ad0304f177 100644
--- a/chromium/build/config/sanitizers/BUILD.gn
+++ b/chromium/build/config/sanitizers/BUILD.gn
@@ -197,9 +197,16 @@ config("default_sanitizer_ldflags") {
if (is_ubsan_vptr) {
ldflags += [ "-fsanitize=vptr" ]
}
+ if (is_safestack) {
+ ldflags += [ "-fsanitize=safe-stack" ]
+ }
if (use_sanitizer_coverage) {
- ldflags += [ "-fsanitize-coverage=$sanitizer_coverage_flags" ]
+ if (use_libfuzzer) {
+ ldflags += [ "-fsanitize=fuzzer-no-link" ]
+ } else {
+ ldflags += [ "-fsanitize-coverage=$sanitizer_coverage_flags" ]
+ }
}
if (is_cfi && current_toolchain == default_toolchain) {
@@ -249,25 +256,16 @@ config("default_sanitizer_ldflags") {
config("common_sanitizer_flags") {
cflags = []
- # Sanitizers need line table info for stack traces. They don't need type info
- # or variable info, so we can leave that out to speed up the build (unless
- # it's explicitly asked for by setting |sanitizer_keep_symbols| to true).
if (using_sanitizer) {
assert(is_clang, "sanitizers only supported with clang")
assert(!is_official_build, "sanitizers not supported in official builds")
- if (!sanitizer_no_symbols) {
- if (!sanitizer_keep_symbols) {
- cflags += [ "-gline-tables-only" ]
- }
-
- cflags += [
- # Column info in debug data confuses Visual Studio's debugger, so don't
- # use this by default. However, clusterfuzz needs it for good
- # attribution of reports to CLs, so turn it on there.
- "-gcolumn-info",
- ]
- }
+ cflags += [
+ # Column info in debug data confuses Visual Studio's debugger, so don't
+ # use this by default. However, clusterfuzz needs it for good
+ # attribution of reports to CLs, so turn it on there.
+ "-gcolumn-info",
+ ]
# Frame pointers are controlled in //build/config/compiler:default_stack_frames
}
@@ -384,19 +382,24 @@ config("cfi_icall_generalize_pointers") {
config("coverage_flags") {
cflags = []
if (use_sanitizer_coverage) {
- cflags += [
- "-fsanitize-coverage=$sanitizer_coverage_flags",
- "-mllvm",
- "-sanitizer-coverage-prune-blocks=1",
- ]
- if (current_cpu == "arm") {
- # http://crbug.com/517105
+ # Used by sandboxing code to allow coverage dump to be written on the disk.
+ defines = [ "SANITIZER_COVERAGE" ]
+ if (use_libfuzzer) {
+ cflags += [ "-fsanitize=fuzzer-no-link" ]
+ } else {
cflags += [
+ "-fsanitize-coverage=$sanitizer_coverage_flags",
"-mllvm",
- "-sanitizer-coverage-block-threshold=0",
+ "-sanitizer-coverage-prune-blocks=1",
]
+ if (current_cpu == "arm") {
+ # http://crbug.com/517105
+ cflags += [
+ "-mllvm",
+ "-sanitizer-coverage-block-threshold=0",
+ ]
+ }
}
- defines = [ "SANITIZER_COVERAGE" ]
}
}
@@ -421,6 +424,12 @@ config("msan_flags") {
}
}
+config("safestack_flags") {
+ if (is_safestack) {
+ cflags = [ "-fsanitize=safe-stack" ]
+ }
+}
+
config("tsan_flags") {
if (is_tsan) {
assert(is_linux, "tsan only supported on linux x86_64")
@@ -536,6 +545,7 @@ all_sanitizer_configs = [
":cfi_flags",
":lsan_flags",
":msan_flags",
+ ":safestack_flags",
":tsan_flags",
":ubsan_flags",
":ubsan_no_recover",
diff --git a/chromium/build/config/sanitizers/sanitizers.gni b/chromium/build/config/sanitizers/sanitizers.gni
index 1c6218641cc..84ce878aaf7 100644
--- a/chromium/build/config/sanitizers/sanitizers.gni
+++ b/chromium/build/config/sanitizers/sanitizers.gni
@@ -33,6 +33,9 @@ declare_args() {
# Compile for Undefined Behaviour Sanitizer's vptr checks.
is_ubsan_vptr = false
+ # Compile with SafeStack shadow stack support.
+ is_safestack = false
+
# Track where uninitialized memory originates from. From fastest to slowest:
# 0 - no tracking, 1 - track only the initial allocation site, 2 - track the
# chain of stores leading from allocation site to use site.
@@ -97,21 +100,13 @@ declare_args() {
# Value for -fsanitize-coverage flag. Setting this causes
# use_sanitizer_coverage to be enabled.
- # Default value when unset and use_fuzzing_engine=true:
+ # This flag is not used for libFuzzer (use_libfuzzer=true). Instead, we use:
+ # -fsanitize=fuzzer-no-link
+ # Default value when unset and use_afl=true:
# trace-pc-guard
# Default value when unset and use_sanitizer_coverage=true:
# trace-pc-guard,indirect-calls
sanitizer_coverage_flags = ""
-
- # Keep symbol level when building with sanitizers. When sanitizers are
- # enabled, the default is to compile with the minimum debug info level
- # necessary, overriding any other symbol level arguments that may be set.
- # Setting this to true prevents this.
- sanitizer_keep_symbols = false
-
- # Builds fuzzer/sanitizers without symbols. Use with symbol_level=0.
- # Useful for reducing binary size when building with use_clang_coverage=true.
- sanitizer_no_symbols = false
}
# Disable sanitizers for non-default toolchains.
@@ -163,9 +158,9 @@ if (use_fuzzing_engine && sanitizer_coverage_flags == "") {
sanitizer_coverage_flags = "trace-pc-guard,indirect-calls"
}
-# Whether we are linking against a sanitizer runtime library. Among other
-# things, this changes the default symbol level and other settings in order to
-# prepare to create stack traces "live" using the sanitizer runtime.
+# Whether we are linking against a debugging sanitizer runtime library. Among
+# other things, this changes the default symbol level and other settings in
+# order to prepare to create stack traces "live" using the sanitizer runtime.
using_sanitizer =
is_asan || is_lsan || is_tsan || is_msan || is_ubsan || is_ubsan_null ||
is_ubsan_vptr || is_ubsan_security || use_sanitizer_coverage || use_cfi_diag
@@ -176,6 +171,9 @@ assert(!using_sanitizer || is_clang,
assert(!is_cfi || is_clang,
"is_cfi requires setting is_clang = true in 'gn args'")
+assert(!is_safestack || is_clang,
+ "is_safestack requires setting is_clang = true in 'gn args'")
+
prebuilt_instrumented_libraries_available =
is_msan && (msan_track_origins == 0 || msan_track_origins == 2)
diff --git a/chromium/build/config/sysroot.gni b/chromium/build/config/sysroot.gni
index d5daf2df2e4..701c66082e6 100644
--- a/chromium/build/config/sysroot.gni
+++ b/chromium/build/config/sysroot.gni
@@ -68,10 +68,8 @@ if (current_os == target_os && current_cpu == target_cpu &&
sysroot = ios_sdk_path
} else if (is_fuchsia) {
import("//build/config/fuchsia/config.gni")
- if (current_cpu == "arm64") {
- sysroot = fuchsia_sdk + "/sysroot/aarch64-fuchsia"
- } else if (current_cpu == "x64") {
- sysroot = fuchsia_sdk + "/sysroot/x86_64-fuchsia"
+ if (current_cpu == "arm64" || current_cpu == "x64") {
+ sysroot = fuchsia_sdk + "/arch/$current_cpu/sysroot"
} else {
sysroot = ""
}
diff --git a/chromium/build/config/win/BUILD.gn b/chromium/build/config/win/BUILD.gn
index 02895ad354a..09e28990e15 100644
--- a/chromium/build/config/win/BUILD.gn
+++ b/chromium/build/config/win/BUILD.gn
@@ -8,6 +8,7 @@ import("//build/config/clang/clang.gni")
import("//build/config/compiler/compiler.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/win/visual_studio_version.gni")
+import("//build/timestamp.gni")
import("//build/toolchain/goma.gni")
import("//build/toolchain/toolchain.gni")
@@ -36,6 +37,16 @@ declare_args() {
# "server" - Windows Server Applications
# "desktop" - Windows Desktop Applications
target_winuwp_family = "app"
+
+ # Set this to use clang style diagnostics format. Available only on clang.
+ # Tune this on for the editor integrations like Emacs compilation mode that
+ # match clang style error messages.
+ # E.g.:
+ # Without this, clang emits a diagnostic message like this:
+ # foo/bar.cc(12,34): error: something went wrong
+ # and with this switch, clang emits it like this:
+ # foo/bar.cc:12:34: error: something went wrong
+ use_clang_diagnostics_format = false
}
# This is included by reference in the //build/config/compiler config that
@@ -92,6 +103,15 @@ config("compiler") {
]
}
+ if (is_clang && use_clang_diagnostics_format) {
+ cflags += [
+ "-Xclang",
+ "-fdiagnostics-format",
+ "-Xclang",
+ "clang",
+ ]
+ }
+
# Clang runtime libraries, such as the sanitizer runtimes, live here.
lib_dirs = [ "$clang_base_path/lib/clang/$clang_version/lib/windows" ]
}
@@ -106,12 +126,23 @@ config("compiler") {
cflags += [ "/Brepro" ]
}
+ ldflags = []
+
+ if (use_lld) {
+ # lld defaults to writing the current time in the pe/coff header.
+ # For build reproducibility, pass an explicit timestamp. See
+ # build/compute_build_timestamp.py for how the timestamp is chosen.
+ # (link.exe also writes the current time, but it doesn't have a flag to
+ # override that behavior.)
+ ldflags += [ "/TIMESTAMP:" + build_timestamp ]
+ }
+
if (!is_debug && !is_component_build) {
# Enable standard linker optimizations like GC (/OPT:REF) and ICF in static
# release builds. These are implied by /PROFILE below, but /PROFILE is
# incompatible with /debug:fastlink and LLD ignores it as of this writing.
# Release builds always want these optimizations, so enable them explicitly.
- ldflags = [
+ ldflags += [
"/OPT:REF",
"/OPT:ICF",
"/INCREMENTAL:NO",
@@ -222,7 +253,7 @@ config("runtime_library") {
if (use_custom_libcxx) {
cflags_cc +=
[ "-I" + rebase_path("$libcxx_prefix/include", root_build_dir) ]
- if (libcpp_is_static) {
+ if (!is_component_build) {
defines += [ "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS" ]
}
diff --git a/chromium/build/dotfile_settings.gni b/chromium/build/dotfile_settings.gni
index 8382c75f24f..4242ec69504 100644
--- a/chromium/build/dotfile_settings.gni
+++ b/chromium/build/dotfile_settings.gni
@@ -24,6 +24,7 @@ build_dotfile_settings = {
"//build/config/sysroot.gni",
"//build/config/win/BUILD.gn",
"//build/config/win/visual_studio_version.gni",
+ "//build/timestamp.gni",
"//build/toolchain/BUILD.gn",
"//build/toolchain/concurrent_links.gni",
"//build/toolchain/mac/BUILD.gn",
diff --git a/chromium/build/experimental/install-build-deps.py b/chromium/build/experimental/install-build-deps.py
index a286a4e8de2..a7447117471 100755
--- a/chromium/build/experimental/install-build-deps.py
+++ b/chromium/build/experimental/install-build-deps.py
@@ -63,7 +63,6 @@ _packages_dev = (
'libglib2.0-dev',
'libglu1-mesa-dev',
'libgnome-keyring-dev',
- 'libgtk2.0-dev',
'libkrb5-dev',
'libnspr4-dev',
'libnss3-dev',
@@ -124,7 +123,6 @@ _packages_lib = (
'libfreetype6',
'libglib2.0-0',
'libgnome-keyring0',
- 'libgtk2.0-0',
'libpam0g',
'libpango1.0-0',
'libpci3',
@@ -160,7 +158,6 @@ _packages_dbg = (
'libcairo2-dbg',
'libfontconfig1-dbg',
'libglib2.0-0-dbg',
- 'libgtk2.0-0-dbg',
'libpango1.0-0-dbg',
'libpcre3-dbg',
'libpixman-1-0-dbg',
@@ -220,7 +217,6 @@ _packages_nacl = (
'libgconf-2-4:i386',
'libglib2.0-0:i386',
'libgpm2:i386',
- 'libgtk2.0-0:i386',
'libncurses5:i386',
'libnss3:i386',
'libpango1.0-0:i386',
diff --git a/chromium/build/fuchsia/boot_data.py b/chromium/build/fuchsia/boot_data.py
index e70128c7ec3..64998661c3d 100644
--- a/chromium/build/fuchsia/boot_data.py
+++ b/chromium/build/fuchsia/boot_data.py
@@ -26,7 +26,9 @@ Host *
ServerAliveCountMax 5
ControlMaster auto
ControlPersist 1m
- ControlPath /tmp/ssh-%r@%h:%p"""
+ ControlPath /tmp/ssh-%r@%h:%p
+ ConnectTimeout 5
+ """
FVM_TYPE_QCOW = 'qcow'
FVM_TYPE_SPARSE = 'sparse'
@@ -83,7 +85,7 @@ def _MakeQcowDisk(output_dir, disk_path):
"""Creates a QEMU copy-on-write version of |disk_path| in the output
directory."""
- qimg_path = os.path.join(common.SDK_ROOT, 'qemu', 'bin', 'qemu-img')
+ qimg_path = os.path.join(common.GetQemuRootForPlatform(), 'bin', 'qemu-img')
output_path = os.path.join(output_dir,
os.path.basename(disk_path) + '.qcow2')
subprocess.check_call([qimg_path, 'create', '-q', '-f', 'qcow2',
@@ -114,6 +116,9 @@ def ConfigureDataFVM(output_dir, output_type):
sparse/compressed FVM file."""
logging.debug('Building /data partition FVM file.')
+ # minfs expects absolute paths(bug:
+ # https://fuchsia.atlassian.net/browse/ZX-2397)
+ output_dir = os.path.abspath(output_dir)
with tempfile.NamedTemporaryFile() as data_file:
# Build up the minfs partition data and install keys into it.
ssh_config, ssh_data = _ProvisionSSH(output_dir)
diff --git a/chromium/build/fuchsia/common.py b/chromium/build/fuchsia/common.py
index 51a68414219..20c89e5422d 100644
--- a/chromium/build/fuchsia/common.py
+++ b/chromium/build/fuchsia/common.py
@@ -3,6 +3,8 @@
# found in the LICENSE file.
import os
+import platform
+import sys
DIR_SOURCE_ROOT = os.path.abspath(
os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
@@ -16,3 +18,24 @@ def EnsurePathExists(path):
raise IOError('Missing file: ' + path)
return path
+
+def GetHostOsFromPlatform():
+ host_platform = sys.platform
+ if host_platform.startswith('linux'):
+ return 'linux'
+ elif host_platform.startswith('darwin'):
+ return 'mac'
+ raise Exception('Unsupported host platform: %s' % host_platform)
+
+def GetHostArchFromPlatform():
+ host_arch = platform.machine()
+ if host_arch == 'x86_64':
+ return 'x64'
+ elif host_arch == 'aarch64':
+ return 'arm64'
+ raise Exception('Unsupported host architecture: %s' % host_arch)
+
+def GetQemuRootForPlatform():
+ return os.path.join(DIR_SOURCE_ROOT, 'third_party',
+ 'qemu-' + GetHostOsFromPlatform() + '-' +
+ GetHostArchFromPlatform())
diff --git a/chromium/build/fuchsia/common_args.py b/chromium/build/fuchsia/common_args.py
index 25e909f4c6b..27f37ddb501 100644
--- a/chromium/build/fuchsia/common_args.py
+++ b/chromium/build/fuchsia/common_args.py
@@ -44,6 +44,9 @@ def AddCommonArgs(arg_parser):
common_args.add_argument('--ssh-config', '-F',
help='The path to the SSH configuration used for '
'connecting to the target device.')
+ common_args.add_argument('--system-log-file',
+ help='File to write system logs to. Specify - to '
+ 'log to stdout.')
common_args.add_argument('--exclude-system-logs',
action='store_false',
dest='include_system_logs',
@@ -51,7 +54,9 @@ def AddCommonArgs(arg_parser):
common_args.add_argument('--verbose', '-v', default=False,
action='store_true',
help='Enable debug-level logging.')
-
+ common_args.add_argument('--qemu-cpu-cores', type=int, default=4,
+ help='Sets the number of CPU cores to provide if '
+ 'launching in a VM with QEMU.'),
def ConfigureLogging(args):
"""Configures the logging level based on command line |args|."""
@@ -74,8 +79,16 @@ def GetDeploymentTargetForArgs(args):
"""Constructs a deployment target object using parameters taken from
command line arguments."""
+ if args.system_log_file == '-':
+ system_log_file = sys.stdout
+ elif args.system_log_file:
+ system_log_file = open(args.system_log_file, 'w')
+ else:
+ system_log_file = None
+
if not args.device:
- return QemuTarget(args.output_directory, args.target_cpu)
+ return QemuTarget(args.output_directory, args.target_cpu,
+ args.qemu_cpu_cores, system_log_file)
else:
- return DeviceTarget(args.output_directory, args.target_cpu,
- args.host, args.port, args.ssh_config)
+ return DeviceTarget(args.output_directory, args.target_cpu, args.host,
+ args.port, args.ssh_config, system_log_file)
diff --git a/chromium/build/fuchsia/device_target.py b/chromium/build/fuchsia/device_target.py
index 34bc99f5e1d..013f1762969 100644
--- a/chromium/build/fuchsia/device_target.py
+++ b/chromium/build/fuchsia/device_target.py
@@ -8,6 +8,7 @@ import boot_data
import logging
import os
import subprocess
+import sys
import target
import time
import uuid
@@ -17,9 +18,12 @@ from common import SDK_ROOT, EnsurePathExists
CONNECT_RETRY_COUNT = 20
CONNECT_RETRY_WAIT_SECS = 1
+# Number of failed connection attempts before redirecting system logs to stdout.
+CONNECT_RETRY_COUNT_BEFORE_LOGGING = 10
+
class DeviceTarget(target.Target):
def __init__(self, output_dir, target_cpu, host=None, port=None,
- ssh_config=None):
+ ssh_config=None, system_log_file=None):
"""output_dir: The directory which will contain the files that are
generated to support the deployment.
target_cpu: The CPU architecture of the deployment target. Can be
@@ -33,6 +37,8 @@ class DeviceTarget(target.Target):
self._port = 22
self._auto = not host or not ssh_config
self._new_instance = True
+ self._system_log_file = system_log_file
+ self._loglistener = None
if self._auto:
self._ssh_config_path = EnsurePathExists(
@@ -44,6 +50,10 @@ class DeviceTarget(target.Target):
self._port = port
self._new_instance = False
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ if self._loglistener:
+ self._loglistener.kill()
+
def __Discover(self, node_name):
"""Returns the IP address and port of a Fuchsia instance discovered on
the local area network."""
@@ -93,8 +103,16 @@ class DeviceTarget(target.Target):
logging.debug(' '.join(bootserver_command))
subprocess.check_call(bootserver_command)
+ # Start loglistener to save system logs.
+ if self._system_log_file:
+ loglistener_path = os.path.join(SDK_ROOT, 'tools', 'loglistener')
+ self._loglistener = subprocess.Popen(
+ [loglistener_path, node_name],
+ stdout=self._system_log_file,
+ stderr=subprocess.STDOUT, stdin=open(os.devnull))
+
logging.debug('Waiting for device to join network.')
- for _ in xrange(CONNECT_RETRY_COUNT):
+ for retry in xrange(CONNECT_RETRY_COUNT):
self._host = self.__Discover(node_name)
if self._host:
break
diff --git a/chromium/build/fuchsia/linux.sdk.sha1 b/chromium/build/fuchsia/linux.sdk.sha1
new file mode 100644
index 00000000000..0029006c4d6
--- /dev/null
+++ b/chromium/build/fuchsia/linux.sdk.sha1
@@ -0,0 +1 @@
+785befe984ce9119b1dae7b3696bff178a524756 \ No newline at end of file
diff --git a/chromium/build/fuchsia/mac.sdk.sha1 b/chromium/build/fuchsia/mac.sdk.sha1
new file mode 100644
index 00000000000..c0ce08a5845
--- /dev/null
+++ b/chromium/build/fuchsia/mac.sdk.sha1
@@ -0,0 +1 @@
+61465d3f598a8ad7e6cde3f6505684c63d5361de \ No newline at end of file
diff --git a/chromium/build/fuchsia/qemu_target.py b/chromium/build/fuchsia/qemu_target.py
index aa356d34386..5376528e1c1 100644
--- a/chromium/build/fuchsia/qemu_target.py
+++ b/chromium/build/fuchsia/qemu_target.py
@@ -11,9 +11,10 @@ import os
import platform
import socket
import subprocess
+import sys
import time
-from common import SDK_ROOT, EnsurePathExists
+from common import GetQemuRootForPlatform, EnsurePathExists
# Virtual networking configuration data for QEMU.
@@ -33,7 +34,7 @@ def _GetAvailableTcpPort():
class QemuTarget(target.Target):
- def __init__(self, output_dir, target_cpu,
+ def __init__(self, output_dir, target_cpu, cpu_cores, system_log_file,
ram_size_mb=2048):
"""output_dir: The directory which will contain the files that are
generated to support the QEMU deployment.
@@ -42,6 +43,8 @@ class QemuTarget(target.Target):
super(QemuTarget, self).__init__(output_dir, target_cpu)
self._qemu_process = None
self._ram_size_mb = ram_size_mb
+ self._system_log_file = system_log_file
+ self._cpu_cores = cpu_cores
def __enter__(self):
return self
@@ -49,28 +52,31 @@ class QemuTarget(target.Target):
# Used by the context manager to ensure that QEMU is killed when the Python
# process exits.
def __exit__(self, exc_type, exc_val, exc_tb):
- if self.IsStarted():
- self.Shutdown()
+ if self._IsQemuStillRunning():
+ logging.info('Shutting down QEMU.')
+ self._qemu_process.kill()
def Start(self):
- qemu_path = os.path.join(SDK_ROOT, 'qemu', 'bin',
- 'qemu-system-' + self._GetTargetSdkArch())
+ qemu_path = os.path.join(GetQemuRootForPlatform(), 'bin',
+ 'qemu-system-' + self._GetTargetSdkLegacyArch())
kernel_args = boot_data.GetKernelArgs(self._output_dir)
# TERM=dumb tells the guest OS to not emit ANSI commands that trigger
# noisy ANSI spew from the user's terminal emulator.
kernel_args.append('TERM=dumb')
+ # Enable logging to the serial port. This is a temporary fix to investigate
+ # the root cause for https://crbug.com/869753 .
+ kernel_args.append('kernel.serial=legacy')
+
qemu_command = [qemu_path,
'-m', str(self._ram_size_mb),
'-nographic',
- '-kernel', EnsurePathExists(
- boot_data.GetTargetFile(self._GetTargetSdkArch(),
- 'zircon.bin')),
+ '-kernel', EnsurePathExists(self._GetTargetKernelPath()),
'-initrd', EnsurePathExists(
boot_data.GetTargetFile(self._GetTargetSdkArch(),
'bootdata-blob.bin')),
- '-smp', '4',
+ '-smp', str(self._cpu_cores),
# Attach the blobstore and data volumes. Use snapshot mode to discard
# any changes.
@@ -94,24 +100,27 @@ class QemuTarget(target.Target):
]
# Configure the machine & CPU to emulate, based on the target architecture.
- # Enable lightweight virtualization (KVM) if the host and guest OS run on
- # the same architecture.
if self._target_cpu == 'arm64':
qemu_command.extend([
'-machine','virt',
'-cpu', 'cortex-a53',
])
netdev_type = 'virtio-net-pci'
- if platform.machine() == 'aarch64':
- qemu_command.append('-enable-kvm')
else:
qemu_command.extend([
'-machine', 'q35',
- '-cpu', 'host,migratable=no',
])
netdev_type = 'e1000'
- if platform.machine() == 'x86_64':
+
+ # On Linux, enable lightweight virtualization (KVM) if the host and guest
+ # architectures are the same.
+ if sys.platform.startswith('linux'):
+ if self._target_cpu == 'arm64' and platform.machine() == 'aarch64':
qemu_command.append('-enable-kvm')
+ elif self._target_cpu == 'x64' and platform.machine() == 'x86_64':
+ qemu_command.extend([
+ '-enable-kvm', '-cpu', 'host,migratable=no',
+ ])
# Configure virtual network. It is used in the tests to connect to
# testserver running on the host.
@@ -133,22 +142,35 @@ class QemuTarget(target.Target):
logging.debug('Launching QEMU.')
logging.debug(' '.join(qemu_command))
- stdio_flags = {'stdin': open(os.devnull),
- 'stdout': open(os.devnull),
- 'stderr': open(os.devnull)}
- self._qemu_process = subprocess.Popen(qemu_command, **stdio_flags)
- self._WaitUntilReady();
+ # Zircon sends debug logs to serial port (see kernel.serial=legacy flag
+ # above). Serial port is redirected to a file through QEMU stdout.
+ # This approach is used instead of loglistener to debug
+ # https://crbug.com/86975 .
+ if self._system_log_file:
+ stdout = self._system_log_file
+ stderr = subprocess.STDOUT
+ else:
+ stdout = open(os.devnull)
+ stderr = sys.stderr
- def Shutdown(self):
- logging.info('Shutting down QEMU.')
- self._qemu_process.kill()
+ self._qemu_process = subprocess.Popen(qemu_command, stdin=open(os.devnull),
+ stdout=stdout, stderr=stderr)
+ self._WaitUntilReady();
- def GetQemuStdout(self):
- return self._qemu_process.stdout
+ def _IsQemuStillRunning(self):
+ return os.waitpid(self._qemu_process.pid, os.WNOHANG)[0] == 0
def _GetEndpoint(self):
+ if not self._IsQemuStillRunning():
+ raise Exception('QEMU quit unexpectedly.')
return ('localhost', self._host_ssh_port)
def _GetSshConfigPath(self):
return boot_data.GetSSHConfigPath(self._output_dir)
+ def _GetTargetKernelPath(self):
+ kernel_name = 'zircon.bin'
+ if self._GetTargetSdkArch() == 'arm64':
+ kernel_name = 'qemu-zircon.bin'
+ return boot_data.GetTargetFile(self._GetTargetSdkArch(),
+ kernel_name)
diff --git a/chromium/build/fuchsia/run_package.py b/chromium/build/fuchsia/run_package.py
index 6a63e15d987..d61deb649f3 100644
--- a/chromium/build/fuchsia/run_package.py
+++ b/chromium/build/fuchsia/run_package.py
@@ -10,12 +10,13 @@ import json
import logging
import multiprocessing
import os
+import select
import shutil
import subprocess
+import sys
import tempfile
import threading
import uuid
-import select
from symbolizer import FilterStream
@@ -40,47 +41,33 @@ def _ReadMergedLines(streams):
signals EOF. Absolute output ordering is not guaranteed."""
assert len(streams) > 0
- poll = select.poll()
streams_by_fd = {}
primary_fd = streams[0].fileno()
for s in streams:
- poll.register(s.fileno(), select.POLLIN)
streams_by_fd[s.fileno()] = s
- try:
- while primary_fd != None:
- events = poll.poll(1)
- for fileno, event in events:
- if event & select.POLLIN:
- yield streams_by_fd[fileno].readline()
-
- elif event & select.POLLHUP:
- poll.unregister(fileno)
- del streams_by_fd[fileno]
-
- if fileno == primary_fd:
- primary_fd = None
- finally:
- for fd_to_cleanup, _ in streams_by_fd.iteritems():
- poll.unregister(fd_to_cleanup)
+ while primary_fd != None:
+ rlist, _, _ = select.select(streams_by_fd, [], [], 0.1)
+ for fileno in rlist:
+ line = streams_by_fd[fileno].readline()
+ if line:
+ yield line
+ elif fileno == primary_fd:
+ primary_fd = None
+ else:
+ del streams_by_fd[fileno]
def DrainStreamToStdout(stream, quit_event):
"""Outputs the contents of |stream| until |quit_event| is set."""
- poll = select.poll()
- poll.register(stream.fileno(), select.POLLIN)
- try:
- while not quit_event.is_set():
- events = poll.poll(1)
- for fileno, event in events:
- if event & select.POLLIN:
- print stream.readline().rstrip()
- elif event & select.POLLHUP:
- break
-
- finally:
- poll.unregister(stream.fileno())
+ while not quit_event.is_set():
+ rlist, _, _ = select.select([ stream ], [], [], 0.1)
+ if rlist:
+ line = rlist[0].readline()
+ if not line:
+ return
+ print line.rstrip()
def RunPackage(output_dir, target, package_path, package_name, package_deps,
diff --git a/chromium/build/fuchsia/sdk.sha1 b/chromium/build/fuchsia/sdk.sha1
deleted file mode 100644
index 980afd99349..00000000000
--- a/chromium/build/fuchsia/sdk.sha1
+++ /dev/null
@@ -1 +0,0 @@
-138f39e8ec632173fa8d82466242bf36032cdcce \ No newline at end of file
diff --git a/chromium/build/fuchsia/target.py b/chromium/build/fuchsia/target.py
index 8eb5fcf72cb..db52f3a5938 100644
--- a/chromium/build/fuchsia/target.py
+++ b/chromium/build/fuchsia/target.py
@@ -2,14 +2,14 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import boot_data
+import common
import logging
-import os
import remote_cmd
-import subprocess
import sys
-import tempfile
import time
+
_SHUTDOWN_CMD = ['dm', 'poweroff']
_ATTACH_MAX_RETRIES = 10
_ATTACH_RETRY_INTERVAL = 1
@@ -134,10 +134,8 @@ class Target(object):
def _GetTargetSdkArch(self):
"""Returns the Fuchsia SDK architecture name for the target CPU."""
- if self._target_cpu == 'arm64':
- return 'aarch64'
- elif self._target_cpu == 'x64':
- return 'x86_64'
+ if self._target_cpu == 'arm64' or self._target_cpu == 'x64':
+ return self._target_cpu
raise FuchsiaTargetException('Unknown target_cpu:' + self._target_cpu)
def _AssertIsStarted(self):
@@ -145,7 +143,8 @@ class Target(object):
def _WaitUntilReady(self, retries=_ATTACH_MAX_RETRIES):
logging.info('Connecting to Fuchsia using SSH.')
- for _ in xrange(retries+1):
+
+ for retry in xrange(retries + 1):
host, port = self._GetEndpoint()
if remote_cmd.RunSsh(self._GetSshConfigPath(), host, port, ['true'],
True) == 0:
@@ -153,13 +152,17 @@ class Target(object):
self._started = True
return True
time.sleep(_ATTACH_RETRY_INTERVAL)
+
logging.error('Timeout limit reached.')
+
raise FuchsiaTargetException('Couldn\'t connect using SSH.')
def _GetSshConfigPath(self, path):
raise NotImplementedError
- def _GetTargetSdkArch(self):
+ # TODO: remove this once all instances of architecture names have been
+ # converted to the new naming pattern.
+ def _GetTargetSdkLegacyArch(self):
"""Returns the Fuchsia SDK architecture name for the target CPU."""
if self._target_cpu == 'arm64':
return 'aarch64'
diff --git a/chromium/build/fuchsia/update_sdk.py b/chromium/build/fuchsia/update_sdk.py
index e3253524e77..9dfd7df8fcf 100755
--- a/chromium/build/fuchsia/update_sdk.py
+++ b/chromium/build/fuchsia/update_sdk.py
@@ -13,7 +13,7 @@ import sys
import tarfile
import tempfile
-SDK_HASH_FILE = os.path.join(os.path.dirname(__file__), 'sdk.sha1')
+from common import GetHostOsFromPlatform, GetHostArchFromPlatform
REPOSITORY_ROOT = os.path.abspath(os.path.join(
os.path.dirname(__file__), '..', '..'))
@@ -24,6 +24,14 @@ import find_depot_tools
SDK_SUBDIRS = ["arch", "pkg", "qemu", "sysroot", "target",
"toolchain_libs", "tools"]
+def GetSdkHashForPlatform():
+ filename = '{platform}.sdk.sha1'.format(platform = GetHostOsFromPlatform())
+ return os.path.join(os.path.dirname(__file__), filename)
+
+def GetBucketForPlatform():
+ return 'gs://fuchsia/sdk/{platform}-amd64/'.format(
+ platform = GetHostOsFromPlatform())
+
def EnsureDirExists(path):
if not os.path.exists(path):
@@ -63,11 +71,12 @@ def main():
# there.
Cleanup(os.path.join(REPOSITORY_ROOT, 'third_party', 'fuchsia-sdk'))
- with open(SDK_HASH_FILE, 'r') as f:
+ hash_file = GetSdkHashForPlatform()
+ with open(hash_file, 'r') as f:
sdk_hash = f.read().strip()
if not sdk_hash:
- print >>sys.stderr, 'No SHA1 found in %s' % SDK_HASH_FILE
+ print >>sys.stderr, 'No SHA1 found in %s' % hash_file
return 1
output_dir = os.path.join(REPOSITORY_ROOT, 'third_party', 'fuchsia-sdk',
@@ -89,9 +98,8 @@ def main():
os.close(fd)
try:
- bucket = 'gs://fuchsia/sdk/linux-amd64/'
cmd = [os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, 'gsutil.py'),
- 'cp', bucket + sdk_hash, tmp]
+ 'cp', GetBucketForPlatform() + sdk_hash, tmp]
subprocess.check_call(cmd)
with open(tmp, 'rb') as f:
EnsureDirExists(output_dir)
diff --git a/chromium/build/get_syzygy_binaries.py b/chromium/build/get_syzygy_binaries.py
deleted file mode 100755
index 09b11997087..00000000000
--- a/chromium/build/get_syzygy_binaries.py
+++ /dev/null
@@ -1,529 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2014 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.
-
-"""A utility script for downloading versioned Syzygy binaries."""
-
-import hashlib
-import errno
-import json
-import logging
-import optparse
-import os
-import re
-import shutil
-import stat
-import sys
-import subprocess
-import tempfile
-import time
-import zipfile
-
-
-_LOGGER = logging.getLogger(os.path.basename(__file__))
-
-# The relative path where official builds are archived in their GS bucket.
-_SYZYGY_ARCHIVE_PATH = ('/builds/official/%(revision)s')
-
-# A JSON file containing the state of the download directory. If this file and
-# directory state do not agree, then the binaries will be downloaded and
-# installed again.
-_STATE = '.state'
-
-# This matches an integer (an SVN revision number) or a SHA1 value (a GIT hash).
-# The archive exclusively uses lowercase GIT hashes.
-_REVISION_RE = re.compile('^(?:\d+|[a-f0-9]{40})$')
-
-# This matches an MD5 hash.
-_MD5_RE = re.compile('^[a-f0-9]{32}$')
-
-# List of reources to be downloaded and installed. These are tuples with the
-# following format:
-# (basename, logging name, relative installation path, extraction filter)
-_RESOURCES = [
- ('benchmark.zip', 'benchmark', '', None),
- ('binaries.zip', 'binaries', 'exe', None),
- ('symbols.zip', 'symbols', 'exe',
- lambda x: x.filename.endswith('.dll.pdb'))]
-
-
-# Name of the MS DIA dll that we need to copy to the binaries directory.
-_DIA_DLL_NAME = "msdia140.dll"
-
-
-def _LoadState(output_dir):
- """Loads the contents of the state file for a given |output_dir|, returning
- None if it doesn't exist.
- """
- path = os.path.join(output_dir, _STATE)
- if not os.path.exists(path):
- _LOGGER.debug('No state file found.')
- return None
- with open(path, 'rb') as f:
- _LOGGER.debug('Reading state file: %s', path)
- try:
- return json.load(f)
- except ValueError:
- _LOGGER.debug('Invalid state file.')
- return None
-
-
-def _SaveState(output_dir, state, dry_run=False):
- """Saves the |state| dictionary to the given |output_dir| as a JSON file."""
- path = os.path.join(output_dir, _STATE)
- _LOGGER.debug('Writing state file: %s', path)
- if dry_run:
- return
- with open(path, 'wb') as f:
- f.write(json.dumps(state, sort_keys=True, indent=2))
-
-
-def _Md5(path):
- """Returns the MD5 hash of the file at |path|, which must exist."""
- return hashlib.md5(open(path, 'rb').read()).hexdigest()
-
-
-def _StateIsValid(state):
- """Returns true if the given state structure is valid."""
- if not isinstance(state, dict):
- _LOGGER.debug('State must be a dict.')
- return False
- r = state.get('revision', None)
- if not isinstance(r, basestring) or not _REVISION_RE.match(r):
- _LOGGER.debug('State contains an invalid revision.')
- return False
- c = state.get('contents', None)
- if not isinstance(c, dict):
- _LOGGER.debug('State must contain a contents dict.')
- return False
- for (relpath, md5) in c.iteritems():
- if not isinstance(relpath, basestring) or len(relpath) == 0:
- _LOGGER.debug('State contents dict contains an invalid path.')
- return False
- if not isinstance(md5, basestring) or not _MD5_RE.match(md5):
- _LOGGER.debug('State contents dict contains an invalid MD5 digest.')
- return False
- return True
-
-
-def _BuildActualState(stored, revision, output_dir):
- """Builds the actual state using the provided |stored| state as a template.
- Only examines files listed in the stored state, causing the script to ignore
- files that have been added to the directories locally. |stored| must be a
- valid state dictionary.
- """
- contents = {}
- state = { 'revision': revision, 'contents': contents }
- for relpath, md5 in stored['contents'].iteritems():
- abspath = os.path.abspath(os.path.join(output_dir, relpath))
- if os.path.isfile(abspath):
- m = _Md5(abspath)
- contents[relpath] = m
-
- return state
-
-
-def _StatesAreConsistent(stored, actual):
- """Validates whether two state dictionaries are consistent. Both must be valid
- state dictionaries. Additional entries in |actual| are ignored.
- """
- if stored['revision'] != actual['revision']:
- _LOGGER.debug('Mismatched revision number.')
- return False
- cont_stored = stored['contents']
- cont_actual = actual['contents']
- for relpath, md5 in cont_stored.iteritems():
- if relpath not in cont_actual:
- _LOGGER.debug('Missing content: %s', relpath)
- return False
- if md5 != cont_actual[relpath]:
- _LOGGER.debug('Modified content: %s', relpath)
- return False
- return True
-
-
-def _GetCurrentState(revision, output_dir):
- """Loads the current state and checks to see if it is consistent. Returns
- a tuple (state, bool). The returned state will always be valid, even if an
- invalid state is present on disk.
- """
- stored = _LoadState(output_dir)
- if not _StateIsValid(stored):
- _LOGGER.debug('State is invalid.')
- # Return a valid but empty state.
- return ({'revision': '0', 'contents': {}}, False)
- actual = _BuildActualState(stored, revision, output_dir)
- # If the script has been modified consider the state invalid.
- path = os.path.join(output_dir, _STATE)
- if os.path.getmtime(__file__) > os.path.getmtime(path):
- return (stored, False)
- # Otherwise, explicitly validate the state.
- if not _StatesAreConsistent(stored, actual):
- return (stored, False)
- return (stored, True)
-
-
-def _DirIsEmpty(path):
- """Returns true if the given directory is empty, false otherwise."""
- for root, dirs, files in os.walk(path):
- return not dirs and not files
-
-
-def _RmTreeHandleReadOnly(func, path, exc):
- """An error handling function for use with shutil.rmtree. This will
- detect failures to remove read-only files, and will change their properties
- prior to removing them. This is necessary on Windows as os.remove will return
- an access error for read-only files, and git repos contain read-only
- pack/index files.
- """
- excvalue = exc[1]
- if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
- _LOGGER.debug('Removing read-only path: %s', path)
- os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
- func(path)
- else:
- raise
-
-
-def _RmTree(path):
- """A wrapper of shutil.rmtree that handles read-only files."""
- shutil.rmtree(path, ignore_errors=False, onerror=_RmTreeHandleReadOnly)
-
-
-def _CleanState(output_dir, state, dry_run=False):
- """Cleans up files/directories in |output_dir| that are referenced by
- the given |state|. Raises an error if there are local changes. Returns a
- dictionary of files that were deleted.
- """
- _LOGGER.debug('Deleting files from previous installation.')
- deleted = {}
-
- # Generate a list of files to delete, relative to |output_dir|.
- contents = state['contents']
- files = sorted(contents.keys())
-
- # Try to delete the files. Keep track of directories to delete as well.
- dirs = {}
- for relpath in files:
- fullpath = os.path.join(output_dir, relpath)
- fulldir = os.path.dirname(fullpath)
- dirs[fulldir] = True
- if os.path.exists(fullpath):
- # If somehow the file has become a directory complain about it.
- if os.path.isdir(fullpath):
- raise Exception('Directory exists where file expected: %s' % fullpath)
-
- # Double check that the file doesn't have local changes. If it does
- # then refuse to delete it.
- if relpath in contents:
- stored_md5 = contents[relpath]
- actual_md5 = _Md5(fullpath)
- if actual_md5 != stored_md5:
- raise Exception('File has local changes: %s' % fullpath)
-
- # The file is unchanged so it can safely be deleted.
- _LOGGER.debug('Deleting file "%s".', fullpath)
- deleted[relpath] = True
- if not dry_run:
- os.unlink(fullpath)
-
- # Sort directories from longest name to shortest. This lets us remove empty
- # directories from the most nested paths first.
- dirs = sorted(dirs.keys(), key=lambda x: len(x), reverse=True)
- for p in dirs:
- if os.path.exists(p) and _DirIsEmpty(p):
- _LOGGER.debug('Deleting empty directory "%s".', p)
- if not dry_run:
- _RmTree(p)
-
- return deleted
-
-
-def _FindGsUtil():
- """Looks for depot_tools and returns the absolute path to gsutil.py."""
- for path in os.environ['PATH'].split(os.pathsep):
- path = os.path.abspath(path)
- git_cl = os.path.join(path, 'git_cl.py')
- gs_util = os.path.join(path, 'gsutil.py')
- if os.path.exists(git_cl) and os.path.exists(gs_util):
- return gs_util
- return None
-
-
-def _GsUtil(*cmd):
- """Runs the given command in gsutil with exponential backoff and retries."""
- gs_util = _FindGsUtil()
- cmd = [sys.executable, gs_util] + list(cmd)
-
- retries = 3
- timeout = 4 # Seconds.
- while True:
- _LOGGER.debug('Running %s', cmd)
- prog = subprocess.Popen(cmd, shell=False)
- prog.communicate()
-
- # Stop retrying on success.
- if prog.returncode == 0:
- return
-
- # Raise a permanent failure if retries have been exhausted.
- if retries == 0:
- raise RuntimeError('Command "%s" returned %d.' % (cmd, prog.returncode))
-
- _LOGGER.debug('Sleeping %d seconds and trying again.', timeout)
- time.sleep(timeout)
- retries -= 1
- timeout *= 2
-
-
-def _Download(resource):
- """Downloads the given GS resource to a temporary file, returning its path."""
- tmp = tempfile.mkstemp(suffix='syzygy_archive')
- os.close(tmp[0])
- tmp_file = tmp[1]
- url = 'gs://syzygy-archive' + resource
- if sys.platform == 'cygwin':
- # Change temporary path to Windows path for gsutil
- def winpath(path):
- return subprocess.check_output(['cygpath', '-w', path]).strip()
- tmp_file = winpath(tmp_file)
- _GsUtil('cp', url, tmp_file)
- return tmp[1]
-
-
-def _MaybeCopyDIABinaries(options, contents):
- """Try to copy the DIA DLL to the binaries exe directory."""
- toolchain_data_file = os.path.join(os.path.dirname(__file__),
- 'win_toolchain.json')
- if not os.path.exists(toolchain_data_file):
- _LOGGER.debug('Toolchain JSON data file doesn\'t exist, skipping.')
- return
- with open(toolchain_data_file) as temp_f:
- toolchain_data = json.load(temp_f)
- if not os.path.isdir(toolchain_data['path']):
- _LOGGER.error('The toolchain JSON file is invalid.')
- return
- dia_sdk_binaries_dir = os.path.join(toolchain_data['path'], 'DIA SDK', 'bin')
- dia_dll = os.path.join(dia_sdk_binaries_dir, _DIA_DLL_NAME)
- if not os.path.exists(dia_dll):
- _LOGGER.debug('%s is missing, skipping.')
- return
- dia_dll_dest = os.path.join(options.output_dir, 'exe', _DIA_DLL_NAME)
- _LOGGER.debug('Copying %s to %s.' % (dia_dll, dia_dll_dest))
- if not options.dry_run:
- shutil.copy(dia_dll, dia_dll_dest)
- contents[os.path.relpath(dia_dll_dest, options.output_dir)] = (
- _Md5(dia_dll_dest))
-
-
-def _InstallBinaries(options, deleted={}):
- """Installs Syzygy binaries. This assumes that the output directory has
- already been cleaned, as it will refuse to overwrite existing files."""
- contents = {}
- state = { 'revision': options.revision, 'contents': contents }
- archive_path = _SYZYGY_ARCHIVE_PATH % { 'revision': options.revision }
- if options.resources:
- resources = [(resource, resource, '', None)
- for resource in options.resources]
- else:
- resources = _RESOURCES
- for (base, name, subdir, filt) in resources:
- # Create the output directory if it doesn't exist.
- fulldir = os.path.join(options.output_dir, subdir)
- if os.path.isfile(fulldir):
- raise Exception('File exists where a directory needs to be created: %s' %
- fulldir)
- if not os.path.exists(fulldir):
- _LOGGER.debug('Creating directory: %s', fulldir)
- if not options.dry_run:
- os.makedirs(fulldir)
-
- # Download and read the archive.
- resource = archive_path + '/' + base
- _LOGGER.debug('Retrieving %s archive at "%s".', name, resource)
- path = _Download(resource)
-
- _LOGGER.debug('Unzipping %s archive.', name)
- with open(path, 'rb') as data:
- archive = zipfile.ZipFile(data)
- for entry in archive.infolist():
- if not filt or filt(entry):
- fullpath = os.path.normpath(os.path.join(fulldir, entry.filename))
- relpath = os.path.relpath(fullpath, options.output_dir)
- if os.path.exists(fullpath):
- # If in a dry-run take into account the fact that the file *would*
- # have been deleted.
- if options.dry_run and relpath in deleted:
- pass
- else:
- raise Exception('Path already exists: %s' % fullpath)
-
- # Extract the file and update the state dictionary.
- _LOGGER.debug('Extracting "%s".', fullpath)
- if not options.dry_run:
- archive.extract(entry.filename, fulldir)
- md5 = _Md5(fullpath)
- contents[relpath] = md5
- if sys.platform == 'cygwin':
- os.chmod(fullpath, os.stat(fullpath).st_mode | stat.S_IXUSR)
-
- _LOGGER.debug('Removing temporary file "%s".', path)
- os.remove(path)
-
- if options.copy_dia_binaries:
- # Try to copy the DIA binaries to the binaries directory.
- _MaybeCopyDIABinaries(options, contents)
-
- return state
-
-
-def _ParseCommandLine():
- """Parses the command-line and returns an options structure."""
- option_parser = optparse.OptionParser()
- option_parser.add_option('--dry-run', action='store_true', default=False,
- help='If true then will simply list actions that would be performed.')
- option_parser.add_option('--force', action='store_true', default=False,
- help='Force an installation even if the binaries are up to date.')
- option_parser.add_option('--no-cleanup', action='store_true', default=False,
- help='Allow installation on non-Windows platforms, and skip the forced '
- 'cleanup step.')
- option_parser.add_option('--output-dir', type='string',
- help='The path where the binaries will be replaced. Existing binaries '
- 'will only be overwritten if not up to date.')
- option_parser.add_option('--overwrite', action='store_true', default=False,
- help='If specified then the installation will happily delete and rewrite '
- 'the entire output directory, blasting any local changes.')
- option_parser.add_option('--revision', type='string',
- help='The SVN revision or GIT hash associated with the required version.')
- option_parser.add_option('--revision-file', type='string',
- help='A text file containing an SVN revision or GIT hash.')
- option_parser.add_option('--resource', type='string', action='append',
- dest='resources', help='A resource to be downloaded.')
- option_parser.add_option('--verbose', dest='log_level', action='store_const',
- default=logging.INFO, const=logging.DEBUG,
- help='Enables verbose logging.')
- option_parser.add_option('--quiet', dest='log_level', action='store_const',
- default=logging.INFO, const=logging.ERROR,
- help='Disables all output except for errors.')
- option_parser.add_option('--copy-dia-binaries', action='store_true',
- default=False, help='If true then the DIA dll will get copied into the '
- 'binaries directory if it\'s available.')
- options, args = option_parser.parse_args()
- if args:
- option_parser.error('Unexpected arguments: %s' % args)
- if not options.output_dir:
- option_parser.error('Must specify --output-dir.')
- if not options.revision and not options.revision_file:
- option_parser.error('Must specify one of --revision or --revision-file.')
- if options.revision and options.revision_file:
- option_parser.error('Must not specify both --revision and --revision-file.')
-
- # Configure logging.
- logging.basicConfig(level=options.log_level)
-
- # If a revision file has been specified then read it.
- if options.revision_file:
- options.revision = open(options.revision_file, 'rb').read().strip()
- _LOGGER.debug('Parsed revision "%s" from file "%s".',
- options.revision, options.revision_file)
-
- # Ensure that the specified SVN revision or GIT hash is valid.
- if not _REVISION_RE.match(options.revision):
- option_parser.error('Must specify a valid SVN or GIT revision.')
-
- # This just makes output prettier to read.
- options.output_dir = os.path.normpath(options.output_dir)
-
- return options
-
-
-def _RemoveOrphanedFiles(options):
- """This is run on non-Windows systems to remove orphaned files that may have
- been downloaded by a previous version of this script.
- """
- # Reconfigure logging to output info messages. This will allow inspection of
- # cleanup status on non-Windows buildbots.
- _LOGGER.setLevel(logging.INFO)
-
- output_dir = os.path.abspath(options.output_dir)
-
- # We only want to clean up the folder in 'src/third_party/syzygy', and we
- # expect to be called with that as an output directory. This is an attempt to
- # not start deleting random things if the script is run from an alternate
- # location, or not called from the gclient hooks.
- expected_syzygy_dir = os.path.abspath(os.path.join(
- os.path.dirname(__file__), '..', 'third_party', 'syzygy'))
- expected_output_dir = os.path.join(expected_syzygy_dir, 'binaries')
- if expected_output_dir != output_dir:
- _LOGGER.info('Unexpected output directory, skipping cleanup.')
- return
-
- if not os.path.isdir(expected_syzygy_dir):
- _LOGGER.info('Output directory does not exist, skipping cleanup.')
- return
-
- def OnError(function, path, excinfo):
- """Logs error encountered by shutil.rmtree."""
- _LOGGER.error('Error when running %s(%s)', function, path, exc_info=excinfo)
-
- _LOGGER.info('Removing orphaned files from %s', expected_syzygy_dir)
- if not options.dry_run:
- shutil.rmtree(expected_syzygy_dir, True, OnError)
-
-
-def main():
- options = _ParseCommandLine()
-
- if options.dry_run:
- _LOGGER.debug('Performing a dry-run.')
-
- # We only care about Windows platforms, as the Syzygy binaries aren't used
- # elsewhere. However, there was a short period of time where this script
- # wasn't gated on OS types, and those OSes downloaded and installed binaries.
- # This will cleanup orphaned files on those operating systems.
- if sys.platform not in ('win32', 'cygwin'):
- if options.no_cleanup:
- _LOGGER.debug('Skipping usual cleanup for non-Windows platforms.')
- else:
- return _RemoveOrphanedFiles(options)
-
- # Load the current installation state, and validate it against the
- # requested installation.
- state, is_consistent = _GetCurrentState(options.revision, options.output_dir)
-
- # Decide whether or not an install is necessary.
- if options.force:
- _LOGGER.debug('Forcing reinstall of binaries.')
- elif is_consistent:
- # Avoid doing any work if the contents of the directory are consistent.
- _LOGGER.debug('State unchanged, no reinstall necessary.')
- return
-
- # Under normal logging this is the only only message that will be reported.
- _LOGGER.info('Installing revision %s Syzygy binaries.',
- options.revision[0:12])
-
- # Clean up the old state to begin with.
- deleted = []
- if options.overwrite:
- if os.path.exists(options.output_dir):
- # If overwrite was specified then take a heavy-handed approach.
- _LOGGER.debug('Deleting entire installation directory.')
- if not options.dry_run:
- _RmTree(options.output_dir)
- else:
- # Otherwise only delete things that the previous installation put in place,
- # and take care to preserve any local changes.
- deleted = _CleanState(options.output_dir, state, options.dry_run)
-
- # Install the new binaries. In a dry-run this will actually download the
- # archives, but it won't write anything to disk.
- state = _InstallBinaries(options, deleted)
-
- # Build and save the state for the directory.
- _SaveState(options.output_dir, state, options.dry_run)
-
-
-if __name__ == '__main__':
- main()
diff --git a/chromium/build/install-build-deps.sh b/chromium/build/install-build-deps.sh
index 8fbf0317171..c0e0e0acf41 100755
--- a/chromium/build/install-build-deps.sh
+++ b/chromium/build/install-build-deps.sh
@@ -118,6 +118,7 @@ fi
# Packages needed for development
dev_list="\
+ binutils
bison
bzip2
cdbs
@@ -132,7 +133,6 @@ dev_list="\
git-core
git-svn
gperf
- libappindicator-dev
libappindicator3-dev
libasound2-dev
libbrlapi-dev
@@ -148,7 +148,6 @@ dev_list="\
libglib2.0-dev
libglu1-mesa-dev
libgnome-keyring-dev
- libgtk2.0-dev
libgtk-3-dev
libkrb5-dev
libnspr4-dev
@@ -204,7 +203,6 @@ chromeos_lib_list="libpulse0 libbz2-1.0"
# List of required run-time libraries
common_lib_list="\
- libappindicator1
libappindicator3-1
libasound2
libatk1.0-0
@@ -218,7 +216,6 @@ common_lib_list="\
libfreetype6
libglib2.0-0
libgnome-keyring0
- libgtk2.0-0
libgtk-3-0
libpam0g
libpango1.0-0
@@ -274,6 +271,8 @@ backwards_compatible_list="\
language-pack-fr
language-pack-he
language-pack-zh-hant
+ libappindicator-dev
+ libappindicator1
libappindicator3-1:i386
libdconf-dev
libdconf-dev:i386
@@ -288,6 +287,9 @@ backwards_compatible_list="\
libgl1-mesa-dev
libgl1-mesa-glx:i386
libgles2-mesa-dev
+ libgtk2.0-0
+ libgtk2.0-0:i386
+ libgtk2.0-dev
mesa-common-dev
msttcorefonts
ttf-dejavu-core
@@ -384,7 +386,6 @@ nacl_list="\
libfontconfig1:i386
libglib2.0-0:i386
libgpm2:i386
- libgtk2.0-0:i386
libgtk-3-0:i386
libncurses5:i386
lib32ncurses5-dev
diff --git a/chromium/build/linux/chrome.safestack.map b/chromium/build/linux/chrome.safestack.map
new file mode 100644
index 00000000000..76b9f5bc45d
--- /dev/null
+++ b/chromium/build/linux/chrome.safestack.map
@@ -0,0 +1,93 @@
+# This is a separate SafeStack version script to avoid accidentally exporting
+# a pthread_create symbol in the default build
+{
+global:
+ __bss_start;
+ __data_start;
+ data_start;
+ _edata;
+ _end;
+ _IO_stdin_used;
+
+ # Initialization and finalization functions for static global
+ # variables.
+ _fini;
+ _init;
+ __libc_csu_fini;
+ __libc_csu_init;
+
+ # Chrome's main function. Exported for historical purposes.
+ ChromeMain;
+
+ # Program entry point.
+ _start;
+
+ # Memory allocation symbols. We want chrome and any libraries to
+ # share the same heap, so it is correct to export these symbols.
+ calloc;
+ cfree;
+ free;
+ __free_hook;
+ __libc_calloc;
+ __libc_cfree;
+ __libc_free;
+ __libc_malloc;
+ __libc_memalign;
+ __libc_pvalloc;
+ __libc_realloc;
+ __libc_valloc;
+ mallinfo;
+ malloc;
+ __malloc_hook;
+ malloc_size;
+ malloc_stats;
+ malloc_usable_size;
+ mallopt;
+ memalign;
+ __memalign_hook;
+ __posix_memalign;
+ posix_memalign;
+ pvalloc;
+ realloc;
+ __realloc_hook;
+ valloc;
+
+ # Various flavors of operator new and operator delete.
+ _ZdaPv;
+ _ZdaPvm;
+ _ZdaPvmSt11align_val_t;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdaPvSt11align_val_t;
+ _ZdaPvSt11align_val_tRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvm;
+ _ZdlPvmSt11align_val_t;
+ _ZdlPvRKSt9nothrow_t;
+ _ZdlPvSt11align_val_t;
+ _ZdlPvSt11align_val_tRKSt9nothrow_t;
+ _Znam;
+ _ZnamRKSt9nothrow_t;
+ _ZnamSt11align_val_t;
+ _ZnamSt11align_val_tRKSt9nothrow_t;
+ _Znwm;
+ _ZnwmRKSt9nothrow_t;
+ _ZnwmSt11align_val_t;
+ _ZnwmSt11align_val_tRKSt9nothrow_t;
+
+ # Various flavors of localtime(). These are exported by the chrome
+ # sandbox to intercept calls to localtime(), which would otherwise
+ # fail in untrusted processes that don't have permission to read
+ # /etc/localtime. These overrides forward the request to the browser
+ # process, which uses dlsym(localtime) to make the real calls.
+ localtime;
+ localtime64;
+ localtime64_r;
+ localtime_r;
+
+ # The SafeStack runtime overrides thread creation routines to allocate shadow
+ # stacks on thread creation.
+ pthread_create;
+
+local:
+ *;
+};
diff --git a/chromium/build/linux/sysroot_scripts/packagelist.sid.amd64 b/chromium/build/linux/sysroot_scripts/packagelist.sid.amd64
index 68fba9feb73..9447c2d2555 100644
--- a/chromium/build/linux/sysroot_scripts/packagelist.sid.amd64
+++ b/chromium/build/linux/sysroot_scripts/packagelist.sid.amd64
@@ -1,85 +1,91 @@
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.6-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-3_amd64.deb
http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.3-1+b1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.50-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.50-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-3_amd64.deb
http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.8-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.8-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.8-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.8-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.10-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.10-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.4-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.13.0-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.0-5_amd64.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libcilkrts5_7.3.0-14_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/liblsan0_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libmpx2_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libquadmath0_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libtsan0_8-20180402-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_1.0.5-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi-dev_1.0.5-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-20_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-20_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-20_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libcilkrts5_7.3.0-28_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-28_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/liblsan0_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libmpx2_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libquadmath0_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libtsan0_8.2.0-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.12-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.12-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.1-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.1-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-5_amd64.deb
http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.19-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-0_1.8.2-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-dev_1.8.2-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.30-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.30-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-0_3.91.2-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-dev_3.91.2-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.8.8-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.8.8-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.8.8-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.8.8-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git161113-5_amd64.deb
http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu/libicu60_60.2-6_amd64.deb
http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.3_amd64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_amd64.deb
@@ -90,48 +96,50 @@ http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-6_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-6_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-6_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-6_amd64.deb
http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.9.1-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-intel1_2.4.91-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.12-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+18.04.20171206-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+18.04.20171206-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+18.04.20171206-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+18.04.20171206-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.93-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.93-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.93-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-intel1_2.4.93-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.93-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.93-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi7_3.3~rc0-6_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0+git20180308-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0+git20180308-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0+git20180308-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0+git20180308-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0+git20180308-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0+git20180308-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0+git20180308-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.3-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.3-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.1.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.1.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles1_1.1.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.1.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.1.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.1.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.1.0-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.32-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.32-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-2.2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_amd64.deb
@@ -142,25 +150,26 @@ http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpsl/libpsl5_0.20.2-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.8-1+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.2-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.2-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.28-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.10-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.2.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.2.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.2.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.2.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.2.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.2.0-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_amd64.deb
@@ -175,18 +184,18 @@ http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_amd64.
http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_amd64.deb
@@ -203,17 +212,17 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.32-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_amd64.deb
@@ -221,79 +230,81 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.17.17-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_1.8.2-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.10-0.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.6-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.6-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.19-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.19-3_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.38-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.38-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.3~beta+20180518-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.3~beta+20180518-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_amd64.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.13-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.8_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.8_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-11_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-11_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-11_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-11_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-11_amd64.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_12.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180701+dfsg-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180701+dfsg-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-6_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-6_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-6_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.24.0-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-7_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-7_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-7_amd64.deb
http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-6_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.7.3-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.32.1-0.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.32.1-0.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.32.1-0.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.32.1-0.1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/v/vulkan/libvulkan1_1.1.73+dfsg-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.15.0-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.15.0-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.15.0-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.15.0-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.15.0-2_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.16-1_all.deb
+http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-2_amd64.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
@@ -307,5 +318,5 @@ http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_201
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_amd64.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_amd64.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_amd64.deb
diff --git a/chromium/build/linux/sysroot_scripts/packagelist.sid.arm b/chromium/build/linux/sysroot_scripts/packagelist.sid.arm
index 4b7d0224b24..6df10a42a77 100644
--- a/chromium/build/linux/sysroot_scripts/packagelist.sid.arm
+++ b/chromium/build/linux/sysroot_scripts/packagelist.sid.arm
@@ -1,79 +1,85 @@
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.6-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-3_armhf.deb
http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.3-1+b1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.50-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.50-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-3_armhf.deb
http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.8-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.8-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.8-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.8-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.10-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.10-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.4-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.13.0-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.0-5_armhf.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_1.0.5-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi-dev_1.0.5-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-20_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-20_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-20_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-28_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.12-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.12-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.1-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.1-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-5_armhf.deb
http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.19-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-0_1.8.2-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-dev_1.8.2-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.30-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.30-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-0_3.91.2-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-dev_3.91.2-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.8.8-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.8.8-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.8.8-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.8.8-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git161113-5_armhf.deb
http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu/libicu60_60.2-6_armhf.deb
http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.3_armhf.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_armhf.deb
@@ -84,52 +90,54 @@ http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-6_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-6_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-6_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-6_armhf.deb
http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.9.1-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-exynos1_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-omap1_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.91-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.12-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+18.04.20171206-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+18.04.20171206-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+18.04.20171206-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+18.04.20171206-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-exynos1_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-omap1_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.93-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.93-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi7_3.3~rc0-6_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.3-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.3-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.1.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.1.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles1_1.1.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.1.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.1.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.1.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.1.0-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.32-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.32-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-2.2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_armhf.deb
@@ -140,25 +148,26 @@ http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpsl/libpsl5_0.20.2-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.8-1+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.2-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.2-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.28-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.10-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.2.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.2.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.2.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.2.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.2.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.2.0-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_armhf.deb
@@ -173,18 +182,18 @@ http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_armhf.
http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_armhf.deb
@@ -201,17 +210,17 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.32-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_armhf.deb
@@ -219,79 +228,81 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.17.17-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_1.8.2-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.10-0.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.6-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.6-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.19-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.19-3_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.38-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.38-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.3~beta+20180518-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.3~beta+20180518-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_armhf.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.13-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.8_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.8_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-11_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-11_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-11_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-11_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-11_armhf.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_12.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180701+dfsg-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180701+dfsg-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_armhf.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-6_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-6_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-6_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.24.0-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-7_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-7_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-7_armhf.deb
http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-6_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.7.3-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.32.1-0.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.32.1-0.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.32.1-0.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.32.1-0.1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/v/vulkan/libvulkan1_1.1.73+dfsg-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.15.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.15.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.15.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.15.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.15.0-2_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.16-1_all.deb
+http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-2_armhf.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
@@ -305,5 +316,5 @@ http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_201
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_armhf.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_armhf.deb
diff --git a/chromium/build/linux/sysroot_scripts/packagelist.sid.arm64 b/chromium/build/linux/sysroot_scripts/packagelist.sid.arm64
index 753a41abdb6..f9a595530e8 100644
--- a/chromium/build/linux/sysroot_scripts/packagelist.sid.arm64
+++ b/chromium/build/linux/sysroot_scripts/packagelist.sid.arm64
@@ -1,81 +1,87 @@
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.6-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-3_arm64.deb
http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.3-1+b1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.50-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.50-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-3_arm64.deb
http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.8-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.8-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.8-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.8-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.10-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.10-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.4-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.13.0-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.0-5_arm64.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8-20180402-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_1.0.5-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi-dev_1.0.5-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-20_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-20_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-20_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-28_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8.2.0-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.12-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.12-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.1-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.1-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-5_arm64.deb
http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_arm64.deb
http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.19-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-0_1.8.2-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-dev_1.8.2-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.30-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.30-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-0_3.91.2-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-dev_3.91.2-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.8.8-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.8.8-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.8.8-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.8.8-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git161113-5_arm64.deb
http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu/libicu60_60.2-6_arm64.deb
http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.3_arm64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_arm64.deb
@@ -86,49 +92,51 @@ http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-6_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-6_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-6_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-6_arm64.deb
http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.9.1-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.91-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.91-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.12-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+18.04.20171206-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+18.04.20171206-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+18.04.20171206-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+18.04.20171206-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.93-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.93-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.93-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.93-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.93-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.93-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.93-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi7_3.3~rc0-6_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0+git20180308-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0+git20180308-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0+git20180308-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0+git20180308-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0+git20180308-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0+git20180308-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0+git20180308-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.3-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.3-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.1.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.1.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles1_1.1.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.1.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.1.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.1.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.1.0-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.32-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.32-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-2.2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_arm64.deb
@@ -139,26 +147,27 @@ http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpsl/libpsl5_0.20.2-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.8-1+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.2-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.2-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.28-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.28-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.10-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.2.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.2.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.2.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.2.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.2.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.2.0-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_arm64.deb
@@ -173,18 +182,18 @@ http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_arm64.
http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_arm64.deb
@@ -201,17 +210,17 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.32-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_arm64.deb
@@ -219,79 +228,81 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.17.17-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_1.8.2-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.10-0.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.6-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.6-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.19-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.19-3_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.38-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.38-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.3~beta+20180518-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.3~beta+20180518-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_arm64.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.13-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.8_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.8_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-11_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-11_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-11_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-11_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-11_arm64.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_12.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180701+dfsg-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180701+dfsg-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_arm64.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-6_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-6_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-6_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.24.0-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-7_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-7_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-7_arm64.deb
http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-6_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.7.3-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.32.1-0.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.32.1-0.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.32.1-0.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.32.1-0.1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/v/vulkan/libvulkan1_1.1.73+dfsg-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.15.0-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.15.0-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.15.0-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.15.0-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.15.0-2_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.16-1_all.deb
+http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-2_arm64.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
@@ -305,5 +316,5 @@ http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_201
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_arm64.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_arm64.deb
diff --git a/chromium/build/linux/sysroot_scripts/packagelist.sid.i386 b/chromium/build/linux/sysroot_scripts/packagelist.sid.i386
index d2d9131a2a4..b5a9e7818a8 100644
--- a/chromium/build/linux/sysroot_scripts/packagelist.sid.i386
+++ b/chromium/build/linux/sysroot_scripts/packagelist.sid.i386
@@ -1,83 +1,89 @@
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.6-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-3_i386.deb
http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.3-1+b1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.50-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.50-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-3_i386.deb
http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.8-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.8-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.8-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.8-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.10-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.10-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.4-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.13.0-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.0-5_i386.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libcilkrts5_7.3.0-14_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8-20180402-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libmpx2_8-20180402-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libquadmath0_8-20180402-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_1.0.5-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi-dev_1.0.5-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-20_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-20_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-20_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libcilkrts5_7.3.0-28_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-28_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8.2.0-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libmpx2_8.2.0-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libquadmath0_8.2.0-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.12-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.12-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.1-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.1-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-5_i386.deb
http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.19-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-0_1.8.2-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-dev_1.8.2-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.30-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.30-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-0_3.91.2-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-dev_3.91.2-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.8.8-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.8.8-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.8.8-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.8.8-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git161113-5_i386.deb
http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_i386.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu/libicu60_60.2-6_i386.deb
http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.3_i386.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_i386.deb
@@ -88,48 +94,50 @@ http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-6_i386.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-6_i386.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-6_i386.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-6_i386.deb
http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.9.1-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-intel1_2.4.91-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.12-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+18.04.20171206-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+18.04.20171206-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+18.04.20171206-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+18.04.20171206-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.93-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.93-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.93-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-intel1_2.4.93-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.93-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.93-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_i386.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi7_3.3~rc0-6_i386.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0+git20180308-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0+git20180308-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0+git20180308-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0+git20180308-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0+git20180308-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0+git20180308-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0+git20180308-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.3-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.3-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.1.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.1.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles1_1.1.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.1.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.1.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.1.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.1.0-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.32-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.32-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-2.2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_i386.deb
@@ -140,25 +148,26 @@ http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpsl/libpsl5_0.20.2-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_i386.deb
http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.8-1+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_i386.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.2-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.2-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.28-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.10-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.2.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.2.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.2.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.2.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.2.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.2.0-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_i386.deb
@@ -173,18 +182,18 @@ http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_i386.d
http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_i386.deb
@@ -201,17 +210,17 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.32-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_i386.deb
@@ -219,79 +228,81 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.17.17-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_1.8.2-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.10-0.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.6-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.6-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_i386.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.19-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.19-3_i386.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.38-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.38-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.3~beta+20180518-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.3~beta+20180518-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_i386.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.13-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.8_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.8_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_i386.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-11_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-11_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-11_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-11_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-11_i386.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_12.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180701+dfsg-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180701+dfsg-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_i386.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_i386.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-6_i386.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-6_i386.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-6_i386.deb
+http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.24.0-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-7_i386.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-7_i386.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-7_i386.deb
http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_i386.deb
-http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-6_i386.deb
+http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.7.3-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.32.1-0.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.32.1-0.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.32.1-0.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.32.1-0.1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/v/vulkan/libvulkan1_1.1.73+dfsg-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.15.0-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.15.0-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.15.0-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.15.0-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.15.0-2_i386.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.16-1_all.deb
+http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-2_i386.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
@@ -305,5 +316,5 @@ http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_201
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_i386.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_i386.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_i386.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_i386.deb
diff --git a/chromium/build/linux/sysroot_scripts/packagelist.sid.mips64el b/chromium/build/linux/sysroot_scripts/packagelist.sid.mips64el
index e913cb9dc31..5a115d085b0 100644
--- a/chromium/build/linux/sysroot_scripts/packagelist.sid.mips64el
+++ b/chromium/build/linux/sysroot_scripts/packagelist.sid.mips64el
@@ -1,77 +1,83 @@
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.6-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-3_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.3-1+b1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.50-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.50-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-3_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.8-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.8-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.8-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.8-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.10-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.10-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.4-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.13.0-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.0-5_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_1.0.5-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi-dev_1.0.5-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-20_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-20_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.12-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.12-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.1-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.1-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-5_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.19-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-0_1.8.2-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-dev_1.8.2-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.30-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.30-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-0_3.91.2-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-dev_3.91.2-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.8.8-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.8.8-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.8.8-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.8.8-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git161113-5_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu/libicu60_60.2-6_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.3_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_mips64el.deb
@@ -82,47 +88,49 @@ http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-6_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-6_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-6_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-6_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.9.1-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.12-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+18.04.20171206-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+18.04.20171206-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+18.04.20171206-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+18.04.20171206-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.93-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.93-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.93-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.93-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.93-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi7_3.3~rc0-6_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.3-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.3-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.1.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.1.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles1_1.1.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.1.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.1.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.1.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.1.0-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.32-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.32-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-2.2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mips64el.deb
@@ -133,25 +141,26 @@ http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpsl/libpsl5_0.20.2-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.8-1+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.2-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.2-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.28-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.10-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.2.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.2.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.2.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.2.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.2.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.2.0-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_mips64el.deb
@@ -166,18 +175,18 @@ http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_mips64
http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_mips64el.deb
@@ -194,17 +203,17 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.32-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_mips64el.deb
@@ -212,79 +221,81 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_mips64el.
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.17.17-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_1.8.2-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.10-0.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.6-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.6-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.19-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.19-3_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.38-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.38-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.3~beta+20180518-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.3~beta+20180518-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.13-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.8_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.8_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-11_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-11_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-11_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-11_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-11_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_12.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180701+dfsg-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180701+dfsg-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-6_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-6_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-6_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.24.0-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-7_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-7_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-7_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-6_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.7.3-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.32.1-0.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.32.1-0.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.32.1-0.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.32.1-0.1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/v/vulkan/libvulkan1_1.1.73+dfsg-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.15.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.15.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.15.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.15.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.15.0-2_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.16-1_all.deb
+http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-2_mips64el.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
@@ -298,5 +309,5 @@ http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_201
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_mips64el.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_mips64el.deb
diff --git a/chromium/build/linux/sysroot_scripts/packagelist.sid.mipsel b/chromium/build/linux/sysroot_scripts/packagelist.sid.mipsel
index 24057524af3..ac7d80b8b21 100644
--- a/chromium/build/linux/sysroot_scripts/packagelist.sid.mipsel
+++ b/chromium/build/linux/sysroot_scripts/packagelist.sid.mipsel
@@ -1,77 +1,83 @@
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.6-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-3_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.3-1+b1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.50-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.50-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-3_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.8-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.8-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.8-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.8-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.10-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.10-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.4-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.13.0-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.0-5_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_1.0.5-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi-dev_1.0.5-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-20_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-20_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.12-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.12-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.1-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.1-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-5_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.19-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-0_1.8.2-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/graphene/libgraphene-1.0-dev_1.8.2-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.30-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.30-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-0_3.91.2-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/g/gtk+4.0/libgtk-4-dev_3.91.2-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.8.8-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.8.8-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.8.8-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.8.8-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git161113-5_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/i/icu/libicu60_60.2-6_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.3_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_mipsel.deb
@@ -82,47 +88,49 @@ http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-6_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-6_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-6_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-6_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.9.1-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.12-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+18.04.20171206-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+18.04.20171206-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+18.04.20171206-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+18.04.20171206-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.93-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.93-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.93-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.93-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.93-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi7_3.3~rc0-6_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.3-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.3-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.1.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.1.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles1_1.1.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.1.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.1.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.1.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.1.0-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.32-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.32-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-2.2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mipsel.deb
@@ -133,25 +141,26 @@ http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libp/libpsl/libpsl5_0.20.2-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.8-1+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.2-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.2-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.28-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.10-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.2.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.2.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.2.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.2.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.2.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.2.0-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_mipsel.deb
@@ -166,18 +175,18 @@ http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_mipsel
http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_mipsel.deb
@@ -194,17 +203,17 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.32-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1+b1_mipsel.deb
@@ -212,79 +221,81 @@ http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1+b1_mipsel
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.17.17-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_1.8.2-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.10-0.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.6-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.6-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.19-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.19-3_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.38-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.38-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.3~beta+20180518-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.3~beta+20180518-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.13-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.8_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.8_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-11_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-11_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-11_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-11_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-11_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_12.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180701+dfsg-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180701+dfsg-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-6_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-6_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-6_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.24.0-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-7_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-7_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-7_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-6_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.7.3-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.32.1-0.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.32.1-0.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.32.1-0.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.32.1-0.1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/v/vulkan/libvulkan1_1.1.73+dfsg-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.15.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.15.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.15.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.15.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.15.0-2_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.16-1_all.deb
+http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-2_mipsel.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
@@ -298,5 +309,5 @@ http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_201
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_mipsel.deb
+http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_mipsel.deb
diff --git a/chromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh b/chromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh
index 18aa037d0e2..8aad299a17a 100755
--- a/chromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh
+++ b/chromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh
@@ -8,7 +8,14 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DISTRO=debian
DIST=sid
-APT_SOURCES_LIST="http://ftp.us.debian.org/debian/ sid main"
+# Keep the "experimental" repo before the "sid" repo. There are some packages
+# that are currently only available in experimental like libgtk-4-0, but if it
+# were to be placed first, experimental (unreleased) versions of other packages
+# like libc6 would take precedence over the sid (released) versions. While this
+# may be useful for certain kinds of development, the standard sysroots should
+# continue to be shipped only with released packages.
+APT_SOURCES_LIST="http://ftp.us.debian.org/debian/ experimental main
+http://ftp.us.debian.org/debian/ sid main"
# gpg keyring file generated using:
# export KEYS="518E17E1 46925553 2B90D010 C857C906 F66AEC98 8AE22BA9 1A7B6500"
@@ -94,12 +101,14 @@ DEBIAN_PACKAGES="\
libexpat1-dev
libffi-dev
libffi6
+ libffi7
libflac-dev
libflac8
libfontconfig1
libfontconfig1-dev
libfreetype6
libfreetype6-dev
+ libfribidi-dev
libfribidi0
libgbm-dev
libgbm1
@@ -113,6 +122,7 @@ DEBIAN_PACKAGES="\
libgl1-mesa-dev
libgl1-mesa-glx
libglapi-mesa
+ libgles1
libgles2
libglib2.0-0
libglib2.0-dev
@@ -130,21 +140,26 @@ DEBIAN_PACKAGES="\
libgomp1
libgpg-error-dev
libgpg-error0
+ libgraphene-1.0-0
+ libgraphene-1.0-dev
libgraphite2-3
libgraphite2-dev
libgssapi-krb5-2
libgssrpc4
libgtk-3-0
libgtk-3-dev
+ libgtk-4-0
+ libgtk-4-dev
libgtk2.0-0
- libgtk2.0-dev
libharfbuzz-dev
libharfbuzz-gobject0
libharfbuzz-icu0
libharfbuzz0b
libhogweed4
libice6
+ libicu-le-hb0
libicu57
+ libicu60
libidl-2-0
libidn11
libidn2-0
@@ -206,6 +221,7 @@ DEBIAN_PACKAGES="\
libpixman-1-dev
libpng-dev
libpng16-16
+ libpsl5
libpthread-stubs0-dev
libpulse-dev
libpulse-mainloop-glib0
@@ -247,9 +263,11 @@ DEBIAN_PACKAGES="\
libvorbisenc2
libvpx-dev
libvpx5
+ libvulkan1
libwayland-client0
libwayland-cursor0
libwayland-dev
+ libwayland-egl1
libwayland-egl1-mesa
libwayland-server0
libwebp-dev
diff --git a/chromium/build/linux/sysroot_scripts/sysroots.json b/chromium/build/linux/sysroot_scripts/sysroots.json
index e79b69b764b..c65e69b2d44 100644
--- a/chromium/build/linux/sysroot_scripts/sysroots.json
+++ b/chromium/build/linux/sysroot_scripts/sysroots.json
@@ -1,37 +1,37 @@
{
"sid_amd64": {
- "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced",
- "Sha1Sum": "4e7db513b0faeea8fb410f70c9909e8736f5c0ab",
+ "Revision": "2abe7ab2252a37b3c5a400c5c2d7052b43b4d924",
+ "Sha1Sum": "815a8c22f8657fe57d02e2c2d893bcdc25a243cf",
"SysrootDir": "debian_sid_amd64-sysroot",
"Tarball": "debian_sid_amd64_sysroot.tar.xz"
},
"sid_arm": {
- "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced",
- "Sha1Sum": "b2165ab47ab9c4cc780db53ace1b08607d68ae31",
+ "Revision": "2abe7ab2252a37b3c5a400c5c2d7052b43b4d924",
+ "Sha1Sum": "b732cc2c870314130b767557b34764f8dd0a3df8",
"SysrootDir": "debian_sid_arm-sysroot",
"Tarball": "debian_sid_arm_sysroot.tar.xz"
},
"sid_arm64": {
- "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced",
- "Sha1Sum": "37dfa5f22e2c0e847cee34f9848eb31230c33d35",
+ "Revision": "2abe7ab2252a37b3c5a400c5c2d7052b43b4d924",
+ "Sha1Sum": "c68b2062879db201c4047d03c016227d3d1e7b35",
"SysrootDir": "debian_sid_arm64-sysroot",
"Tarball": "debian_sid_arm64_sysroot.tar.xz"
},
"sid_i386": {
- "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced",
- "Sha1Sum": "b8639749e2b561a7462d7e7978ca74ee4044bdab",
+ "Revision": "2abe7ab2252a37b3c5a400c5c2d7052b43b4d924",
+ "Sha1Sum": "8fa6886026aed66e5c3056a1498490d23ccc9ae1",
"SysrootDir": "debian_sid_i386-sysroot",
"Tarball": "debian_sid_i386_sysroot.tar.xz"
},
"sid_mips": {
- "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced",
- "Sha1Sum": "baaf37cdcbcf251fb9a4ccaf8b479722ae61fe49",
+ "Revision": "2abe7ab2252a37b3c5a400c5c2d7052b43b4d924",
+ "Sha1Sum": "791ebb865df4c107d94e6e365ed7a9bcf191509a",
"SysrootDir": "debian_sid_mips-sysroot",
"Tarball": "debian_sid_mips_sysroot.tar.xz"
},
"sid_mips64el": {
- "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced",
- "Sha1Sum": "bbfe1a513b849921cfcf78865faec8fc03f93b3d",
+ "Revision": "2abe7ab2252a37b3c5a400c5c2d7052b43b4d924",
+ "Sha1Sum": "313505573e6d06e127b5acd9509781d4d6e5ad9b",
"SysrootDir": "debian_sid_mips64el-sysroot",
"Tarball": "debian_sid_mips64el_sysroot.tar.xz"
}
diff --git a/chromium/build/linux/unbundle/README b/chromium/build/linux/unbundle/README
index 6e4f0a95c9f..b6b6321b384 100644
--- a/chromium/build/linux/unbundle/README
+++ b/chromium/build/linux/unbundle/README
@@ -32,7 +32,7 @@ Usage:
1. remove_bundled_libraries.py <preserved-directories>
- For example: remove_bundled_libraries.py third_party/mesa
+ For example: remove_bundled_libraries.py third_party/zlib
The script scans sources looking for third_party directories.
Everything that is not explicitly preserved is removed (except for
diff --git a/chromium/build/mac/tweak_info_plist.gni b/chromium/build/mac/tweak_info_plist.gni
index 505f5e50ab7..9f4cbb3fdfa 100644
--- a/chromium/build/mac/tweak_info_plist.gni
+++ b/chromium/build/mac/tweak_info_plist.gni
@@ -2,6 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("//build/util/lastchange.gni")
+
# Template to run the tweak_info_plist.py script on a plist.
#
# Arguments:
@@ -59,7 +61,7 @@ template("tweak_info_plist") {
inputs = [
script,
"//build/util/version.py",
- "//build/util/LASTCHANGE",
+ lastchange_file,
"//chrome/VERSION",
]
sources = [
diff --git a/chromium/build/nocompile.gni b/chromium/build/nocompile.gni
index be6e5af481a..e2e7269e2db 100644
--- a/chromium/build/nocompile.gni
+++ b/chromium/build/nocompile.gni
@@ -92,6 +92,7 @@ if (enable_nocompile_tests) {
"-Wfatal-errors",
"-Wthread-safety",
"-I" + rebase_path("//", root_build_dir),
+ "-I" + rebase_path(root_gen_dir, root_build_dir),
]
if (sysroot != "") {
args += [
diff --git a/chromium/build/print_python_deps.py b/chromium/build/print_python_deps.py
index 2459a28e6b6..8ded01e0d67 100755
--- a/chromium/build/print_python_deps.py
+++ b/chromium/build/print_python_deps.py
@@ -78,6 +78,10 @@ def main():
help='Directory to make paths relative to.')
parser.add_argument('--output',
help='Write output to a file rather than stdout.')
+ parser.add_argument('--inplace', action='store_true',
+ help='Write output to a file with the same path as the '
+ 'module, but with a .pydeps extension. Also sets the '
+ 'root to the module\'s directory.')
parser.add_argument('--no-header', action='store_true',
help='Do not write the "# Generated by" header.')
parser.add_argument('--gn-paths', action='store_true',
@@ -92,6 +96,14 @@ def main():
sys.path[0] = os.path.dirname(options.module)
imp.load_source('NAME', options.module)
+ if options.inplace:
+ if options.output:
+ parser.error('Cannot use --inplace and --output at the same time!')
+ if not options.module.endswith('.py'):
+ parser.error('Input module path should end with .py suffix!')
+ options.output = options.module + 'deps'
+ options.root = os.path.dirname(options.module)
+
paths_set = _ComputePythonDependencies()
for path in options.whitelists:
paths_set.update(os.path.abspath(p) for p in _FindPythonInDirectory(path))
diff --git a/chromium/build/protoc_java.py b/chromium/build/protoc_java.py
index 2addb8210fe..5227bf94999 100755
--- a/chromium/build/protoc_java.py
+++ b/chromium/build/protoc_java.py
@@ -76,7 +76,8 @@ def main(argv):
if options.depfile:
assert options.srcjar
deps = args + [options.protoc]
- build_utils.WriteDepfile(options.depfile, options.srcjar, deps)
+ build_utils.WriteDepfile(options.depfile, options.srcjar, deps,
+ add_pydeps=False)
if options.stamp:
build_utils.Touch(options.stamp)
diff --git a/chromium/build/protoc_java.pydeps b/chromium/build/protoc_java.pydeps
new file mode 100644
index 00000000000..a26622b476c
--- /dev/null
+++ b/chromium/build/protoc_java.pydeps
@@ -0,0 +1,7 @@
+# Generated by running:
+# build/print_python_deps.py --root build --output build/protoc_java.pydeps build/protoc_java.py
+android/gyp/util/__init__.py
+android/gyp/util/build_utils.py
+android/gyp/util/md5_check.py
+gn_helpers.py
+protoc_java.py
diff --git a/chromium/build/sanitizers/tsan_suppressions.cc b/chromium/build/sanitizers/tsan_suppressions.cc
index 9e475c6cd78..4b2fb0907e1 100644
--- a/chromium/build/sanitizers/tsan_suppressions.cc
+++ b/chromium/build/sanitizers/tsan_suppressions.cc
@@ -261,9 +261,6 @@ char kTSanDefaultSuppressions[] =
// http://crbug.com/797998
"race:content::SandboxIPCHandler::HandleLocaltime\n"
- //
- "race:third_party/harfbuzz-ng/src/*\n"
-
// End of suppressions.
; // Please keep this semicolon.
diff --git a/chromium/build/secondary/testing/gmock/BUILD.gn b/chromium/build/secondary/testing/gmock/BUILD.gn
deleted file mode 100644
index 9184d623c82..00000000000
--- a/chromium/build/secondary/testing/gmock/BUILD.gn
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 2014 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.
-
-# Chromium's GN configuration for gmock now lives at testing/gmock/BUILD.gn.
-#
-# This configuration is left in the tree because it is pulled by V8 and PDFium,
-# and will be removed as soon as the projects switch off of it.
-#
-# Details at http://crbug.com/630705 and http://crrev.com/2779193002
-
-config("gmock_config") {
- # Gmock headers need to be able to find themselves.
- include_dirs = [
- "//testing/gmock_custom",
- "include",
- ]
-}
-
-static_library("gmock") {
- testonly = true
- sources = [
- # Sources based on files in r173 of gmock.
- "include/gmock/gmock-actions.h",
- "include/gmock/gmock-cardinalities.h",
- "include/gmock/gmock-generated-actions.h",
- "include/gmock/gmock-generated-function-mockers.h",
- "include/gmock/gmock-generated-matchers.h",
- "include/gmock/gmock-generated-nice-strict.h",
- "include/gmock/gmock-matchers.h",
- "include/gmock/gmock-spec-builders.h",
- "include/gmock/gmock.h",
- "include/gmock/internal/gmock-generated-internal-utils.h",
- "include/gmock/internal/gmock-internal-utils.h",
- "include/gmock/internal/gmock-port.h",
-
- # gmock helpers.
- "../gmock_custom/gmock/internal/custom/gmock-port.h",
-
- #"src/gmock-all.cc", # Not needed by our build.
- "src/gmock-cardinalities.cc",
- "src/gmock-internal-utils.cc",
- "src/gmock-matchers.cc",
- "src/gmock-spec-builders.cc",
- "src/gmock.cc",
- ]
-
- # This project includes some stuff form gtest's guts.
- include_dirs = [ "../gtest/include" ]
-
- public_configs = [
- ":gmock_config",
- "//testing/gtest:gtest_config",
- ]
-}
-
-static_library("gmock_main") {
- testonly = true
- sources = [
- "src/gmock_main.cc",
- ]
- deps = [
- ":gmock",
- ]
-}
diff --git a/chromium/build/secondary/testing/gtest/BUILD.gn b/chromium/build/secondary/testing/gtest/BUILD.gn
deleted file mode 100644
index aa24d7eb457..00000000000
--- a/chromium/build/secondary/testing/gtest/BUILD.gn
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright 2014 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.
-
-# Chromium's GN configuration for gtest now lives at testing/gtest/BUILD.gn.
-#
-# This configuration is left in the tree because it is pulled by V8 and PDFium,
-# and will be removed as soon as the projects switch off of it.
-#
-# Details at http://crbug.com/630705 and http://crrev.com/2779193002
-
-import("//build_overrides/gtest.gni")
-if (is_ios) {
- import("//build/config/ios/ios_sdk.gni")
- import("//build/buildflag_header.gni")
-}
-
-config("gtest_config") {
- visibility = [
- ":*",
- "//testing/gmock:*", # gmock also shares this config.
- ]
-
- defines = [
- # In order to allow regex matches in gtest to be shared between Windows
- # and other systems, we tell gtest to always use it's internal engine.
- "GTEST_HAS_POSIX_RE=0",
- "GTEST_LANG_CXX11=1",
- ]
-
- # Gtest headers need to be able to find themselves.
- include_dirs = [ "include" ]
-
- if (is_win) {
- cflags = [ "/wd4800" ] # Unused variable warning.
- }
-}
-
-config("gtest_direct_config") {
- visibility = [ ":*" ]
- defines = [ "UNIT_TEST" ]
-}
-
-config("gtest_warnings") {
- if (is_win && is_clang) {
- # The Mutex constructor initializer list in gtest-port.cc is incorrectly
- # ordered. See
- # https://groups.google.com/d/msg/googletestframework/S5uSV8L2TX8/U1FaTDa6J6sJ.
- cflags = [ "-Wno-reorder" ]
- }
-}
-
-static_library("gtest") {
- testonly = true
- sources = [
- "include/gtest/gtest-death-test.h",
- "include/gtest/gtest-message.h",
- "include/gtest/gtest-param-test.h",
- "include/gtest/gtest-printers.h",
- "include/gtest/gtest-spi.h",
- "include/gtest/gtest-test-part.h",
- "include/gtest/gtest-typed-test.h",
- "include/gtest/gtest.h",
- "include/gtest/gtest_pred_impl.h",
- "include/gtest/internal/gtest-death-test-internal.h",
- "include/gtest/internal/gtest-filepath.h",
- "include/gtest/internal/gtest-internal.h",
- "include/gtest/internal/gtest-linked_ptr.h",
- "include/gtest/internal/gtest-param-util-generated.h",
- "include/gtest/internal/gtest-param-util.h",
- "include/gtest/internal/gtest-port.h",
- "include/gtest/internal/gtest-string.h",
- "include/gtest/internal/gtest-tuple.h",
- "include/gtest/internal/gtest-type-util.h",
-
- #"gtest/src/gtest-all.cc", # Not needed by our build.
- "src/gtest-death-test.cc",
- "src/gtest-filepath.cc",
- "src/gtest-internal-inl.h",
- "src/gtest-port.cc",
- "src/gtest-printers.cc",
- "src/gtest-test-part.cc",
- "src/gtest-typed-test.cc",
- "src/gtest.cc",
- ]
- deps = []
-
- if (gtest_include_multiprocess) {
- sources += [
- "../multiprocess_func_list.cc",
- "../multiprocess_func_list.h",
- ]
- }
-
- if (gtest_include_platform_test) {
- sources += [ "../platform_test.h" ]
- }
-
- if ((is_mac || is_ios) && gtest_include_objc_support) {
- if (is_ios) {
- set_sources_assignment_filter([])
- }
- sources += [
- "../gtest_mac.h",
- "../gtest_mac.mm",
- ]
- if (gtest_include_platform_test) {
- sources += [ "../platform_test_mac.mm" ]
- }
- set_sources_assignment_filter(sources_assignment_filter)
- }
-
- if (is_ios && gtest_include_ios_coverage) {
- sources += [
- "../coverage_util_ios.h",
- "../coverage_util_ios.mm",
- ]
- deps += [ ":ios_enable_coverage" ]
- }
-
- include_dirs = [ "." ]
-
- all_dependent_configs = [ ":gtest_config" ]
- public_configs = [ ":gtest_direct_config" ]
-
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [
- "//build/config/compiler:no_chromium_code",
-
- # Must be after no_chromium_code for warning flags to be ordered correctly.
- ":gtest_warnings",
- ]
-}
-
-source_set("gtest_main") {
- testonly = true
- sources = [
- "src/gtest_main.cc",
- ]
- deps = [
- ":gtest",
- ]
-}
-
-if (is_ios) {
- buildflag_header("ios_enable_coverage") {
- header = "ios_enable_coverage.h"
- flags = [ "IOS_ENABLE_COVERAGE=$ios_enable_coverage" ]
- }
-}
diff --git a/chromium/build/secondary/third_party/android_tools/BUILD.gn b/chromium/build/secondary/third_party/android_tools/BUILD.gn
index e720d541de7..ff5f143ed29 100644
--- a/chromium/build/secondary/third_party/android_tools/BUILD.gn
+++ b/chromium/build/secondary/third_party/android_tools/BUILD.gn
@@ -39,273 +39,132 @@ if (enable_java_templates) {
# and are linked by default on O and below. Starting in P, they
# exist in their own libraries that are present on device and are
# available to be linked against but aren't linked by default.
-
android_system_java_prebuilt("android_test_base_java") {
jar_path = "${android_sdk}/optional/android.test.base.jar"
}
-
android_system_java_prebuilt("android_test_mock_java") {
jar_path = "${android_sdk}/optional/android.test.mock.jar"
}
-
android_system_java_prebuilt("android_test_runner_java") {
jar_path = "${android_sdk}/optional/android.test.runner.jar"
}
- template("support_lib_alias") {
+ android_library("android_support_chromium_java") {
+ testonly = true
+ java_files = [ "//third_party/android_tools/sdk/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ]
+ }
+ android_java_prebuilt("android_gcm_java") {
+ jar_path = "//third_party/android_tools/sdk/extras/google/gcm/gcm-client/dist/gcm.jar"
+ }
+ android_java_prebuilt("emma_device_java") {
+ jar_path = "//third_party/android_tools/sdk/tools/lib/emma_device.jar"
+ include_java_resources = true
+ }
+
+ template("android_deps_alias") {
java_group(target_name) {
- forward_variables_from(invoker, [ "testonly" ])
deps = [
- "$android_support_library_package:$target_name",
+ "//third_party/android_deps:${invoker.android_deps_target_name}",
]
}
}
-
- support_lib_alias("android_support_chromium_java") {
- testonly = true
- }
- support_lib_alias("android_gcm_java") {
- }
- support_lib_alias("emma_device_java") {
+ android_deps_alias("android_arch_lifecycle_common_java") {
+ android_deps_target_name = "android_arch_lifecycle_common_java"
}
- prebuilt_wrapper("android_arch_lifecycle_common_java") {
- fallback_target = "$android_support_library_package:$target_name"
+ android_deps_alias("android_arch_lifecycle_runtime_java") {
+ android_deps_target_name = "android_arch_lifecycle_runtime_java"
}
- prebuilt_wrapper("android_arch_lifecycle_runtime_java") {
- fallback_target = "$android_support_library_package:$target_name"
- }
- prebuilt_wrapper("android_support_multidex_java") {
+ android_deps_alias("android_support_multidex_java") {
android_deps_target_name = "com_android_support_multidex_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_annotations_java") {
+ android_deps_alias("android_support_annotations_java") {
android_deps_target_name = "com_android_support_support_annotations_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_cardview_java") {
+ android_deps_alias("android_support_cardview_java") {
android_deps_target_name = "com_android_support_cardview_v7_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_compat_java") {
+ android_deps_alias("android_support_compat_java") {
android_deps_target_name = "com_android_support_support_compat_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_core_ui_java") {
+ android_deps_alias("android_support_core_ui_java") {
android_deps_target_name = "com_android_support_support_core_ui_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_core_utils_java") {
+ android_deps_alias("android_support_core_utils_java") {
android_deps_target_name = "com_android_support_support_core_utils_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_design_java") {
+ android_deps_alias("android_support_design_java") {
android_deps_target_name = "com_android_support_design_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_v4_java") {
- fallback_target = "$android_support_library_package:$target_name"
+ android_deps_alias("android_support_v4_java") {
+ android_deps_target_name = "android_support_v4_java"
}
- prebuilt_wrapper("android_support_v7_appcompat_java") {
- fallback_target = "$android_support_library_package:$target_name"
+ android_deps_alias("android_support_v7_appcompat_java") {
+ android_deps_target_name = "android_support_v7_appcompat_java"
}
- prebuilt_wrapper("android_support_v7_gridlayout_java") {
+ android_deps_alias("android_support_v7_gridlayout_java") {
android_deps_target_name = "com_android_support_gridlayout_v7_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_v7_mediarouter_java") {
+ android_deps_alias("android_support_v7_mediarouter_java") {
android_deps_target_name = "com_android_support_mediarouter_v7_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_v7_recyclerview_java") {
+ android_deps_alias("android_support_v7_recyclerview_java") {
android_deps_target_name = "com_android_support_recyclerview_v7_java"
- fallback_target = "$android_support_library_package:$target_name"
}
- prebuilt_wrapper("android_support_v13_java") {
+ android_deps_alias("android_support_v13_java") {
android_deps_target_name = "com_android_support_support_v13_java"
- fallback_target = "$android_support_library_package:$target_name"
}
-
- # TODO(dgn): Use the POM files instead of hardcoding the dependencies.
- gms_path = "$default_extras_android_sdk_root/extras/google/m2repository/com/google/android/gms"
- gms_version = "12.0.1"
-
- android_aar_prebuilt("google_play_services_basement_java") {
- deps = [
- ":android_support_v4_java",
- ]
- _lib_name = "play-services-basement"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
+ android_deps_alias("google_play_services_basement_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_basement_java"
}
-
- android_aar_prebuilt("google_play_services_tasks_java") {
- deps = [
- ":google_play_services_basement_java",
- ]
- _lib_name = "play-services-tasks"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_tasks_java") {
+ android_deps_target_name = "com_google_android_gms_play_services_tasks_java"
}
-
- android_aar_prebuilt("google_play_services_base_java") {
- deps = [
- ":android_support_v4_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-base"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_base_java") {
+ android_deps_target_name = "com_google_android_gms_play_services_base_java"
}
-
- android_aar_prebuilt("google_play_services_auth_base_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-auth-base"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_auth_base_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_auth_base_java"
}
-
- android_aar_prebuilt("google_play_services_auth_api_phone_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-auth-api-phone"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_auth_api_phone_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_auth_api_phone_java"
}
-
- android_aar_prebuilt("google_play_services_auth_java") {
- deps = [
- ":google_play_services_auth_api_phone_java",
- ":google_play_services_auth_base_java",
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-auth"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_auth_java") {
+ android_deps_target_name = "com_google_android_gms_play_services_auth_java"
}
-
- android_aar_prebuilt("google_play_services_cast_java") {
- deps = [
- ":android_support_v7_mediarouter_java",
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-cast"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_cast_java") {
+ android_deps_target_name = "com_google_android_gms_play_services_cast_java"
}
-
- android_aar_prebuilt("google_play_services_cast_framework_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_cast_java",
- ]
- _lib_name = "play-services-cast-framework"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_cast_framework_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_cast_framework_java"
}
-
- android_aar_prebuilt("google_play_services_iid_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-iid"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_iid_java") {
+ android_deps_target_name = "com_google_android_gms_play_services_iid_java"
}
-
- android_aar_prebuilt("google_play_services_gcm_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_iid_java",
- ]
- _lib_name = "play-services-gcm"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_instantapps_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_instantapps_java"
}
-
- android_aar_prebuilt("google_play_services_location_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-location"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_gcm_java") {
+ android_deps_target_name = "com_google_android_gms_play_services_gcm_java"
}
-
- android_aar_prebuilt("google_play_services_vision_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_vision_common_java",
- ]
- _lib_name = "play-services-vision"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_location_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_location_java"
}
-
- android_aar_prebuilt("google_play_services_vision_common_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ]
- _lib_name = "play-services-vision-common"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_vision_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_vision_java"
}
-
- android_aar_prebuilt("google_play_services_fido_java") {
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
- _lib_name = "play-services-fido"
- aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
- info_path = "//build/secondary/third_party/android_tools/$target_name.info"
- proguard_configs =
- [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+ android_deps_alias("google_play_services_vision_common_java") {
+ android_deps_target_name =
+ "com_google_android_gms_play_services_vision_common_java"
+ }
+ android_deps_alias("google_play_services_fido_java") {
+ android_deps_target_name = "com_google_android_gms_play_services_fido_java"
}
# The current version of //third_party/byte_buddy relies on an older
diff --git a/chromium/build/secondary/third_party/android_tools/support/BUILD.gn b/chromium/build/secondary/third_party/android_tools/support/BUILD.gn
deleted file mode 100644
index 55609b61165..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/BUILD.gn
+++ /dev/null
@@ -1,262 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/config/android/rules.gni")
-
-assert(enable_java_templates)
-
-visibility = [ ":*" ]
-
-lib_version = "27.0.0"
-lib_path = "//third_party/android_tools/sdk/extras/android/m2repository/com/android/support"
-arch_lib_version = "1.0.0"
-arch_lib_path =
- "//third_party/android_tools/sdk/extras/android/m2repository/android/arch"
-build_file_dir = "//build/secondary/third_party/android_tools/support"
-
-android_library("android_support_chromium_java") {
- testonly = true
- java_files = [ "//third_party/android_tools/sdk/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ]
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_java_prebuilt("android_gcm_java") {
- jar_path = "//third_party/android_tools/sdk/extras/google/gcm/gcm-client/dist/gcm.jar"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_java_prebuilt("emma_device_java") {
- jar_path = "//third_party/android_tools/sdk/tools/lib/emma_device.jar"
- include_java_resources = true
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_design_java") {
- deps = [
- ":android_support_transition_java",
- ":android_support_v4_java",
- ":android_support_v7_appcompat_java",
- ":android_support_v7_recyclerview_java",
- ]
- _lib_name = "design"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_transition_java") {
- deps = [
- ":android_support_v4_java",
- ]
- _lib_name = "transition"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
-}
-
-android_aar_prebuilt("android_support_cardview_java") {
- deps = [
- ":android_support_v7_appcompat_java",
- ]
- _lib_name = "cardview-v7"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_multidex_java") {
- aar_path = "$lib_path/multidex/1.0.1/multidex-1.0.1.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_arch_lifecycle_runtime_java") {
- aar_path = "$arch_lib_path/lifecycle/runtime/$arch_lib_version/runtime-$arch_lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- deps = [
- ":android_arch_core_common_java",
- ":android_arch_lifecycle_common_java",
- ":android_support_annotations_java",
- ]
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_java_prebuilt("android_arch_lifecycle_common_java") {
- output_name = "arch_lifecycle_common"
- jar_path = "$arch_lib_path/lifecycle/common/$arch_lib_version/common-$arch_lib_version.jar"
- deps = [
- ":android_support_annotations_java",
- ]
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_java_prebuilt("android_arch_core_common_java") {
- output_name = "arch_core_common"
- jar_path = "$arch_lib_path/core/common/$arch_lib_version/common-$arch_lib_version.jar"
- deps = [
- ":android_support_annotations_java",
- ]
-}
-
-android_java_prebuilt("android_support_annotations_java") {
- _lib_name = "support-annotations"
- jar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.jar"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-java_group("android_support_v4_java") {
- deps = [
- ":android_support_compat_java",
- ":android_support_core_ui_java",
- ":android_support_core_utils_java",
- ":android_support_fragment_java",
- ":android_support_media_compat_java",
- ]
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_compat_java") {
- deps = [
- ":android_arch_lifecycle_runtime_java",
- ":android_support_annotations_java",
- ]
- _lib_name = "support-compat"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- ignore_aidl = true # We don't appear to need these currently.
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_core_ui_java") {
- deps = [
- ":android_support_compat_java",
- ]
- _lib_name = "support-core-ui"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_core_utils_java") {
- deps = [
- ":android_support_compat_java",
- ]
- _lib_name = "support-core-utils"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_fragment_java") {
- deps = [
- ":android_support_compat_java",
- ":android_support_core_ui_java",
- ":android_support_core_utils_java",
- ":android_support_media_compat_java",
- ]
- _lib_name = "support-fragment"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
-}
-
-android_aar_prebuilt("android_support_media_compat_java") {
- deps = [
- ":android_support_compat_java",
- ]
- _lib_name = "support-media-compat"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- ignore_aidl = true # We don't appear to need these currently.
-}
-
-android_aar_prebuilt("android_support_v13_java") {
- deps = [
- ":android_support_v4_java",
- ]
- _lib_name = "support-v13"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_vector_drawable_java") {
- deps = [
- ":android_support_compat_java",
- ]
- _lib_name = "support-vector-drawable"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
-}
-
-android_aar_prebuilt("android_support_animated_vector_drawable_java") {
- deps = [
- ":android_support_core_ui_java",
- ":android_support_vector_drawable_java",
- ]
- _lib_name = "animated-vector-drawable"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
-}
-
-android_aar_prebuilt("android_support_v7_appcompat_java_internal") {
- deps = [
- ":android_support_v4_java",
- ]
- _lib_name = "appcompat-v7"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
-}
-
-java_group("android_support_v7_appcompat_java") {
- deps = [
- ":android_support_animated_vector_drawable_java",
- ":android_support_v4_java",
- ":android_support_v7_appcompat_java_internal",
- ":android_support_vector_drawable_java",
- ]
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_v7_gridlayout_java") {
- deps = [
- ":android_support_compat_java",
- ":android_support_core_ui_java",
- ]
- _lib_name = "gridlayout-v7"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_v7_mediarouter_java") {
- deps = [
- ":android_support_v7_appcompat_java",
- ":android_support_v7_palette_java",
- ]
- _lib_name = "mediarouter-v7"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_v7_recyclerview_java") {
- deps = [
- ":android_support_annotations_java",
- ":android_support_compat_java",
- ":android_support_core_ui_java",
- ]
- _lib_name = "recyclerview-v7"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
- visibility += [ "//third_party/android_tools:*" ]
-}
-
-android_aar_prebuilt("android_support_v7_palette_java") {
- deps = [
- ":android_support_compat_java",
- ":android_support_core_utils_java",
- ]
- _lib_name = "palette-v7"
- aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar"
- info_path = "$build_file_dir/$target_name.info"
-}
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_arch_lifecycle_runtime_java.info b/chromium/build/secondary/third_party/android_tools/support/android_arch_lifecycle_runtime_java.info
deleted file mode 100644
index acf40e8f581..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_arch_lifecycle_runtime_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = false
-is_manifest_empty = false
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_animated_vector_drawable_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_animated_vector_drawable_java.info
deleted file mode 100644
index 7103bc06d8c..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_animated_vector_drawable_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_cardview_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_cardview_java.info
deleted file mode 100644
index e4587255cba..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_cardview_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values-v23/values-v23.xml", "res/values/values.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_compat_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_compat_java.info
deleted file mode 100644
index fc66ea71f4c..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_compat_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ "aidl/android/support/v4/os/ResultReceiver.aidl" ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/notification_bg_low_normal.9.png", "res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-hdpi-v4/notification_bg_normal.9.png", "res/drawable-hdpi-v4/notification_bg_low_pressed.9.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/notification_template_icon_group.xml", "res/layout/notification_template_custom_big.xml", "res/layout/notification_template_part_time.xml", "res/layout/notification_template_part_chronometer.xml", "res/layout/notification_action_tombstone.xml", "res/layout/notification_action.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/layout-v16/notification_template_custom_big.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/notification_bg_low_normal.9.png", "res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-mdpi-v4/notification_bg_normal.9.png", "res/drawable-mdpi-v4/notification_bg_low_pressed.9.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/notification_bg_low_normal.9.png", "res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-xhdpi-v4/notification_bg_normal.9.png", "res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-v16/values-v16.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-port/values-port.xml", "res/values-ne/values-ne.xml", "res/drawable/notification_bg_low.xml", "res/drawable/notification_bg.xml", "res/drawable/notification_icon_background.xml", "res/drawable/notification_tile_bg.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/layout-v21/notification_template_icon_group.xml", "res/layout-v21/notification_template_custom_big.xml", "res/layout-v21/notification_action_tombstone.xml", "res/layout-v21/notification_action.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/notification_action_background.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_core_ui_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_core_ui_java.info
deleted file mode 100644
index 7103bc06d8c..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_core_ui_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_core_utils_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_core_utils_java.info
deleted file mode 100644
index cd540607301..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_core_utils_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_design_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_design_java.info
deleted file mode 100644
index ec2b700b1a2..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_design_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/drawable-hdpi-v4/design_ic_visibility.png", "res/drawable-hdpi-v4/design_ic_visibility_off.png", "res/layout/design_bottom_sheet_dialog.xml", "res/layout/design_layout_tab_text.xml", "res/layout/design_bottom_navigation_item.xml", "res/layout/design_navigation_item.xml", "res/layout/design_layout_snackbar_include.xml", "res/layout/design_navigation_menu.xml", "res/layout/design_navigation_item_header.xml", "res/layout/design_navigation_item_separator.xml", "res/layout/design_layout_snackbar.xml", "res/layout/design_text_input_password_icon.xml", "res/layout/design_layout_tab_icon.xml", "res/layout/design_navigation_item_subheader.xml", "res/layout/design_menu_item_action_area.xml", "res/layout/design_navigation_menu_item.xml", "res/values-v21/values-v21.xml", "res/drawable-anydpi-v21/design_ic_visibility.xml", "res/drawable-anydpi-v21/design_ic_visibility_off.xml", "res/layout-sw600dp-v13/design_layout_snackbar.xml", "res/drawable-xxhdpi-v4/design_ic_visibility.png", "res/drawable-xxhdpi-v4/design_ic_visibility_off.png", "res/color/design_error.xml", "res/color/design_tint_password_toggle.xml", "res/animator-v21/design_appbar_state_list_animator.xml", "res/drawable-mdpi-v4/design_ic_visibility.png", "res/drawable-mdpi-v4/design_ic_visibility_off.png", "res/values/values.xml", "res/drawable-xhdpi-v4/design_ic_visibility.png", "res/drawable-xhdpi-v4/design_ic_visibility_off.png", "res/values-land/values-land.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/anim/design_snackbar_out.xml", "res/anim/design_snackbar_in.xml", "res/anim/design_bottom_sheet_slide_out.xml", "res/anim/design_bottom_sheet_slide_in.xml", "res/drawable-xxxhdpi-v4/design_ic_visibility.png", "res/drawable-xxxhdpi-v4/design_ic_visibility_off.png", "res/anim-v21/design_bottom_sheet_slide_out.xml", "res/anim-v21/design_bottom_sheet_slide_in.xml", "res/values-v26/values-v26.xml", "res/color-v23/design_tint_password_toggle.xml", "res/drawable/design_snackbar_background.xml", "res/drawable/design_fab_background.xml", "res/drawable/design_password_eye.xml", "res/drawable/navigation_empty_icon.xml", "res/drawable/design_bottom_navigation_item_background.xml", "res/drawable-v21/avd_hide_password.xml", "res/drawable-v21/avd_show_password.xml", "res/drawable-v21/design_password_eye.xml", "res/drawable-v21/design_bottom_navigation_item_background.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_fragment_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_fragment_java.info
deleted file mode 100644
index cd540607301..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_fragment_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_media_compat_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_media_compat_java.info
deleted file mode 100644
index 6140dd1b5a0..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_media_compat_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ "aidl/android/support/v4/media/session/PlaybackStateCompat.aidl", "aidl/android/support/v4/media/session/MediaSessionCompat.aidl", "aidl/android/support/v4/media/session/ParcelableVolumeInfo.aidl", "aidl/android/support/v4/media/RatingCompat.aidl", "aidl/android/support/v4/media/MediaMetadataCompat.aidl", "aidl/android/support/v4/media/MediaDescriptionCompat.aidl" ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/layout/notification_template_media_custom.xml", "res/layout/notification_template_big_media_narrow_custom.xml", "res/layout/notification_template_media.xml", "res/layout/notification_template_big_media.xml", "res/layout/notification_media_action.xml", "res/layout/notification_template_lines_media.xml", "res/layout/notification_media_cancel_action.xml", "res/layout/notification_template_big_media_custom.xml", "res/layout/notification_template_big_media_narrow.xml", "res/values-v21/values-v21.xml", "res/values/values.xml", "res/values-v24/values-v24.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_multidex_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_multidex_java.info
deleted file mode 100644
index a2ebd4a87ea..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_multidex_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = false
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_transition_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_transition_java.info
deleted file mode 100644
index a25d255caa2..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_transition_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values/values.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v13_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v13_java.info
deleted file mode 100644
index cd540607301..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v13_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v14_preference_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v14_preference_java.info
deleted file mode 100644
index 74388f45747..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v14_preference_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/layout/preference_information_material.xml", "res/layout/preference_widget_seekbar_material.xml", "res/layout/preference_category_material.xml", "res/layout/preference_dropdown_material.xml", "res/layout/preference_widget_switch.xml", "res/layout/preference_material.xml", "res/values/values.xml", "res/values-v17/values-v17.xml", "res/drawable/preference_list_divider_material.xml", "res/layout-v21/preference_information_material.xml", "res/layout-v21/preference_category_material.xml", "res/layout-v21/preference_dropdown_material.xml", "res/layout-v21/preference_material.xml", "res/drawable-v21/preference_list_divider_material.xml", "res/layout-v17/preference_information_material.xml", "res/layout-v17/preference_category_material.xml", "res/layout-v17/preference_dropdown_material.xml", "res/layout-v17/preference_material.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v17_leanback_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v17_leanback_java.info
deleted file mode 100644
index 34d369362a7..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v17_leanback_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/lb_action_bg_focused.9.png", "res/drawable-hdpi-v4/lb_ic_search_mic.png", "res/drawable-hdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-hdpi-v4/lb_ic_search_mic_out.png", "res/drawable-hdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-hdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-hdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-hdpi-v4/lb_ic_sad_cloud.png", "res/drawable-hdpi-v4/lb_ic_in_app_search.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-v18/values-v18.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/lb_browse_fragment.xml", "res/layout/lb_image_card_view_themed_title.xml", "res/layout/lb_list_row_hovercard.xml", "res/layout/lb_guidedactions.xml", "res/layout/lb_guidedactions_item.xml", "res/layout/lb_playback_transport_controls.xml", "res/layout/lb_image_card_view_themed_content.xml", "res/layout/lb_image_card_view_themed_badge_right.xml", "res/layout/lb_image_card_view.xml", "res/layout/lb_media_item_number_view_flipper.xml", "res/layout/lb_title_view.xml", "res/layout/lb_browse_title.xml", "res/layout/lb_control_bar.xml", "res/layout/lb_divider.xml", "res/layout/lb_background_window.xml", "res/layout/lb_guidance.xml", "res/layout/lb_shadow.xml", "res/layout/lb_video_surface.xml", "res/layout/lb_control_button_primary.xml", "res/layout/lb_fullwidth_details_overview_logo.xml", "res/layout/lb_onboarding_fragment.xml", "res/layout/lb_error_fragment.xml", "res/layout/lb_vertical_grid_fragment.xml", "res/layout/lb_action_1_line.xml", "res/layout/video_surface_fragment.xml", "res/layout/lb_guidedbuttonactions.xml", "res/layout/lb_picker_item.xml", "res/layout/lb_guidedstep_background.xml", "res/layout/lb_details_fragment.xml", "res/layout/lb_playback_controls_row.xml", "res/layout/lb_row_header.xml", "res/layout/lb_playback_transport_controls_row.xml", "res/layout/lb_search_orb.xml", "res/layout/lb_guidedstep_fragment.xml", "res/layout/lb_picker.xml", "res/layout/lb_speech_orb.xml", "res/layout/lb_playback_now_playing_bars.xml", "res/layout/lb_list_row.xml", "res/layout/lb_row_media_item_action.xml", "res/layout/lb_vertical_grid.xml", "res/layout/lb_header.xml", "res/layout/lb_row_media_item.xml", "res/layout/lb_playback_fragment.xml", "res/layout/lb_search_fragment.xml", "res/layout/lb_playback_controls.xml", "res/layout/lb_section_header.xml", "res/layout/lb_guidedactions_datepicker_item.xml", "res/layout/lb_details_description.xml", "res/layout/lb_details_overview.xml", "res/layout/lb_picker_column.xml", "res/layout/lb_media_list_header.xml", "res/layout/lb_image_card_view_themed_badge_left.xml", "res/layout/lb_rows_fragment.xml", "res/layout/lb_headers_fragment.xml", "res/layout/lb_action_2_lines.xml", "res/layout/lb_control_button_secondary.xml", "res/layout/lb_search_bar.xml", "res/layout/lb_row_container.xml", "res/layout/lb_fullwidth_details_overview.xml", "res/layout/lb_picker_separator.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/lb_action_bg_focused.9.png", "res/drawable-xxhdpi-v4/lb_ic_search_mic.png", "res/drawable-xxhdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-xxhdpi-v4/lb_ic_search_mic_out.png", "res/drawable-xxhdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-xxhdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-xxhdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-xxhdpi-v4/lb_ic_sad_cloud.png", "res/drawable-xxhdpi-v4/lb_ic_in_app_search.png", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-v22/values-v22.xml", "res/animator-v21/lb_onboarding_logo_exit.xml", "res/animator-v21/lb_onboarding_title_enter.xml", "res/animator-v21/lb_playback_bg_fade_out.xml", "res/animator-v21/lb_playback_bg_fade_in.xml", "res/animator-v21/lb_playback_description_fade_out.xml", "res/animator-v21/lb_onboarding_description_enter.xml", "res/animator-v21/lb_onboarding_logo_enter.xml", "res/animator-v21/lb_onboarding_page_indicator_enter.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/lb_action_bg_focused.9.png", "res/drawable-mdpi-v4/lb_ic_search_mic.png", "res/drawable-mdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-mdpi-v4/lb_ic_search_mic_out.png", "res/drawable-mdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-mdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-mdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-mdpi-v4/lb_ic_sad_cloud.png", "res/drawable-mdpi-v4/lb_ic_in_app_search.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/lb_ic_pause.png", "res/drawable-xhdpi-v4/lb_ic_more.png", "res/drawable-xhdpi-v4/lb_action_bg_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_skip_next.png", "res/drawable-xhdpi-v4/lb_ic_search_mic.png", "res/drawable-xhdpi-v4/lb_ic_fast_forward.png", "res/drawable-xhdpi-v4/lb_ic_shuffle.png", "res/drawable-xhdpi-v4/lb_ic_hq.png", "res/drawable-xhdpi-v4/lb_ic_skip_previous.png", "res/drawable-xhdpi-v4/lb_ic_replay.png", "res/drawable-xhdpi-v4/lb_text_dot_two.png", "res/drawable-xhdpi-v4/lb_ic_cc.png", "res/drawable-xhdpi-v4/lb_ic_thumb_up_outline.png", "res/drawable-xhdpi-v4/lb_ic_thumb_up.png", "res/drawable-xhdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_playback_loop.png", "res/drawable-xhdpi-v4/lb_text_dot_one.png", "res/drawable-xhdpi-v4/lb_ic_search_mic_out.png", "res/drawable-xhdpi-v4/lb_ic_loop_one.png", "res/drawable-xhdpi-v4/lb_text_dot_one_small.png", "res/drawable-xhdpi-v4/lb_ic_stop.png", "res/drawable-xhdpi-v4/lb_ic_pip.png", "res/drawable-xhdpi-v4/lb_card_shadow_normal.9.png", "res/drawable-xhdpi-v4/lb_ic_nav_arrow.png", "res/drawable-xhdpi-v4/lb_text_dot_two_small.png", "res/drawable-xhdpi-v4/lb_ic_loop.png", "res/drawable-xhdpi-v4/lb_ic_play.png", "res/drawable-xhdpi-v4/lb_ic_play_fit.png", "res/drawable-xhdpi-v4/lb_ic_fast_rewind.png", "res/drawable-xhdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-xhdpi-v4/lb_ic_thumb_down_outline.png", "res/drawable-xhdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-xhdpi-v4/lb_card_shadow_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-xhdpi-v4/lb_ic_sad_cloud.png", "res/drawable-xhdpi-v4/lb_ic_thumb_down.png", "res/drawable-xhdpi-v4/lb_ic_guidedactions_item_chevron.png", "res/drawable-xhdpi-v4/lb_ic_in_app_search.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-ldrtl-v17/values-ldrtl-v17.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-v19/values-v19.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/raw/lb_voice_open.ogg", "res/raw/lb_voice_success.ogg", "res/raw/lb_voice_failure.ogg", "res/raw/lb_voice_no_input.ogg", "res/transition-v21/lb_browse_headers_out.xml", "res/transition-v21/lb_browse_enter_transition.xml", "res/transition-v21/lb_return_transition.xml", "res/transition-v21/lb_details_return_transition.xml", "res/transition-v21/lb_browse_entrance_transition.xml", "res/transition-v21/lb_details_enter_transition.xml", "res/transition-v21/lb_enter_transition.xml", "res/transition-v21/lb_vertical_grid_entrance_transition.xml", "res/transition-v21/lb_shared_element_enter_transition.xml", "res/transition-v21/lb_guidedstep_activity_enter.xml", "res/transition-v21/lb_shared_element_return_transition.xml", "res/transition-v21/lb_title_in.xml", "res/transition-v21/lb_guidedstep_activity_enter_bottom.xml", "res/transition-v21/lb_title_out.xml", "res/transition-v21/lb_browse_return_transition.xml", "res/transition-v21/lb_vertical_grid_enter_transition.xml", "res/transition-v21/lb_vertical_grid_return_transition.xml", "res/transition-v21/lb_browse_headers_in.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/anim/lb_decelerator_4.xml", "res/anim/lb_decelerator_2.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/animator/lb_onboarding_page_indicator_fade_in.xml", "res/animator/lb_guidedstep_slide_down.xml", "res/animator/lb_onboarding_logo_exit.xml", "res/animator/lb_onboarding_title_enter.xml", "res/animator/lb_onboarding_start_button_fade_out.xml", "res/animator/lb_playback_rows_fade_out.xml", "res/animator/lb_playback_controls_fade_in.xml", "res/animator/lb_playback_description_fade_in.xml", "res/animator/lb_playback_bg_fade_out.xml", "res/animator/lb_playback_bg_fade_in.xml", "res/animator/lb_guidedactions_item_unpressed.xml", "res/animator/lb_playback_description_fade_out.xml", "res/animator/lb_onboarding_start_button_fade_in.xml", "res/animator/lb_playback_rows_fade_in.xml", "res/animator/lb_guidedactions_item_pressed.xml", "res/animator/lb_onboarding_description_enter.xml", "res/animator/lb_guidedstep_slide_up.xml", "res/animator/lb_onboarding_logo_enter.xml", "res/animator/lb_onboarding_page_indicator_enter.xml", "res/animator/lb_playback_controls_fade_out.xml", "res/animator/lb_onboarding_page_indicator_fade_out.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-ne/values-ne.xml", "res/transition-v19/lb_browse_headers_out.xml", "res/transition-v19/lb_browse_headers_in.xml", "res/drawable/lb_card_foreground.xml", "res/drawable/lb_control_button_primary.xml", "res/drawable/lb_playback_progress_bar.xml", "res/drawable/lb_onboarding_start_button_background.xml", "res/drawable/lb_search_orb.xml", "res/drawable/lb_speech_orb.xml", "res/drawable/lb_headers_right_fading.xml", "res/drawable/lb_background.xml", "res/drawable/lb_playback_now_playing_bar.xml", "res/drawable/lb_control_button_secondary.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/lb_card_foreground.xml", "res/drawable-v21/lb_selectable_item_rounded_rect.xml", "res/drawable-v21/lb_control_button_primary.xml", "res/drawable-v21/lb_action_bg.xml", "res/drawable-v21/lb_control_button_secondary.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v17_preference_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v17_preference_java.info
deleted file mode 100644
index 87ea13ee171..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v17_preference_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/layout/leanback_preference_widget_seekbar.xml", "res/layout/leanback_preference_information.xml", "res/layout/leanback_preference.xml", "res/layout/leanback_preferences_list.xml", "res/layout/leanback_settings_fragment.xml", "res/layout/leanback_list_preference_item_single.xml", "res/layout/leanback_preference_category.xml", "res/layout/leanback_list_preference_fragment.xml", "res/layout/leanback_list_preference_item_multi.xml", "res/layout/leanback_preference_fragment.xml", "res/color/lb_preference_item_primary_text_color.xml", "res/color/lb_preference_item_secondary_text_color.xml", "res/values/values.xml", "res/layout-v21/leanback_settings_fragment.xml", "res/layout-v21/leanback_preference_category.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_appcompat_java_internal.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v7_appcompat_java_internal.info
deleted file mode 100644
index e99e4dea947..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_appcompat_java_internal.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-hdpi-v4/abc_list_focused_holo.9.png", "res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-v18/values-v18.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/abc_list_menu_item_layout.xml", "res/layout/abc_action_menu_layout.xml", "res/layout/abc_search_dropdown_item_icons_2line.xml", "res/layout/support_simple_spinner_dropdown_item.xml", "res/layout/abc_screen_simple.xml", "res/layout/abc_action_menu_item_layout.xml", "res/layout/abc_list_menu_item_radio.xml", "res/layout/abc_alert_dialog_title_material.xml", "res/layout/abc_alert_dialog_material.xml", "res/layout/abc_screen_toolbar.xml", "res/layout/abc_screen_simple_overlay_action_mode.xml", "res/layout/abc_select_dialog_material.xml", "res/layout/abc_action_mode_bar.xml", "res/layout/abc_dialog_title_material.xml", "res/layout/abc_list_menu_item_checkbox.xml", "res/layout/abc_popup_menu_header_item_layout.xml", "res/layout/abc_action_bar_up_container.xml", "res/layout/select_dialog_singlechoice_material.xml", "res/layout/abc_action_mode_close_item_material.xml", "res/layout/tooltip.xml", "res/layout/select_dialog_multichoice_material.xml", "res/layout/abc_action_bar_title_item.xml", "res/layout/abc_activity_chooser_view_list_item.xml", "res/layout/abc_popup_menu_item_layout.xml", "res/layout/abc_alert_dialog_button_bar_material.xml", "res/layout/abc_list_menu_item_icon.xml", "res/layout/abc_expanded_menu_layout.xml", "res/layout/select_dialog_item_material.xml", "res/layout/abc_activity_chooser_view.xml", "res/layout/abc_search_view.xml", "res/layout/abc_screen_content_include.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-hdpi-v4/values-hdpi-v4.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-v14/values-v14.xml", "res/values-ta/values-ta.xml", "res/values-v23/values-v23.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png", "res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/color/abc_search_url_text.xml", "res/color/abc_btn_colored_borderless_text_material.xml", "res/color/abc_primary_text_material_light.xml", "res/color/abc_tint_seek_thumb.xml", "res/color/abc_tint_btn_checkable.xml", "res/color/abc_secondary_text_material_dark.xml", "res/color/abc_tint_edittext.xml", "res/color/abc_tint_spinner.xml", "res/color/abc_primary_text_material_dark.xml", "res/color/abc_secondary_text_material_light.xml", "res/color/switch_thumb_material_dark.xml", "res/color/abc_hint_foreground_material_dark.xml", "res/color/abc_tint_switch_track.xml", "res/color/abc_primary_text_disable_only_material_dark.xml", "res/color/abc_btn_colored_text_material.xml", "res/color/abc_hint_foreground_material_light.xml", "res/color/switch_thumb_material_light.xml", "res/color/abc_tint_default.xml", "res/color/abc_primary_text_disable_only_material_light.xml", "res/values-ldltr-v21/values-ldltr-v21.xml", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-large-v4/values-large-v4.xml", "res/values-v11/values-v11.xml", "res/color-v11/abc_background_cache_hint_selector_material_light.xml", "res/color-v11/abc_background_cache_hint_selector_material_dark.xml", "res/values-pa/values-pa.xml", "res/values-v22/values-v22.xml", "res/values-v25/values-v25.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/values-v12/values-v12.xml", "res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-mdpi-v4/abc_list_focused_holo.9.png", "res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-v24/values-v24.xml", "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-xhdpi-v4/abc_list_focused_holo.9.png", "res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-land/values-land.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-xlarge-v4/values-xlarge-v4.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/anim/abc_shrink_fade_out_from_bottom.xml", "res/anim/abc_slide_in_bottom.xml", "res/anim/abc_fade_out.xml", "res/anim/abc_slide_in_top.xml", "res/anim/abc_slide_out_top.xml", "res/anim/tooltip_exit.xml", "res/anim/abc_popup_exit.xml", "res/anim/abc_grow_fade_in_from_bottom.xml", "res/anim/tooltip_enter.xml", "res/anim/abc_fade_in.xml", "res/anim/abc_slide_out_bottom.xml", "res/anim/abc_popup_enter.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-night-v8/values-night-v8.xml", "res/drawable-v23/abc_control_background_material.xml", "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-v16/values-v16.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/layout-v26/abc_screen_toolbar.xml", "res/values-v26/values-v26.xml", "res/values-port/values-port.xml", "res/color-v23/abc_btn_colored_borderless_text_material.xml", "res/color-v23/abc_color_highlight_material.xml", "res/color-v23/abc_tint_seek_thumb.xml", "res/color-v23/abc_tint_btn_checkable.xml", "res/color-v23/abc_tint_edittext.xml", "res/color-v23/abc_tint_spinner.xml", "res/color-v23/abc_tint_switch_track.xml", "res/color-v23/abc_btn_colored_text_material.xml", "res/color-v23/abc_tint_default.xml", "res/values-v17/values-v17.xml", "res/values-ne/values-ne.xml", "res/values-v13/values-v13.xml", "res/drawable/abc_tab_indicator_material.xml", "res/drawable/abc_item_background_holo_dark.xml", "res/drawable/abc_edit_text_material.xml", "res/drawable/abc_ic_voice_search_api_material.xml", "res/drawable/abc_ic_menu_overflow_material.xml", "res/drawable/abc_ic_search_api_material.xml", "res/drawable/abc_cab_background_top_material.xml", "res/drawable/abc_list_selector_holo_light.xml", "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml", "res/drawable/abc_spinner_textfield_background_material.xml", "res/drawable/abc_ratingbar_small_material.xml", "res/drawable/tooltip_frame_dark.xml", "res/drawable/abc_item_background_holo_light.xml", "res/drawable/abc_btn_colored_material.xml", "res/drawable/abc_ratingbar_material.xml", "res/drawable/abc_cab_background_internal_bg.xml", "res/drawable/abc_btn_radio_material.xml", "res/drawable/tooltip_frame_light.xml", "res/drawable/abc_ic_clear_material.xml", "res/drawable/abc_ic_ab_back_material.xml", "res/drawable/abc_textfield_search_material.xml", "res/drawable/abc_ic_go_search_api_material.xml", "res/drawable/abc_seekbar_track_material.xml", "res/drawable/abc_dialog_material_background.xml", "res/drawable/abc_seekbar_tick_mark_material.xml", "res/drawable/abc_list_selector_background_transition_holo_light.xml", "res/drawable/abc_text_cursor_material.xml", "res/drawable/abc_btn_default_mtrl_shape.xml", "res/drawable/abc_ratingbar_indicator_material.xml", "res/drawable/abc_switch_thumb_material.xml", "res/drawable/abc_seekbar_thumb_material.xml", "res/drawable/abc_list_selector_background_transition_holo_dark.xml", "res/drawable/abc_btn_check_material.xml", "res/drawable/abc_list_selector_holo_dark.xml", "res/drawable/abc_btn_borderless_material.xml", "res/drawable/abc_vector_test.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-h720dp-v13/values-h720dp-v13.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/abc_edit_text_material.xml", "res/drawable-v21/abc_btn_colored_material.xml", "res/drawable-v21/abc_action_bar_item_background_material.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_gridlayout_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v7_gridlayout_java.info
deleted file mode 100644
index 28c83306d8f..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_gridlayout_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values/values.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_mediarouter_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v7_mediarouter_java.info
deleted file mode 100644
index 6fc7871029d..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_mediarouter_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/ic_dialog_close_light.png", "res/drawable-hdpi-v4/ic_media_pause_light.png", "res/drawable-hdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-hdpi-v4/ic_mr_button_grey.png", "res/drawable-hdpi-v4/ic_media_play_light.png", "res/drawable-hdpi-v4/ic_dialog_close_dark.png", "res/drawable-hdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-hdpi-v4/ic_media_pause_dark.png", "res/drawable-hdpi-v4/ic_vol_type_tv_light.png", "res/drawable-hdpi-v4/ic_media_stop_dark.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-hdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-hdpi-v4/ic_audiotrack_light.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-hdpi-v4/ic_media_stop_light.png", "res/drawable-hdpi-v4/ic_media_play_dark.png", "res/drawable-hdpi-v4/ic_audiotrack_dark.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-hdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-hdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_group_light.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/interpolator/mr_fast_out_slow_in.xml", "res/interpolator/mr_linear_out_slow_in.xml", "res/layout/mr_controller_material_dialog_b.xml", "res/layout/mr_volume_control.xml", "res/layout/mr_controller_volume_item.xml", "res/layout/mr_chooser_list_item.xml", "res/layout/mr_chooser_dialog.xml", "res/layout/mr_playback_control.xml", "res/values-ms/values-ms.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/ic_mr_button_connected_28_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_00_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_28_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_04_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_28_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_06_light.png", "res/drawable-xxhdpi-v4/ic_dialog_close_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_29_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_01_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_23_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_18_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_04_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_12_light.png", "res/drawable-xxhdpi-v4/ic_media_pause_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_grey.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_14_dark.png", "res/drawable-xxhdpi-v4/ic_media_play_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_12_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_14_light.png", "res/drawable-xxhdpi-v4/ic_dialog_close_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_30_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_27_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_07_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_25_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_18_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_23_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_11_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_08_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_02_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_22_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_08_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_20_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_18_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_19_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_05_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_10_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_02_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_25_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_18_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_22_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_22_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_24_dark.png", "res/drawable-xxhdpi-v4/ic_media_pause_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_29_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_03_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_tv_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_11_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_30_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_23_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_29_dark.png", "res/drawable-xxhdpi-v4/ic_media_stop_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_27_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_25_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_06_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_00_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_02_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_17_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_03_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_09_dark.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_00_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_24_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_26_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_29_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_30_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_05_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_08_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_15_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_17_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_26_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_24_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_16_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_27_dark.png", "res/drawable-xxhdpi-v4/ic_audiotrack_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_13_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_16_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_04_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_13_light.png", "res/drawable-xxhdpi-v4/ic_media_stop_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_17_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_16_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_16_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_01_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_07_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_13_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_19_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_00_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_14_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_03_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_15_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_20_light.png", "res/drawable-xxhdpi-v4/ic_media_play_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_03_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_27_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_21_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_28_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_02_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_10_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_23_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_15_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_21_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_05_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_19_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_20_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_06_dark.png", "res/drawable-xxhdpi-v4/ic_audiotrack_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_21_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_09_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_20_dark.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_19_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_22_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_25_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_09_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_11_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_12_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_10_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_13_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_24_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_01_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_26_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_26_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_07_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_04_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_10_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_17_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_05_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_07_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_15_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_08_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_11_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_09_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_12_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_group_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_14_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_21_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_30_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_06_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_01_dark.png", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/ic_dialog_close_light.png", "res/drawable-mdpi-v4/ic_media_pause_light.png", "res/drawable-mdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-mdpi-v4/ic_mr_button_grey.png", "res/drawable-mdpi-v4/ic_media_play_light.png", "res/drawable-mdpi-v4/ic_dialog_close_dark.png", "res/drawable-mdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-mdpi-v4/ic_media_pause_dark.png", "res/drawable-mdpi-v4/ic_vol_type_tv_light.png", "res/drawable-mdpi-v4/ic_media_stop_dark.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-mdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-mdpi-v4/ic_audiotrack_light.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-mdpi-v4/ic_media_stop_light.png", "res/drawable-mdpi-v4/ic_media_play_dark.png", "res/drawable-mdpi-v4/ic_audiotrack_dark.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-mdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-mdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_group_light.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/ic_mr_button_connected_28_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_00_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_28_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_04_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_28_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_06_light.png", "res/drawable-xhdpi-v4/ic_dialog_close_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_29_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_01_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_23_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_18_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_04_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_12_light.png", "res/drawable-xhdpi-v4/ic_media_pause_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-xhdpi-v4/ic_mr_button_grey.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_14_dark.png", "res/drawable-xhdpi-v4/ic_media_play_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_12_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_14_light.png", "res/drawable-xhdpi-v4/ic_dialog_close_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_30_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_27_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_07_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_25_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_18_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_23_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_11_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_08_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_02_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_22_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_08_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_20_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_18_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_19_light.png", "res/drawable-xhdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_05_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_10_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_02_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_25_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_18_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_22_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_22_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_24_dark.png", "res/drawable-xhdpi-v4/ic_media_pause_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_29_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_03_light.png", "res/drawable-xhdpi-v4/ic_vol_type_tv_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_11_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_30_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_23_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_29_dark.png", "res/drawable-xhdpi-v4/ic_media_stop_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_27_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_25_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_06_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_00_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_02_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_17_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_03_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_09_dark.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_00_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_24_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_26_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_29_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_30_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_05_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_08_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_15_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_17_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_26_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_24_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_16_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_27_dark.png", "res/drawable-xhdpi-v4/ic_audiotrack_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_13_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_16_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_04_light.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_13_light.png", "res/drawable-xhdpi-v4/ic_media_stop_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_17_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_16_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_16_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_01_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_07_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_13_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_19_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_00_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_14_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_03_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_15_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_20_light.png", "res/drawable-xhdpi-v4/ic_media_play_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_03_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_27_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_21_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_28_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_02_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_10_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_23_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_15_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_21_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_05_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_19_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_20_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_06_dark.png", "res/drawable-xhdpi-v4/ic_audiotrack_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_21_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_09_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_20_dark.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_19_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_22_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_25_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_09_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_11_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_12_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_10_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_13_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_24_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_01_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_26_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_26_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_07_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_04_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_10_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_17_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_05_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_07_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_15_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_08_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_11_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_09_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_12_light.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_group_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_14_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_21_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_30_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_06_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_01_dark.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-land/values-land.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/drawable-xxxhdpi-v4/ic_group_collapse_13.png", "res/drawable-xxxhdpi-v4/ic_mr_button_grey.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_09.png", "res/drawable-xxxhdpi-v4/ic_group_expand_06.png", "res/drawable-xxxhdpi-v4/ic_group_expand_03.png", "res/drawable-xxxhdpi-v4/ic_group_expand_09.png", "res/drawable-xxxhdpi-v4/ic_group_expand_07.png", "res/drawable-xxxhdpi-v4/ic_group_expand_08.png", "res/drawable-xxxhdpi-v4/ic_group_expand_14.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_04.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_14.png", "res/drawable-xxxhdpi-v4/ic_group_expand_04.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_05.png", "res/drawable-xxxhdpi-v4/ic_group_expand_11.png", "res/drawable-xxxhdpi-v4/ic_group_expand_10.png", "res/drawable-xxxhdpi-v4/ic_group_expand_05.png", "res/drawable-xxxhdpi-v4/ic_group_expand_13.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_06.png", "res/drawable-xxxhdpi-v4/ic_group_expand_15.png", "res/drawable-xxxhdpi-v4/ic_group_expand_02.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_10.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_15.png", "res/drawable-xxxhdpi-v4/ic_group_expand_00.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_02.png", "res/drawable-xxxhdpi-v4/ic_group_expand_12.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_03.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_08.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_01.png", "res/drawable-xxxhdpi-v4/ic_group_expand_01.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_00.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_12.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_07.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_11.png", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-sw720dp-v13/values-sw720dp-v13.xml", "res/values-ne/values-ne.xml", "res/drawable/mr_media_pause_dark.xml", "res/drawable/mr_dialog_close_dark.xml", "res/drawable/mr_media_stop_light.xml", "res/drawable/mr_button_dark.xml", "res/drawable/mr_button_connected_dark.xml", "res/drawable/mr_dialog_material_background_dark.xml", "res/drawable/mr_button_connecting_light.xml", "res/drawable/mr_media_play_light.xml", "res/drawable/mr_media_pause_light.xml", "res/drawable/mr_dialog_material_background_light.xml", "res/drawable/mr_button_connecting_dark.xml", "res/drawable/mr_media_stop_dark.xml", "res/drawable/mr_dialog_close_light.xml", "res/drawable/mr_group_expand.xml", "res/drawable/mr_vol_type_audiotrack_dark.xml", "res/drawable/mr_vol_type_audiotrack_light.xml", "res/drawable/mr_media_play_dark.xml", "res/drawable/mr_group_collapse.xml", "res/drawable/mr_button_light.xml", "res/drawable/mr_button_connected_light.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_palette_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v7_palette_java.info
deleted file mode 100644
index cd540607301..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_palette_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_preference_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v7_preference_java.info
deleted file mode 100644
index 25a4927e55b..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_preference_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/layout-v11/preference.xml", "res/layout-v11/preference_dropdown.xml", "res/layout/preference_recyclerview.xml", "res/layout/preference_widget_checkbox.xml", "res/layout/preference_widget_seekbar.xml", "res/layout/preference_widget_switch_compat.xml", "res/layout/preference_list_fragment.xml", "res/layout/preference_dialog_edittext.xml", "res/layout/preference_information.xml", "res/layout/preference_category.xml", "res/values/values.xml", "res/values-v17/values-v17.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_recyclerview_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_v7_recyclerview_java.info
deleted file mode 100644
index a25d255caa2..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_v7_recyclerview_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = true
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ "res/values/values.xml" ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/android_tools/support/android_support_vector_drawable_java.info b/chromium/build/secondary/third_party/android_tools/support/android_support_vector_drawable_java.info
deleted file mode 100644
index cd540607301..00000000000
--- a/chromium/build/secondary/third_party/android_tools/support/android_support_vector_drawable_java.info
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated by //build/android/gyp/aar.py
-# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
-
-aidl = [ ]
-assets = [ ]
-has_classes_jar = true
-has_native_libraries = false
-has_proguard_flags = false
-has_r_text_file = true
-is_manifest_empty = true
-resources = [ ]
-subjar_tuples = [ ]
-subjars = [ ]
diff --git a/chromium/build/secondary/third_party/libjpeg_turbo/BUILD.gn b/chromium/build/secondary/third_party/libjpeg_turbo/BUILD.gn
deleted file mode 100644
index 265d30b076c..00000000000
--- a/chromium/build/secondary/third_party/libjpeg_turbo/BUILD.gn
+++ /dev/null
@@ -1,221 +0,0 @@
-# Copyright 2014 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.
-
-# Do not use the targets in this file unless you need a certain libjpeg
-# implementation. Use the meta target //third_party:jpeg instead.
-
-import("//build/config/sanitizers/sanitizers.gni")
-if (current_cpu == "arm") {
- import("//build/config/arm.gni")
-}
-
-assert(!is_ios, "This is not used on iOS, don't drag it in unintentionally")
-
-if (current_cpu == "x86" || current_cpu == "x64") {
- import("//third_party/yasm/yasm_assemble.gni")
-
- yasm_assemble("simd_asm") {
- defines = []
-
- if (current_cpu == "x86") {
- sources = [
- "simd/jccolor-mmx.asm",
- "simd/jccolor-sse2.asm",
- "simd/jcgray-mmx.asm",
- "simd/jcgray-sse2.asm",
- "simd/jchuff-sse2.asm",
- "simd/jcsample-mmx.asm",
- "simd/jcsample-sse2.asm",
- "simd/jdcolor-mmx.asm",
- "simd/jdcolor-sse2.asm",
- "simd/jdmerge-mmx.asm",
- "simd/jdmerge-sse2.asm",
- "simd/jdsample-mmx.asm",
- "simd/jdsample-sse2.asm",
- "simd/jfdctflt-3dn.asm",
- "simd/jfdctflt-sse.asm",
- "simd/jfdctfst-mmx.asm",
- "simd/jfdctfst-sse2.asm",
- "simd/jfdctint-mmx.asm",
- "simd/jfdctint-sse2.asm",
- "simd/jidctflt-3dn.asm",
- "simd/jidctflt-sse.asm",
- "simd/jidctflt-sse2.asm",
- "simd/jidctfst-mmx.asm",
- "simd/jidctfst-sse2.asm",
- "simd/jidctint-mmx.asm",
- "simd/jidctint-sse2.asm",
- "simd/jidctred-mmx.asm",
- "simd/jidctred-sse2.asm",
- "simd/jquant-3dn.asm",
- "simd/jquant-mmx.asm",
- "simd/jquant-sse.asm",
- "simd/jquantf-sse2.asm",
- "simd/jquanti-sse2.asm",
- "simd/jsimdcpu.asm",
- ]
- defines += [
- "__x86__",
- "PIC",
- ]
- } else if (current_cpu == "x64") {
- sources = [
- "simd/jccolor-sse2-64.asm",
- "simd/jcgray-sse2-64.asm",
- "simd/jchuff-sse2-64.asm",
- "simd/jcsample-sse2-64.asm",
- "simd/jdcolor-sse2-64.asm",
- "simd/jdmerge-sse2-64.asm",
- "simd/jdsample-sse2-64.asm",
- "simd/jfdctflt-sse-64.asm",
- "simd/jfdctfst-sse2-64.asm",
- "simd/jfdctint-sse2-64.asm",
- "simd/jidctflt-sse2-64.asm",
- "simd/jidctfst-sse2-64.asm",
- "simd/jidctint-sse2-64.asm",
- "simd/jidctred-sse2-64.asm",
- "simd/jquantf-sse2-64.asm",
- "simd/jquanti-sse2-64.asm",
- ]
- defines += [
- "__x86_64__",
- "PIC",
- ]
- }
-
- if (is_win) {
- defines += [ "MSVC" ]
- if (current_cpu == "x86") {
- defines += [ "WIN32" ]
- } else {
- defines += [ "WIN64" ]
- }
- } else if (is_mac || is_ios) {
- defines += [ "MACHO" ]
- } else if (is_linux || is_android || is_fuchsia) {
- defines += [ "ELF" ]
- }
- }
-}
-
-static_library("simd") {
- if (current_cpu == "x86") {
- deps = [
- ":simd_asm",
- ]
- sources = [
- "simd/jsimd_i386.c",
- ]
- } else if (current_cpu == "x64") {
- deps = [
- ":simd_asm",
- ]
- sources = [
- "simd/jsimd_x86_64.c",
- ]
- } else if (current_cpu == "arm" && arm_version >= 7 &&
- (arm_use_neon || arm_optionally_use_neon)) {
- sources = [
- "simd/jsimd_arm.c",
- "simd/jsimd_arm_neon.S",
- ]
- } else if (current_cpu == "arm64") {
- sources = [
- "simd/jsimd_arm64.c",
- "simd/jsimd_arm64_neon.S",
- ]
- } else {
- sources = [
- "jsimd_none.c",
- ]
- }
-
- if (is_win) {
- cflags = [ "/wd4245" ]
- }
-}
-
-config("libjpeg_config") {
- include_dirs = [ "." ]
-}
-
-static_library("libjpeg") {
- sources = [
- "jcapimin.c",
- "jcapistd.c",
- "jccoefct.c",
- "jccolor.c",
- "jcdctmgr.c",
- "jchuff.c",
- "jchuff.h",
- "jcinit.c",
- "jcmainct.c",
- "jcmarker.c",
- "jcmaster.c",
- "jcomapi.c",
- "jconfig.h",
- "jcparam.c",
- "jcphuff.c",
- "jcprepct.c",
- "jcsample.c",
- "jdapimin.c",
- "jdapistd.c",
- "jdatadst.c",
- "jdatasrc.c",
- "jdcoefct.c",
- "jdcolor.c",
- "jdct.h",
- "jddctmgr.c",
- "jdhuff.c",
- "jdhuff.h",
- "jdinput.c",
- "jdmainct.c",
- "jdmarker.c",
- "jdmaster.c",
- "jdmerge.c",
- "jdphuff.c",
- "jdpostct.c",
- "jdsample.c",
- "jerror.c",
- "jerror.h",
- "jfdctflt.c",
- "jfdctfst.c",
- "jfdctint.c",
- "jidctflt.c",
- "jidctfst.c",
- "jidctint.c",
- "jidctred.c",
- "jinclude.h",
- "jmemmgr.c",
- "jmemnobs.c",
- "jmemsys.h",
- "jmorecfg.h",
- "jpegint.h",
- "jpeglib.h",
- "jpeglibmangler.h",
- "jquant1.c",
- "jquant2.c",
- "jutils.c",
- "jversion.h",
- ]
-
- defines = [
- "WITH_SIMD",
- "NO_GETENV",
- ]
-
- configs += [ ":libjpeg_config" ]
-
- public_configs = [ ":libjpeg_config" ]
-
- # MemorySanitizer doesn't support assembly code, so keep it disabled in
- # MSan builds for now.
- if (is_msan) {
- sources += [ "jsimd_none.c" ]
- } else {
- deps = [
- ":simd",
- ]
- }
-}
diff --git a/chromium/build/timestamp.gni b/chromium/build/timestamp.gni
new file mode 100644
index 00000000000..cd6375d9b8e
--- /dev/null
+++ b/chromium/build/timestamp.gni
@@ -0,0 +1,23 @@
+# Copyright 2018 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.
+#
+# Defines the build_timestamp variable.
+
+import("//build/util/lastchange.gni")
+
+if (is_official_build) {
+ official_name = "official"
+} else {
+ official_name = "default"
+}
+
+# This will return a timestamp that's different each day (official builds)
+# or each month (regular builds). Just rely on gn rerunning due to other
+# changes to keep this up to date. (Bots run gn on each build, and for devs
+# the timestamp being 100% accurate doesn't matter.)
+# See compute_build_timestamp.py for tradeoffs for picking the timestamp.
+build_timestamp = exec_script("compute_build_timestamp.py",
+ [ official_name ],
+ "trim string",
+ [ lastchange_file ])
diff --git a/chromium/build/toolchain/cros/BUILD.gn b/chromium/build/toolchain/cros/BUILD.gn
index bf139dc12da..5a9561f2320 100644
--- a/chromium/build/toolchain/cros/BUILD.gn
+++ b/chromium/build/toolchain/cros/BUILD.gn
@@ -12,6 +12,16 @@ gcc_toolchain("target") {
ar = cros_target_ar
cc = cros_target_cc
cxx = cros_target_cxx
+
+ # Relativize path if compiler is specified such that not to lookup from $PATH
+ # and cc/cxx does not contain additional flags.
+ if (cc != get_path_info(cc, "file") && string_replace(cc, " ", "") == cc) {
+ cc = rebase_path(cc, root_build_dir)
+ }
+ if (cxx != get_path_info(cxx, "file") && string_replace(cxx, " ", "") == cxx) {
+ cxx = rebase_path(cxx, root_build_dir)
+ }
+
ld = cxx
if (cros_target_ld != "") {
ld = cros_target_ld
@@ -46,6 +56,15 @@ gcc_toolchain("nacl_bootstrap") {
ar = cros_target_ar
cc = cros_target_cc
cxx = cros_target_cxx
+
+ # Relativize path if compiler is specified such that not to lookup from $PATH
+ # and cc/cxx does not contain additional flags.
+ if (cc != get_path_info(cc, "file") && string_replace(cc, " ", "") == cc) {
+ cc = rebase_path(cc, root_build_dir)
+ }
+ if (cxx != get_path_info(cxx, "file") && string_replace(cxx, " ", "") == cxx) {
+ cxx = rebase_path(cxx, root_build_dir)
+ }
ld = cxx
if (cros_target_ld != "") {
ld = cros_target_ld
@@ -77,6 +96,15 @@ gcc_toolchain("host") {
ar = cros_host_ar
cc = cros_host_cc
cxx = cros_host_cxx
+
+ # Relativize path if compiler is specified such that not to lookup from $PATH
+ # and cc/cxx does not contain additional flags.
+ if (cc != get_path_info(cc, "file") && string_replace(cc, " ", "") == cc) {
+ cc = rebase_path(cc, root_build_dir)
+ }
+ if (cxx != get_path_info(cxx, "file") && string_replace(cxx, " ", "") == cxx) {
+ cxx = rebase_path(cxx, root_build_dir)
+ }
ld = cxx
if (cros_host_ld != "") {
ld = cros_host_ld
@@ -106,6 +134,15 @@ gcc_toolchain("v8_snapshot") {
ar = cros_v8_snapshot_ar
cc = cros_v8_snapshot_cc
cxx = cros_v8_snapshot_cxx
+
+ # Relativize path if compiler is specified such that not to lookup from $PATH
+ # and cc/cxx does not contain additional flags.
+ if (cc != get_path_info(cc, "file") && string_replace(cc, " ", "") == cc) {
+ cc = rebase_path(cc, root_build_dir)
+ }
+ if (cxx != get_path_info(cxx, "file") && string_replace(cxx, " ", "") == cxx) {
+ cxx = rebase_path(cxx, root_build_dir)
+ }
ld = cxx
if (cros_v8_snapshot_ld != "") {
ld = cros_v8_snapshot_ld
diff --git a/chromium/build/toolchain/fuchsia/BUILD.gn b/chromium/build/toolchain/fuchsia/BUILD.gn
index a5151e39105..7ab3a2d090d 100644
--- a/chromium/build/toolchain/fuchsia/BUILD.gn
+++ b/chromium/build/toolchain/fuchsia/BUILD.gn
@@ -9,14 +9,17 @@ import("//build/config/fuchsia/config.gni")
# the different target architectures.
template("fuchsia_clang_toolchain") {
clang_toolchain(target_name) {
- assert(host_os == "linux")
+ assert(host_os == "linux" || host_os == "mac")
assert(defined(invoker.toolchain_args),
"toolchain_args must be defined for fuchsia_clang_toolchain()")
# We want to build and strip binaries, but retain the unstripped binaries
# in runtime_deps to make them available for isolates.
- strip = rebase_path("//third_party/eu-strip/bin/eu-strip", root_build_dir)
- use_unstripped_as_runtime_outputs = true
+ # TODO(https://crbug.com/877080): Switch to llvm-strip.
+ if (host_os == "linux") {
+ strip = rebase_path("//third_party/eu-strip/bin/eu-strip", root_build_dir)
+ use_unstripped_as_runtime_outputs = true
+ }
toolchain_args = invoker.toolchain_args
toolchain_args.current_os = "fuchsia"
diff --git a/chromium/build/toolchain/gcc_ar_wrapper.py b/chromium/build/toolchain/gcc_ar_wrapper.py
deleted file mode 100755
index 5977f44f7ed..00000000000
--- a/chromium/build/toolchain/gcc_ar_wrapper.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/env python
-# 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.
-
-"""Runs the 'ar' command after removing its output file first.
-
-This script is invoked like:
- python gcc_ar_wrapper.py --ar=$AR --output=$OUT $OP $INPUTS
-to do the equivalent of:
- rm -f $OUT && $AR $OP $OUT $INPUTS
-"""
-
-import argparse
-import os
-import subprocess
-import sys
-
-import wrapper_utils
-
-
-def main():
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument('--ar',
- required=True,
- help='The ar binary to run',
- metavar='PATH')
- parser.add_argument('--output',
- required=True,
- help='Output archive file',
- metavar='ARCHIVE')
- parser.add_argument('--plugin',
- help='Load plugin')
- parser.add_argument('--resource-whitelist',
- help='Merge all resource whitelists into a single file.',
- metavar='PATH')
- parser.add_argument('operation',
- help='Operation on the archive')
- parser.add_argument('inputs', nargs='+',
- help='Input files')
- args = parser.parse_args()
-
- # Specifies the type of object file ar should examine.
- # The ar on linux ignores this option.
- object_mode = []
- if sys.platform.startswith('aix'):
- # The @file feature is not available on ar for AIX.
- # For linux (and other posix like systems), the @file_name
- # option reads the contents of file_name as command line arguments.
- # For AIX we must parse these (rsp files) manually.
- # Read rspfile.
- args.inputs = wrapper_utils.ResolveRspLinks(args.inputs)
- object_mode = ['-X64']
- else:
- if args.resource_whitelist:
- whitelist_candidates = wrapper_utils.ResolveRspLinks(args.inputs)
- wrapper_utils.CombineResourceWhitelists(
- whitelist_candidates, args.resource_whitelist)
-
- command = [args.ar] + object_mode + args.operation.split()
- if args.plugin is not None:
- command += ['--plugin', args.plugin]
- command.append(args.output)
- command += args.inputs
-
- # Remove the output file first.
- try:
- os.remove(args.output)
- except OSError as e:
- if e.errno != os.errno.ENOENT:
- raise
-
- # Now just run the ar command.
- return subprocess.call(wrapper_utils.CommandToRun(command))
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/chromium/build/toolchain/gcc_compile_wrapper.py b/chromium/build/toolchain/gcc_compile_wrapper.py
deleted file mode 100755
index 33cac37c7e5..00000000000
--- a/chromium/build/toolchain/gcc_compile_wrapper.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2016 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.
-
-"""Runs a compilation command.
-
-This script exists to avoid using complex shell commands in
-gcc_toolchain.gni's tool("cxx") and tool("cc") in case the host running the
-compiler does not have a POSIX-like shell (e.g. Windows).
-"""
-
-import argparse
-import sys
-
-import wrapper_utils
-
-
-def main():
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument('--resource-whitelist',
- help='Generate a resource whitelist for this target.',
- metavar='PATH')
- parser.add_argument('command', nargs=argparse.REMAINDER,
- help='Compilation command')
- args = parser.parse_args()
-
- returncode, stderr = wrapper_utils.CaptureCommandStderr(
- wrapper_utils.CommandToRun(args.command))
-
- used_resources = wrapper_utils.ExtractResourceIdsFromPragmaWarnings(stderr)
- sys.stderr.write(stderr)
-
- if args.resource_whitelist:
- with open(args.resource_whitelist, 'w') as f:
- if used_resources:
- f.write('\n'.join(str(resource) for resource in used_resources))
- f.write('\n')
-
- return returncode
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/chromium/build/toolchain/gcc_solink_wrapper.py b/chromium/build/toolchain/gcc_solink_wrapper.py
index 5159fcef385..cb1c02d24eb 100755
--- a/chromium/build/toolchain/gcc_solink_wrapper.py
+++ b/chromium/build/toolchain/gcc_solink_wrapper.py
@@ -86,9 +86,6 @@ def main():
required=True,
help='Final output shared object file',
metavar='FILE')
- parser.add_argument('--resource-whitelist',
- help='Merge all resource whitelists into a single file.',
- metavar='PATH')
parser.add_argument('command', nargs='+',
help='Linking command')
args = parser.parse_args()
@@ -97,11 +94,6 @@ def main():
fast_env = dict(os.environ)
fast_env['LC_ALL'] = 'C'
- if args.resource_whitelist:
- whitelist_candidates = wrapper_utils.ResolveRspLinks(args.command)
- wrapper_utils.CombineResourceWhitelists(
- whitelist_candidates, args.resource_whitelist)
-
# First, run the actual link.
command = wrapper_utils.CommandToRun(args.command)
result = wrapper_utils.RunLinkWithOptionalMapFile(command, env=fast_env,
diff --git a/chromium/build/toolchain/gcc_toolchain.gni b/chromium/build/toolchain/gcc_toolchain.gni
index b6f63d7556a..adadb7447e1 100644
--- a/chromium/build/toolchain/gcc_toolchain.gni
+++ b/chromium/build/toolchain/gcc_toolchain.gni
@@ -151,7 +151,11 @@ template("gcc_toolchain") {
# toolchain args, use those values, otherwise default to the global one.
# This works because the only reasonable override that toolchains might
# supply for these values are to force-disable them.
- if (toolchain_uses_goma) {
+ # But if has_gomacc_path is set in simple chrome build, we assumes that
+ # *chromeos* compiler wrapper find gomacc from GOMACC_PATH envvar.
+ # Note: In this case, we use gomacc for host toolchain compiling.
+ if (toolchain_uses_goma &&
+ (!has_gomacc_path || invoker_toolchain_args.current_os != "chromeos")) {
goma_path = "$goma_dir/gomacc"
# Use the static analysis script if static analysis is turned on
@@ -281,16 +285,8 @@ template("gcc_toolchain") {
depsformat = "gcc"
description = "CC {{output}}"
outputs = [
- # The whitelist file is also an output, but ninja does not
- # currently support multiple outputs for tool("cc").
"$object_subdir/{{source_name_part}}.o",
]
- if (enable_resource_whitelist_generation) {
- compile_wrapper =
- rebase_path("//build/toolchain/gcc_compile_wrapper.py",
- root_build_dir)
- command = "$python_path \"$compile_wrapper\" --resource-whitelist=\"{{output}}.whitelist\" $command"
- }
}
tool("cxx") {
@@ -299,16 +295,8 @@ template("gcc_toolchain") {
depsformat = "gcc"
description = "CXX {{output}}"
outputs = [
- # The whitelist file is also an output, but ninja does not
- # currently support multiple outputs for tool("cxx").
"$object_subdir/{{source_name_part}}.o",
]
- if (enable_resource_whitelist_generation) {
- compile_wrapper =
- rebase_path("//build/toolchain/gcc_compile_wrapper.py",
- root_build_dir)
- command = "$python_path \"$compile_wrapper\" --resource-whitelist=\"{{output}}.whitelist\" $command"
- }
}
tool("asm") {
@@ -323,30 +311,29 @@ template("gcc_toolchain") {
}
tool("alink") {
- rspfile = "{{output}}.rsp"
- whitelist_flag = " "
- if (enable_resource_whitelist_generation) {
- whitelist_flag = " --resource-whitelist=\"{{output}}.whitelist\""
+ if (current_os == "aix") {
+ # AIX does not support either -D (deterministic output) or response
+ # files.
+ command = "$ar -X64 {{arflags}} -r -c -s {{output}} {{inputs}}"
+ } else {
+ rspfile = "{{output}}.rsp"
+ rspfile_content = "{{inputs}}"
+ command = "\"$ar\" {{arflags}} -r -c -s -D {{output}} @\"$rspfile\""
}
- # This needs a Python script to avoid using simple sh features in this
- # command, in case the host does not use a POSIX shell (e.g. compiling
- # POSIX-like toolchains such as NaCl on Windows).
- ar_wrapper =
- rebase_path("//build/toolchain/gcc_ar_wrapper.py", root_build_dir)
-
- if (current_os == "aix") {
- # We use slightly different arflags for AIX.
- extra_arflags = "-r -c -s"
+ # Remove the output file first so that ar doesn't try to modify the
+ # existing file.
+ if (host_os == "win") {
+ tool_wrapper_path =
+ rebase_path("//build/toolchain/win/tool_wrapper.py", root_build_dir)
+ command = "cmd /c $python_path $tool_wrapper_path delete-file {{output}} && $command"
} else {
- extra_arflags = "-r -c -s -D"
+ command = "rm -f {{output}} && $command"
}
# Almost all targets build with //build/config/compiler:thin_archive which
# adds -T to arflags.
- command = "$python_path \"$ar_wrapper\"$whitelist_flag --output={{output}} --ar=\"$ar\" \"{{arflags}} $extra_arflags\" @\"$rspfile\""
description = "AR {{output}}"
- rspfile_content = "{{inputs}}"
outputs = [
"{{output_dir}}/{{target_output_name}}{{output_extension}}",
]
@@ -363,11 +350,6 @@ template("gcc_toolchain") {
sofile = "{{output_dir}}/$soname" # Possibly including toolchain dir.
rspfile = sofile + ".rsp"
pool = "//build/toolchain:link_pool($default_toolchain)"
- whitelist_flag = " "
- if (enable_resource_whitelist_generation) {
- whitelist_file = "$sofile.whitelist"
- whitelist_flag = " --resource-whitelist=\"$whitelist_file\""
- }
if (defined(invoker.strip)) {
unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname"
@@ -404,7 +386,7 @@ template("gcc_toolchain") {
# The host might not have a POSIX shell and utilities (e.g. Windows).
solink_wrapper =
rebase_path("//build/toolchain/gcc_solink_wrapper.py", root_build_dir)
- command = "$python_path \"$solink_wrapper\" --readelf=\"$readelf\" --nm=\"$nm\" $strip_switch--sofile=\"$unstripped_sofile\" --tocfile=\"$tocfile\"$map_switch --output=\"$sofile\"$whitelist_flag -- $link_command"
+ command = "$python_path \"$solink_wrapper\" --readelf=\"$readelf\" --nm=\"$nm\" $strip_switch--sofile=\"$unstripped_sofile\" --tocfile=\"$tocfile\"$map_switch --output=\"$sofile\" -- $link_command"
if (target_cpu == "mipsel" && is_component_build && is_android) {
rspfile_content = "-Wl,--start-group -Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix -Wl,--end-group"
@@ -420,9 +402,6 @@ template("gcc_toolchain") {
default_output_extension = default_shlib_extension
default_output_dir = "{{root_out_dir}}"
- if (shlib_subdir != ".") {
- default_output_dir += "/$shlib_subdir"
- }
output_prefix = "lib"
@@ -437,9 +416,6 @@ template("gcc_toolchain") {
sofile,
tocfile,
]
- if (enable_resource_whitelist_generation) {
- outputs += [ whitelist_file ]
- }
if (sofile != unstripped_sofile) {
outputs += [ unstripped_sofile ]
if (defined(invoker.use_unstripped_as_runtime_outputs) &&
@@ -486,9 +462,6 @@ template("gcc_toolchain") {
}
default_output_dir = "{{root_out_dir}}"
- if (shlib_subdir != ".") {
- default_output_dir += "/$shlib_subdir"
- }
output_prefix = "lib"
diff --git a/chromium/build/toolchain/goma.gni b/chromium/build/toolchain/goma.gni
index 29be588fc81..0e1d815ca3d 100644
--- a/chromium/build/toolchain/goma.gni
+++ b/chromium/build/toolchain/goma.gni
@@ -8,6 +8,11 @@ declare_args() {
# Set to true to enable distributed compilation using Goma.
use_goma = false
+ # This flag is for ChromeOS compiler wrapper.
+ # By passing gomacc path via GOMACC_PATH environment variable, ChromeOS'
+ # compiler wrapper invokes gomacc inside it.
+ has_gomacc_path = false
+
# Set the default value based on the platform.
if (host_os == "win") {
# Absolute directory containing the gomacc.exe binary.
diff --git a/chromium/build/toolchain/linux/unbundle/README.md b/chromium/build/toolchain/linux/unbundle/README.md
index ac5808a84e5..17b93c9fdee 100644
--- a/chromium/build/toolchain/linux/unbundle/README.md
+++ b/chromium/build/toolchain/linux/unbundle/README.md
@@ -28,7 +28,7 @@ custom_toolchain="//build/toolchain/linux/unbundle:default"
host_toolchain="//build/toolchain/linux/unbundle:default"
```
-See [more docs on GN](https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/quick_start.md).
+See [more docs on GN](https://gn.googlesource.com/gn/+/master/docs/quick_start.md).
To cross-compile (not fully tested), add the following:
diff --git a/chromium/build/toolchain/nacl/BUILD.gn b/chromium/build/toolchain/nacl/BUILD.gn
index 2083de86d60..4b53d67c00f 100644
--- a/chromium/build/toolchain/nacl/BUILD.gn
+++ b/chromium/build/toolchain/nacl/BUILD.gn
@@ -68,7 +68,7 @@ template("pnacl_toolchain") {
cc = compiler_scriptprefix + toolprefix + "clang" + scriptsuffix
cxx = compiler_scriptprefix + toolprefix + "clang++" + scriptsuffix
- ar = scriptprefix + toolprefix + "ar" + scriptsuffix
+ ar = toolprefix + "ar" + scriptsuffix
readelf = scriptprefix + toolprefix + "readelf" + scriptsuffix
nm = scriptprefix + toolprefix + "nm" + scriptsuffix
if (defined(invoker.strip)) {
diff --git a/chromium/build/toolchain/toolchain.gni b/chromium/build/toolchain/toolchain.gni
index 5b4ca3f8fef..7a87019b8b8 100644
--- a/chromium/build/toolchain/toolchain.gni
+++ b/chromium/build/toolchain/toolchain.gni
@@ -48,7 +48,7 @@ hermetic_xcode_path =
declare_args() {
if (is_clang) {
# Clang compiler version. Clang files are placed at version-dependent paths.
- clang_version = "7.0.0"
+ clang_version = "8.0.0"
}
}
@@ -58,18 +58,6 @@ declare_args() {
assert(!use_xcode_clang || target_os == "ios",
"Using Xcode's clang is only supported in iOS builds")
-# Subdirectory within root_out_dir for shared library files.
-# TODO(agrieve): GYP sets this to "lib" for Linux & Android, but this won't work
-# in GN until support for loadable_module() is added.
-# See: https://codereview.chromium.org/1236503002/
-shlib_subdir = "."
-
-# Root out dir for shared library files.
-root_shlib_dir = root_out_dir
-if (shlib_subdir != ".") {
- root_shlib_dir += "/$shlib_subdir"
-}
-
# Extension for shared library files (including leading dot).
if (is_mac || is_ios) {
shlib_extension = ".dylib"
diff --git a/chromium/build/toolchain/win/BUILD.gn b/chromium/build/toolchain/win/BUILD.gn
index eb3e2b2b377..3c6c9d05d2c 100644
--- a/chromium/build/toolchain/win/BUILD.gn
+++ b/chromium/build/toolchain/win/BUILD.gn
@@ -143,7 +143,7 @@ template("msvc_toolchain") {
# invocation requires higher cpu usage compared to ninja invocation, and
# the python wrapper is only needed to work around link.exe problems.
# TODO(thakis): Remove wrapper once lld-link can merge manifests without
- # relying on mt.exe being in %PATH% on Windows.
+ # relying on mt.exe being in %PATH% on Windows, https://crbug.com/872740
linker_wrapper = "ninja -t msvc -e $env -- " # Note trailing space.
sys_lib_flags = ""
} else {
@@ -296,21 +296,6 @@ template("msvc_toolchain") {
command = "$linker_wrapper$link /nologo ${sys_lib_flags}/OUT:$exename /PDB:$pdbname @$rspfile"
- if (host_os == "win") {
- shellprefix = "cmd /c"
- } else {
- shellprefix = ""
- }
- not_needed([ "shellprefix" ])
-
- if (is_official_build) {
- # On bots, the binary's PDB grow and eventually exceed 4G, causing the
- # link to fail. As there's no utility to keeping the PDB around
- # incrementally anyway in this config (because we're doing
- # non-incremental LTCG builds), delete it before linking.
- command = "$shellprefix $python_path $tool_wrapper_path delete-file $pdbname && $command"
- }
-
default_output_extension = ".exe"
default_output_dir = "{{root_out_dir}}"
description = "LINK {{output}}"
diff --git a/chromium/build/toolchain/wrapper_utils.py b/chromium/build/toolchain/wrapper_utils.py
index f76192e2063..5949a3727c7 100644
--- a/chromium/build/toolchain/wrapper_utils.py
+++ b/chromium/build/toolchain/wrapper_utils.py
@@ -14,7 +14,6 @@ import sys
import threading
_BAT_PREFIX = 'cmd /c call '
-_WHITELIST_RE = re.compile('whitelisted_resource_(?P<resource_id>[0-9]+)')
def _GzipThenDelete(src_path, dest_path):
@@ -82,62 +81,6 @@ def RunLinkWithOptionalMapFile(command, env=None, map_file=None):
return result
-def ResolveRspLinks(inputs):
- """Return a list of files contained in a response file.
-
- Args:
- inputs: A command containing rsp files.
-
- Returns:
- A set containing the rsp file content."""
- rspfiles = [a[1:] for a in inputs if a.startswith('@')]
- resolved = set()
- for rspfile in rspfiles:
- with open(rspfile, 'r') as f:
- resolved.update(shlex.split(f.read()))
-
- return resolved
-
-
-def CombineResourceWhitelists(whitelist_candidates, outfile):
- """Combines all whitelists for a resource file into a single whitelist.
-
- Args:
- whitelist_candidates: List of paths to rsp files containing all targets.
- outfile: Path to save the combined whitelist.
- """
- whitelists = ('%s.whitelist' % candidate for candidate in whitelist_candidates
- if os.path.exists('%s.whitelist' % candidate))
-
- resources = set()
- for whitelist in whitelists:
- with open(whitelist, 'r') as f:
- resources.update(f.readlines())
-
- with open(outfile, 'w') as f:
- f.writelines(resources)
-
-
-def ExtractResourceIdsFromPragmaWarnings(text):
- """Returns set of resource IDs that are inside unknown pragma warnings.
-
- Args:
- text: The text that will be scanned for unknown pragma warnings.
-
- Returns:
- A set containing integers representing resource IDs.
- """
- used_resources = set()
- lines = text.splitlines()
- for ln in lines:
- match = _WHITELIST_RE.search(ln)
- if match:
- resource_id = int(match.group('resource_id'))
- used_resources.add(resource_id)
-
- return used_resources
-
-
def CaptureCommandStderr(command, env=None):
"""Returns the stderr of a command.
diff --git a/chromium/build/update-linux-sandbox.sh b/chromium/build/update-linux-sandbox.sh
index fa2d1077af6..d24cf2602d7 100755
--- a/chromium/build/update-linux-sandbox.sh
+++ b/chromium/build/update-linux-sandbox.sh
@@ -45,6 +45,12 @@ if [ ! -f "${CHROME_SANDBOX_BUILD_PATH}" ]; then
exit 1
fi
+if readelf -d "${CHROME_SANDBOX_BUILD_PATH}" | \
+ grep "(RPATH)" > /dev/null 2>&1; then
+ echo "Build requires is_component_build=false in ${CHROME_OUT_DIR}/args.gn."
+ exit 1
+fi
+
if [ ! -f "${CHROME_SANDBOX_INST_PATH}" ]; then
echo -n "Could not find ${CHROME_SANDBOX_INST_PATH}, "
echo "installing it now."
diff --git a/chromium/build/util/BUILD.gn b/chromium/build/util/BUILD.gn
index 9f5a6f71a57..54c23c91c4a 100644
--- a/chromium/build/util/BUILD.gn
+++ b/chromium/build/util/BUILD.gn
@@ -2,11 +2,11 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("//build/util/lastchange.gni")
+
action("webkit_version") {
script = "version.py"
- lastchange_file = "LASTCHANGE"
-
template_file = "webkit_version.h.in"
inputs = [
lastchange_file,
diff --git a/chromium/build/util/LASTCHANGE b/chromium/build/util/LASTCHANGE
index 7738287b783..6255d691444 100644
--- a/chromium/build/util/LASTCHANGE
+++ b/chromium/build/util/LASTCHANGE
@@ -1 +1 @@
-LASTCHANGE=cdec0adf58c577876de3d8f073dce520f0829431-refs/branch-heads/3497@{#988}
+LASTCHANGE=618d94a03dcd8ad478b6005f851e2c1ade8b5ffc-refs/branch-heads/3538@{#1042}
diff --git a/chromium/build/util/LASTCHANGE.committime b/chromium/build/util/LASTCHANGE.committime
new file mode 100644
index 00000000000..d6efc81c1e3
--- /dev/null
+++ b/chromium/build/util/LASTCHANGE.committime
@@ -0,0 +1 @@
+1540339741 \ No newline at end of file
diff --git a/chromium/build/util/LASTCHANGE.dummy b/chromium/build/util/LASTCHANGE.dummy
new file mode 100644
index 00000000000..21bb3c33c74
--- /dev/null
+++ b/chromium/build/util/LASTCHANGE.dummy
@@ -0,0 +1 @@
+LASTCHANGE=0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
diff --git a/chromium/build/util/lastchange.gni b/chromium/build/util/lastchange.gni
new file mode 100644
index 00000000000..a13295900df
--- /dev/null
+++ b/chromium/build/util/lastchange.gni
@@ -0,0 +1,16 @@
+# Copyright 2018 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.
+
+# This file is used to inject fixed dummy commit for commit independent
+# reproducible binaries.
+
+declare_args() {
+ use_dummy_lastchange = false
+}
+
+if (use_dummy_lastchange) {
+ lastchange_file = "//build/util/LASTCHANGE.dummy"
+} else {
+ lastchange_file = "//build/util/LASTCHANGE"
+}
diff --git a/chromium/build/util/lastchange.py b/chromium/build/util/lastchange.py
index 19e3237c058..82c5f39432e 100755
--- a/chromium/build/util/lastchange.py
+++ b/chromium/build/util/lastchange.py
@@ -15,9 +15,10 @@ import subprocess
import sys
class VersionInfo(object):
- def __init__(self, revision_id, full_revision_string):
+ def __init__(self, revision_id, full_revision_string, timestamp):
self.revision_id = revision_id
self.revision = full_revision_string
+ self.timestamp = timestamp
def RunGitCommand(directory, command):
@@ -58,14 +59,14 @@ def FetchGitRevision(directory, filter):
A VersionInfo object or None on error.
"""
hsh = ''
- git_args = ['log', '-1', '--format=%H']
+ git_args = ['log', '-1', '--format=%H %ct']
if filter is not None:
git_args.append('--grep=' + filter)
proc = RunGitCommand(directory, git_args)
if proc:
output = proc.communicate()[0].strip()
if proc.returncode == 0 and output:
- hsh = output
+ hsh, ct = output.split()
else:
logging.error('Git error: rc=%d, output=%r' %
(proc.returncode, output))
@@ -80,7 +81,7 @@ def FetchGitRevision(directory, filter):
if line.startswith('Cr-Commit-Position:'):
pos = line.rsplit()[-1].strip()
break
- return VersionInfo(hsh, '%s-%s' % (hsh, pos))
+ return VersionInfo(hsh, '%s-%s' % (hsh, pos), int(ct))
def FetchVersionInfo(directory=None, filter=None):
@@ -90,7 +91,7 @@ def FetchVersionInfo(directory=None, filter=None):
"""
version_info = FetchGitRevision(directory, filter)
if not version_info:
- version_info = VersionInfo('0', '0')
+ version_info = VersionInfo('0', '0', 0)
return version_info
@@ -136,6 +137,7 @@ def WriteIfChanged(file_name, contents):
"""
Writes the specified contents to the specified file_name
iff the contents are different than the current contents.
+ Returns if new data was written.
"""
try:
old_contents = open(file_name, 'r').read()
@@ -143,9 +145,10 @@ def WriteIfChanged(file_name, contents):
pass
else:
if contents == old_contents:
- return
+ return False
os.unlink(file_name)
open(file_name, 'w').write(contents)
+ return True
def main(argv=None):
@@ -211,7 +214,11 @@ def main(argv=None):
sys.stdout.write(contents)
else:
if out_file:
- WriteIfChanged(out_file, contents)
+ committime_file = out_file + '.committime'
+ out_changed = WriteIfChanged(out_file, contents)
+ if out_changed or not os.path.exists(committime_file):
+ with open(committime_file, 'w') as timefile:
+ timefile.write(str(version_info.timestamp))
if header:
WriteIfChanged(header,
GetHeaderContents(header, opts.version_macro,
diff --git a/chromium/build/whitespace_file.txt b/chromium/build/whitespace_file.txt
index 0646a9fdc1d..6dd1a7bb3ee 100644
--- a/chromium/build/whitespace_file.txt
+++ b/chromium/build/whitespace_file.txt
@@ -174,4 +174,5 @@ Mistakes are the best sometimes.
This is groovy.
SECRET ENDING: IT WAS _____ ALL ALONG!
-testing trailing line
+testing trailing line.
+Hacky hacky mitigation now works in CQ. \ No newline at end of file
diff --git a/chromium/build/write_build_date_header.py b/chromium/build/write_build_date_header.py
index 6fe514fd788..77388288b3b 100755
--- a/chromium/build/write_build_date_header.py
+++ b/chromium/build/write_build_date_header.py
@@ -2,106 +2,25 @@
# Copyright (c) 2016 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 a file that contains a define that approximates the build date.
-
-build_type impacts the timestamp generated:
-- default: the build date is set to the most recent first Sunday of a month at
- 5:00am. The reason is that it is a time where invalidating the build cache
- shouldn't have major reprecussions (due to lower load).
-- official: the build date is set to the current date at 5:00am, or the day
- before if the current time is before 5:00am.
-Either way, it is guaranteed to be in the past and always in UTC.
-
-It is also possible to explicitly set a build date to be used.
-"""
+"""Takes a timestamp and writes it in as readable text to a .h file."""
import argparse
-import calendar
import datetime
-import doctest
import os
import sys
-def GetFirstSundayOfMonth(year, month):
- """Returns the first sunday of the given month of the given year.
-
- >>> GetFirstSundayOfMonth(2016, 2)
- 7
- >>> GetFirstSundayOfMonth(2016, 3)
- 6
- >>> GetFirstSundayOfMonth(2000, 1)
- 2
- """
- weeks = calendar.Calendar().monthdays2calendar(year, month)
- # Return the first day in the first week that is a Sunday.
- return [date_day[0] for date_day in weeks[0] if date_day[1] == 6][0]
-
-
-def GetBuildDate(build_type, utc_now):
- """Gets the approximate build date given the specific build type.
-
- >>> GetBuildDate('default', datetime.datetime(2016, 2, 6, 1, 2, 3))
- 'Jan 03 2016 01:02:03'
- >>> GetBuildDate('default', datetime.datetime(2016, 2, 7, 5))
- 'Feb 07 2016 05:00:00'
- >>> GetBuildDate('default', datetime.datetime(2016, 2, 8, 5))
- 'Feb 07 2016 05:00:00'
- """
- day = utc_now.day
- month = utc_now.month
- year = utc_now.year
- if build_type != 'official':
- first_sunday = GetFirstSundayOfMonth(year, month)
- # If our build is after the first Sunday, we've already refreshed our build
- # cache on a quiet day, so just use that day.
- # Otherwise, take the first Sunday of the previous month.
- if day >= first_sunday:
- day = first_sunday
- else:
- month -= 1
- if month == 0:
- month = 12
- year -= 1
- day = GetFirstSundayOfMonth(year, month)
- now = datetime.datetime(
- year, month, day, utc_now.hour, utc_now.minute, utc_now.second)
- return '{:%b %d %Y %H:%M:%S}'.format(now)
-
-
def main():
- if doctest.testmod()[0]:
- return 1
- argument_parser = argparse.ArgumentParser(
- description=sys.modules[__name__].__doc__,
- formatter_class=argparse.RawDescriptionHelpFormatter)
+ argument_parser = argparse.ArgumentParser()
argument_parser.add_argument('output_file', help='The file to write to')
- argument_parser.add_argument(
- 'build_type', help='The type of build', choices=('official', 'default'))
- argument_parser.add_argument(
- 'build_date_override', nargs='?',
- help='Optional override for the build date. Format must be '
- '\'Mmm DD YYYY HH:MM:SS\'')
+ argument_parser.add_argument('timestamp')
args = argument_parser.parse_args()
- if args.build_date_override:
- # Format is expected to be "Mmm DD YYYY HH:MM:SS".
- build_date = args.build_date_override
- else:
- now = datetime.datetime.utcnow()
- if now.hour < 5:
- # The time is locked at 5:00 am in UTC to cause the build cache
- # invalidation to not happen exactly at midnight. Use the same calculation
- # as the day before.
- # See //base/build_time.cc.
- now = now - datetime.timedelta(days=1)
- now = datetime.datetime(now.year, now.month, now.day, 5, 0, 0)
- build_date = GetBuildDate(args.build_type, now)
-
+ date = datetime.datetime.utcfromtimestamp(int(args.timestamp))
output = ('// Generated by //build/write_build_date_header.py\n'
'#ifndef BUILD_DATE\n'
- '#define BUILD_DATE "{}"\n'
- '#endif // BUILD_DATE\n'.format(build_date))
+ '#define BUILD_DATE "{:%b %d %Y %H:%M:%S}"\n'
+ '#endif // BUILD_DATE\n'.format(date))
current_contents = ''
if os.path.isfile(args.output_file):