summaryrefslogtreecommitdiffstats
path: root/chromium/build
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/build')
-rw-r--r--chromium/build/README.md4
-rw-r--r--chromium/build/android/BUILD.gn10
-rw-r--r--chromium/build/android/PRESUBMIT.py62
-rwxr-xr-xchromium/build/android/apk_operations.py107
-rw-r--r--chromium/build/android/bytecode/BUILD.gn3
-rw-r--r--chromium/build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java21
-rw-r--r--chromium/build/android/bytecode/java/org/chromium/bytecode/ConstantPoolReferenceReader.java140
-rw-r--r--chromium/build/android/bytecode/java/org/chromium/bytecode/SplitCompatClassAdapter.java167
-rw-r--r--chromium/build/android/constant_pool_refs_to_keep_rules.py223
-rw-r--r--chromium/build/android/constant_pool_refs_to_keep_rules_test.py91
-rw-r--r--chromium/build/android/devil_chromium.json9
-rw-r--r--chromium/build/android/docs/README.md1
-rw-r--r--chromium/build/android/docs/class_verification_failures.md6
-rw-r--r--chromium/build/android/docs/coverage.md2
-rw-r--r--chromium/build/android/docs/java_toolchain.md152
-rwxr-xr-xchromium/build/android/generate_jacoco_report.py2
-rwxr-xr-xchromium/build/android/gradle/generate_gradle.py13
-rw-r--r--chromium/build/android/gradle/root.jinja2
-rwxr-xr-xchromium/build/android/gyp/bundletool.py4
-rwxr-xr-xchromium/build/android/gyp/bytecode_processor.py14
-rwxr-xr-xchromium/build/android/gyp/compile_resources.py91
-rwxr-xr-xchromium/build/android/gyp/create_app_bundle.py17
-rw-r--r--chromium/build/android/gyp/create_bundle_wrapper_script.pydeps1
-rwxr-xr-xchromium/build/android/gyp/create_java_binary_script.py16
-rwxr-xr-xchromium/build/android/gyp/desugar.py7
-rwxr-xr-xchromium/build/android/gyp/dex.py187
-rwxr-xr-xchromium/build/android/gyp/dexsplitter.py2
-rwxr-xr-xchromium/build/android/gyp/dist_aar.py40
-rw-r--r--chromium/build/android/gyp/dist_aar.pydeps1
-rwxr-xr-xchromium/build/android/gyp/filter_zip.py6
-rwxr-xr-xchromium/build/android/gyp/generate_linker_version_script.py7
-rwxr-xr-xchromium/build/android/gyp/jacoco_instr.py152
-rwxr-xr-xchromium/build/android/gyp/java_cpp_enum.py2
-rwxr-xr-xchromium/build/android/gyp/java_cpp_enum_tests.py2
-rwxr-xr-xchromium/build/android/gyp/javac.py7
-rwxr-xr-xchromium/build/android/gyp/lint.py3
-rwxr-xr-xchromium/build/android/gyp/main_dex_list.py111
-rwxr-xr-xchromium/build/android/gyp/merge_manifest.py2
-rwxr-xr-xchromium/build/android/gyp/prepare_resources.py3
-rwxr-xr-xchromium/build/android/gyp/proguard.py40
-rw-r--r--chromium/build/android/gyp/util/build_utils.py69
-rw-r--r--chromium/build/android/gyp/util/md5_check.py71
-rwxr-xr-xchromium/build/android/gyp/util/md5_check_test.py44
-rwxr-xr-xchromium/build/android/gyp/write_build_config.py23
-rw-r--r--chromium/build/android/incremental_install/BUILD.gn2
-rwxr-xr-xchromium/build/android/incremental_install/write_installer_json.py29
-rwxr-xr-xchromium/build/android/list_class_verification_failures.py11
-rw-r--r--chromium/build/android/pylib/base/environment_factory.py14
-rw-r--r--chromium/build/android/pylib/constants/__init__.py5
-rw-r--r--chromium/build/android/pylib/gtest/gtest_test_instance.py1
-rw-r--r--chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py39
-rwxr-xr-xchromium/build/android/pylib/instrumentation/instrumentation_test_instance_test.py36
-rw-r--r--chromium/build/android/pylib/local/device/local_device_gtest_run.py64
-rw-r--r--chromium/build/android/pylib/local/device/local_device_instrumentation_test_run.py80
-rw-r--r--chromium/build/android/pylib/local/emulator/avd.py496
-rw-r--r--chromium/build/android/pylib/local/emulator/local_emulator_environment.py131
-rw-r--r--chromium/build/android/pylib/local/emulator/proto/__init__.py3
-rw-r--r--chromium/build/android/pylib/local/emulator/proto/avd.proto35
-rw-r--r--chromium/build/android/pylib/local/emulator/proto/avd_pb2.py218
-rw-r--r--chromium/build/android/pylib/local/machine/local_machine_junit_test_run.py12
-rw-r--r--chromium/build/android/pylib/results/flakiness_dashboard/json_results_generator.py6
-rw-r--r--chromium/build/android/pylib/utils/simpleperf.py11
-rwxr-xr-xchromium/build/android/resource_sizes.py45
-rwxr-xr-xchromium/build/android/test_runner.py32
-rw-r--r--chromium/build/android/test_runner.pydeps4
-rwxr-xr-xchromium/build/android/update_verification.py3
-rw-r--r--chromium/build/args/headless.gn1
-rw-r--r--chromium/build/check_gn_headers_whitelist.txt1
-rwxr-xr-xchromium/build/chromeos/test_runner.py4
-rw-r--r--chromium/build/config/BUILDCONFIG.gn1
-rw-r--r--chromium/build/config/OWNERS2
-rw-r--r--chromium/build/config/aix/BUILD.gn1
-rw-r--r--chromium/build/config/android/config.gni12
-rw-r--r--chromium/build/config/android/internal_rules.gni192
-rw-r--r--chromium/build/config/android/linker_version_script.gni5
-rw-r--r--chromium/build/config/android/rules.gni227
-rw-r--r--chromium/build/config/chromecast_build.gni31
-rw-r--r--chromium/build/config/chromeos/rules.gni6
-rw-r--r--chromium/build/config/compiler/BUILD.gn72
-rw-r--r--chromium/build/config/compiler/compiler.gni13
-rw-r--r--chromium/build/config/coverage/coverage.gni15
-rw-r--r--chromium/build/config/fuchsia/BUILD.gn2
-rw-r--r--chromium/build/config/fuchsia/config.gni1
-rw-r--r--chromium/build/config/fuchsia/generate_runner_scripts.gni199
-rw-r--r--chromium/build/config/fuchsia/rules.gni162
-rw-r--r--chromium/build/config/ios/rules.gni21
-rw-r--r--chromium/build/config/jumbo.gni28
-rwxr-xr-xchromium/build/config/linux/pkg-config.py10
-rw-r--r--chromium/build/config/locales.gni9
-rw-r--r--chromium/build/config/mac/plist_util.py5
-rw-r--r--chromium/build/config/mac/rules.gni11
-rw-r--r--chromium/build/config/posix/sysroot_ld_path.py3
-rw-r--r--chromium/build/config/sanitizers/sanitizers.gni15
-rw-r--r--chromium/build/config/win/BUILD.gn8
-rwxr-xr-xchromium/build/copy_test_data_ios.py2
-rw-r--r--chromium/build/fuchsia/aemu_target.py72
-rw-r--r--chromium/build/fuchsia/common.py14
-rw-r--r--chromium/build/fuchsia/common_args.py64
-rwxr-xr-xchromium/build/fuchsia/deploy_to_amber_repo.py47
-rw-r--r--chromium/build/fuchsia/emu_target.py92
-rw-r--r--chromium/build/fuchsia/fidlgen_js/fidl.py10
-rwxr-xr-xchromium/build/fuchsia/fidlgen_js/gen.py3
-rw-r--r--chromium/build/fuchsia/fidlgen_js/runtime/fidl.mjs6
-rw-r--r--chromium/build/fuchsia/linux.sdk.sha12
-rw-r--r--chromium/build/fuchsia/mac.sdk.sha12
-rw-r--r--chromium/build/fuchsia/qemu_target.py182
-rw-r--r--chromium/build/fuchsia/run_package.py19
-rw-r--r--chromium/build/fuchsia/target.py24
-rwxr-xr-xchromium/build/fuchsia/test_runner.py2
-rw-r--r--chromium/build/linux/sysroot_scripts/debian_archive_unstable.gpg (renamed from chromium/build/linux/sysroot_scripts/debian-archive-sid-stable.gpg)bin54194 -> 80298 bytes
-rwxr-xr-xchromium/build/linux/sysroot_scripts/generate_debian_archive_unstable_gpg.sh35
-rw-r--r--chromium/build/linux/sysroot_scripts/generated_package_lists/sid.amd64683
-rw-r--r--chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm663
-rw-r--r--chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm64666
-rw-r--r--chromium/build/linux/sysroot_scripts/generated_package_lists/sid.armel335
-rw-r--r--chromium/build/linux/sysroot_scripts/generated_package_lists/sid.i386662
-rw-r--r--chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el648
-rw-r--r--chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel648
-rwxr-xr-xchromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh64
-rw-r--r--chromium/build/linux/sysroot_scripts/sysroot-creator.sh97
-rw-r--r--chromium/build/linux/sysroot_scripts/sysroots.json17
-rw-r--r--chromium/build/sanitizers/tsan_suppressions.cc4
-rwxr-xr-xchromium/build/symlink.py4
-rwxr-xr-xchromium/build/toolchain/clang_code_coverage_wrapper.py34
-rw-r--r--chromium/build/toolchain/cros/BUILD.gn4
-rw-r--r--chromium/build/toolchain/goma.gni3
-rw-r--r--chromium/build/toolchain/mac/BUILD.gn9
-rw-r--r--chromium/build/toolchain/win/BUILD.gn75
-rw-r--r--chromium/build/toolchain/win/midl.py90
-rwxr-xr-xchromium/build/toolchain/win/rc/rc.py70
-rw-r--r--chromium/build/toolchain/win/tool_wrapper.py37
-rw-r--r--chromium/build/util/LASTCHANGE2
-rw-r--r--chromium/build/util/LASTCHANGE.committime2
-rwxr-xr-xchromium/build/util/generate_wrapper.py2
-rw-r--r--chromium/build/util/lib/common/chrome_test_server_spawner.py6
-rw-r--r--chromium/build/util/version.gni4
-rwxr-xr-xchromium/build/vs_toolchain.py37
-rw-r--r--chromium/build/win/BUILD.gn3
-rw-r--r--chromium/build/win/gn_meta_sln.py2
139 files changed, 5579 insertions, 4139 deletions
diff --git a/chromium/build/README.md b/chromium/build/README.md
index 32a9f85d979..f9dde9728a0 100644
--- a/chromium/build/README.md
+++ b/chromium/build/README.md
@@ -9,9 +9,11 @@ to files outside of it. Some exceptions exist (`//testing`, select
`//third_party` subdirectories), but new dependencies tend to break these other
projects, and so should be avoided.
-Changes to //build should be landed in the Chromium repo. They will then be
+Changes to `//build` should be landed in the Chromium repo. They will then be
replicated to the stand-alone [build repo](https://chromium.googlesource.com/chromium/src/build)
by the [gsubtreed tool.](https://chromium.googlesource.com/infra/infra/+/master/infra/services/gsubtreed)
+Note: You can find all directories already available through gsubtreed in the
+[list of all chromium repos](https://chromium.googlesource.com/).
## Contents
* `//build/config` - Common templates via `.gni` files.
diff --git a/chromium/build/android/BUILD.gn b/chromium/build/android/BUILD.gn
index e2588265ec9..486fc1c2701 100644
--- a/chromium/build/android/BUILD.gn
+++ b/chromium/build/android/BUILD.gn
@@ -90,11 +90,15 @@ python_library("test_runner_py") {
":devil_chromium_py",
]
if (build_with_chromium) {
+ data += [
+ "//third_party/android_build_tools/bundletool/bundletool-all-0.10.3.jar",
+ "//tools/android/avd/proto/",
+ ]
data_deps +=
[ "//third_party/android_platform/development/scripts:stack_py" ]
- }
- if (is_asan) {
- data_deps += [ "//tools/android/asan/third_party:asan_device_setup" ]
+ if (is_asan) {
+ data_deps += [ "//tools/android/asan/third_party:asan_device_setup" ]
+ }
}
# Proguard is needed only when using apks (rather than native executables).
diff --git a/chromium/build/android/PRESUBMIT.py b/chromium/build/android/PRESUBMIT.py
index 32ccfac5047..8eb0792f624 100644
--- a/chromium/build/android/PRESUBMIT.py
+++ b/chromium/build/android/PRESUBMIT.py
@@ -10,8 +10,6 @@ details on the presubmit API built into depot_tools.
def CommonChecks(input_api, output_api):
- output = []
-
build_android_dir = input_api.PresubmitLocalPath()
def J(*dirs):
@@ -19,32 +17,38 @@ def CommonChecks(input_api, output_api):
return input_api.os_path.join(build_android_dir, *dirs)
build_pys = [
+ r'gn/.*\.py$',
r'gyp/.*\.py$',
- r'gn/.*\.py',
]
- output.extend(input_api.canned_checks.RunPylint(
- input_api,
- output_api,
- pylintrc='pylintrc',
- black_list=build_pys,
- extra_paths_list=[
- J(),
- J('gyp'),
- J('buildbot'),
- J('..', 'util', 'lib', 'common'),
- J('..', '..', 'third_party', 'catapult', 'common', 'py_trace_event'),
- J('..', '..', 'third_party', 'catapult', 'common', 'py_utils'),
- J('..', '..', 'third_party', 'catapult', 'devil'),
- J('..', '..', 'third_party', 'catapult', 'tracing'),
- J('..', '..', 'third_party', 'depot_tools'),
- J('..', '..', 'third_party', 'colorama', 'src'),
- J('..', '..', 'third_party', 'pymock'),
- ]))
- output.extend(input_api.canned_checks.RunPylint(
- input_api,
- output_api,
- white_list=build_pys,
- extra_paths_list=[J('gyp'), J('gn')]))
+ tests = []
+ tests.extend(
+ input_api.canned_checks.GetPylint(
+ input_api,
+ output_api,
+ pylintrc='pylintrc',
+ black_list=[
+ r'.*_pb2\.py',
+ ] + build_pys,
+ extra_paths_list=[
+ J(),
+ J('gyp'),
+ J('buildbot'),
+ J('..', 'util', 'lib', 'common'),
+ J('..', '..', 'third_party', 'catapult', 'common',
+ 'py_trace_event'),
+ J('..', '..', 'third_party', 'catapult', 'common', 'py_utils'),
+ J('..', '..', 'third_party', 'catapult', 'devil'),
+ J('..', '..', 'third_party', 'catapult', 'tracing'),
+ J('..', '..', 'third_party', 'depot_tools'),
+ J('..', '..', 'third_party', 'colorama', 'src'),
+ J('..', '..', 'third_party', 'pymock'),
+ ]))
+ tests.extend(
+ input_api.canned_checks.GetPylint(
+ input_api,
+ output_api,
+ white_list=build_pys,
+ extra_paths_list=[J('gyp'), J('gn')]))
# Disabled due to http://crbug.com/410936
#output.extend(input_api.canned_checks.RunUnitTestsInDirectory(
@@ -55,8 +59,8 @@ def CommonChecks(input_api, output_api):
'PYTHONPATH': build_android_dir,
'PYTHONDONTWRITEBYTECODE': '1',
})
- output.extend(
- input_api.canned_checks.RunUnitTests(
+ tests.extend(
+ input_api.canned_checks.GetUnitTests(
input_api,
output_api,
unit_tests=[
@@ -88,7 +92,7 @@ def CommonChecks(input_api, output_api):
],
env=pylib_test_env))
- return output
+ return input_api.RunTests(tests)
def CheckChangeOnUpload(input_api, output_api):
diff --git a/chromium/build/android/apk_operations.py b/chromium/build/android/apk_operations.py
index c6efb549f68..9df4897a196 100755
--- a/chromium/build/android/apk_operations.py
+++ b/chromium/build/android/apk_operations.py
@@ -18,7 +18,6 @@ import posixpath
import random
import re
import shlex
-import shutil
import sys
import tempfile
import textwrap
@@ -129,8 +128,6 @@ def _GenerateBundleApks(info,
def _InstallBundle(devices, bundle_apks, package_name, command_line_flags_file,
modules, fake_modules):
- # Path to push fake modules for Chrome to pick up.
- MODULES_SRC_DIRECTORY_PATH = '/data/local/tmp/modules'
# Path Chrome creates after validating fake modules. This needs to be cleared
# for pushed fake modules to be picked up.
SPLITCOMPAT_PATH = '/data/data/' + package_name + '/files/splitcompat'
@@ -151,98 +148,24 @@ def _InstallBundle(devices, bundle_apks, package_name, command_line_flags_file,
else:
logging.info('Skipped removing nonexistent %s', SPLITCOMPAT_PATH)
- def InstallFakeModules(device):
- try:
- temp_path = tempfile.mkdtemp()
-
- if not fake_modules:
- # Push empty temp_path to clear folder on device and update the cache.
- device.PushChangedFiles([(temp_path, MODULES_SRC_DIRECTORY_PATH)],
- delete_device_stale=True)
- return
-
- # Device-spec JSON is needed, so create that first.
- device_spec_filename = os.path.join(temp_path, 'device_spec.json')
- get_device_spec_cmd_args = [
- 'get-device-spec', '--adb=' + adb_wrapper.AdbWrapper.GetAdbPath(),
- '--device-id=' + device.serial, '--output=' + device_spec_filename
- ]
- bundletool.RunBundleTool(get_device_spec_cmd_args)
-
- # Extract fake modules to temp directory. For now, installation
- # requires running 'bundletool extract-apks'. Unfortunately, this leads
- # to unneeded compression of module files.
- extract_apks_cmd_args = [
- 'extract-apks', '--apks=' + bundle_apks,
- '--device-spec=' + device_spec_filename,
- '--modules=' + ','.join(fake_modules), '--output-dir=' + temp_path
- ]
- bundletool.RunBundleTool(extract_apks_cmd_args)
-
- # Push fake modules, with renames.
- fake_module_apks = set()
- for fake_module in fake_modules:
- found_master = False
-
- for filename in os.listdir(temp_path):
- # If file matches expected format, rename it to follow conventions
- # required by splitcompatting.
- match = re.match(r'%s-([a-z_0-9]+)\.apk' % fake_module, filename)
- local_path = os.path.join(temp_path, filename)
-
- if not match:
- continue
-
- module_suffix = match.group(1)
- remote = os.path.join(
- temp_path, '%s.config.%s.apk' % (fake_module, module_suffix))
- # Check if filename matches a master apk.
- if 'master' in module_suffix:
- if found_master:
- raise Exception('Expect 1 master apk file for %s' % fake_module)
- found_master = True
- remote = os.path.join(temp_path, '%s.apk' % fake_module)
-
- os.rename(local_path, remote)
- fake_module_apks.add(os.path.basename(remote))
-
- # Files that weren't renamed should not be pushed, remove from temp_path.
- for filename in os.listdir(temp_path):
- if filename not in fake_module_apks:
- os.remove(os.path.join(temp_path, filename))
-
- device.PushChangedFiles([(temp_path, MODULES_SRC_DIRECTORY_PATH)],
- delete_device_stale=True)
-
- finally:
- shutil.rmtree(temp_path, ignore_errors=True)
-
def Install(device):
ClearFakeModules(device)
- if fake_modules:
+ if fake_modules and ShouldWarnFakeFeatureModuleInstallFlag(device):
# Print warning if command line is not set up for fake modules.
- if ShouldWarnFakeFeatureModuleInstallFlag(device):
- msg = ('Command line has no %s: Fake modules will be ignored.' %
- FAKE_FEATURE_MODULE_INSTALL)
- print(_Colorize(msg, colorama.Fore.YELLOW + colorama.Style.BRIGHT))
-
- InstallFakeModules(device)
-
- # NOTE: For now, installation requires running 'bundletool install-apks'.
- # TODO(digit): Add proper support for bundles to devil instead, then use it.
- install_cmd_args = [
- 'install-apks', '--apks=' + bundle_apks, '--allow-downgrade',
- '--adb=' + adb_wrapper.AdbWrapper.GetAdbPath(),
- '--device-id=' + device.serial
- ]
- if modules:
- install_cmd_args += ['--modules=' + ','.join(modules)]
- bundletool.RunBundleTool(install_cmd_args)
+ msg = ('Command line has no %s: Fake modules will be ignored.' %
+ FAKE_FEATURE_MODULE_INSTALL)
+ print(_Colorize(msg, colorama.Fore.YELLOW + colorama.Style.BRIGHT))
+
+ device.Install(
+ bundle_apks,
+ modules=modules,
+ fake_modules=fake_modules,
+ allow_downgrade=True)
# Basic checks for |modules| and |fake_modules|.
# * |fake_modules| cannot include 'base'.
# * If |fake_modules| is given, ensure |modules| includes 'base'.
- # * They must be disjoint.
+ # * They must be disjoint (checked by device.Install).
modules_set = set(modules) if modules else set()
fake_modules_set = set(fake_modules) if fake_modules else set()
if BASE_MODULE in fake_modules_set:
@@ -250,8 +173,6 @@ def _InstallBundle(devices, bundle_apks, package_name, command_line_flags_file,
if fake_modules_set and BASE_MODULE not in modules_set:
raise Exception(
'\'-f FAKE\' must be accompanied by \'-m {}\''.format(BASE_MODULE))
- if fake_modules_set.intersection(modules_set):
- raise Exception('\'-m\' and \'-f\' entries must be disjoint.')
logging.info('Installing bundle.')
device_utils.DeviceUtils.parallel(devices).pMap(Install)
@@ -781,7 +702,11 @@ def _RunLogcat(device, package_name, mapping_path, verbose):
try:
logcat_processor.ProcessLine(line, fast)
except:
- sys.stderr.write('Failed to process line: ' + line)
+ sys.stderr.write('Failed to process line: ' + line + '\n')
+ # Skip stack trace for the common case of the adb server being
+ # restarted.
+ if 'unexpected EOF' in line:
+ sys.exit(1)
raise
if fast and nonce in line:
fast = False
diff --git a/chromium/build/android/bytecode/BUILD.gn b/chromium/build/android/bytecode/BUILD.gn
index 51fff21f18e..88517537f42 100644
--- a/chromium/build/android/bytecode/BUILD.gn
+++ b/chromium/build/android/bytecode/BUILD.gn
@@ -7,15 +7,12 @@ import("//build/config/android/rules.gni")
assert(current_toolchain == default_toolchain)
java_binary("java_bytecode_rewriter") {
- jacoco_never_instrument = true
java_files = [
"java/org/chromium/bytecode/AssertionEnablerClassAdapter.java",
"java/org/chromium/bytecode/ByteCodeProcessor.java",
"java/org/chromium/bytecode/ClassPathValidator.java",
- "java/org/chromium/bytecode/ConstantPoolReferenceReader.java",
"java/org/chromium/bytecode/CustomClassLoaderClassWriter.java",
"java/org/chromium/bytecode/CustomResourcesClassAdapter.java",
- "java/org/chromium/bytecode/SplitCompatClassAdapter.java",
"java/org/chromium/bytecode/ThreadAssertionClassAdapter.java",
"java/org/chromium/bytecode/TypeUtils.java",
]
diff --git a/chromium/build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java b/chromium/build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java
index 56b84845c72..4a56332c061 100644
--- a/chromium/build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java
+++ b/chromium/build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java
@@ -63,8 +63,6 @@ class ByteCodeProcessor {
private static ClassLoader sDirectClassPathClassLoader;
private static ClassLoader sFullClassPathClassLoader;
private static Set<String> sFullClassPathJarPaths;
- private static String sGenerateClassDepsPath;
- private static Set<String> sSplitCompatClassNames;
private static ClassPathValidator sValidator;
private static class EntryDataPair {
@@ -138,10 +136,6 @@ class ByteCodeProcessor {
chain = new CustomResourcesClassAdapter(
chain, reader.getClassName(), reader.getSuperName(), sFullClassPathClassLoader);
}
- if (!sSplitCompatClassNames.isEmpty()) {
- chain = new SplitCompatClassAdapter(
- chain, sSplitCompatClassNames, sFullClassPathClassLoader);
- }
reader.accept(chain, 0);
byte[] patchedByteCode = writer.toByteArray();
return EntryDataPair.create(entry.getName(), patchedByteCode);
@@ -262,7 +256,6 @@ class ByteCodeProcessor {
sShouldUseCustomResources = args[currIndex++].equals("--enable-custom-resources");
sShouldUseThreadAnnotations = args[currIndex++].equals("--enable-thread-annotations");
sShouldCheckClassPath = args[currIndex++].equals("--enable-check-class-path");
- sGenerateClassDepsPath = args[currIndex++];
int sdkJarsLength = Integer.parseInt(args[currIndex++]);
List<String> sdkJarPaths =
Arrays.asList(Arrays.copyOfRange(args, currIndex, currIndex + sdkJarsLength));
@@ -277,13 +270,6 @@ class ByteCodeProcessor {
currIndex += directJarsLength;
sDirectClassPathClassLoader = loadJars(directClassPathJarPaths);
- // Load list of class names that need to be fixed.
- int splitCompatClassNamesLength = Integer.parseInt(args[currIndex++]);
- sSplitCompatClassNames = new HashSet<>();
- sSplitCompatClassNames.addAll(Arrays.asList(
- Arrays.copyOfRange(args, currIndex, currIndex + splitCompatClassNamesLength)));
- currIndex += splitCompatClassNamesLength;
-
// Load all jars that are on the classpath for the input jar for analyzing class hierarchy.
sFullClassPathJarPaths = new HashSet<>();
sFullClassPathJarPaths.clear();
@@ -292,13 +278,6 @@ class ByteCodeProcessor {
sFullClassPathJarPaths.addAll(
Arrays.asList(Arrays.copyOfRange(args, currIndex, args.length)));
- // Write list of references from Java class constant pools to specified output file
- // sGenerateClassDepsPath. This is needed for keep rule generation for async DFMs.
- if (!sGenerateClassDepsPath.isEmpty()) {
- ConstantPoolReferenceReader.writeConstantPoolRefsToFile(
- sFullClassPathJarPaths, sGenerateClassDepsPath);
- }
-
sFullClassPathClassLoader = loadJars(sFullClassPathJarPaths);
sFullClassPathJarPaths.removeAll(directClassPathJarPaths);
diff --git a/chromium/build/android/bytecode/java/org/chromium/bytecode/ConstantPoolReferenceReader.java b/chromium/build/android/bytecode/java/org/chromium/bytecode/ConstantPoolReferenceReader.java
deleted file mode 100644
index e2cbd39785d..00000000000
--- a/chromium/build/android/bytecode/java/org/chromium/bytecode/ConstantPoolReferenceReader.java
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2019 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.
-
-package org.chromium.bytecode;
-
-import org.objectweb.asm.ClassReader;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-/**
- * Compiles list of references from all Java .class files in given jar paths by
- * reading from the constant pool, and writes this list to an output file.
- * This list is used for keep rule generation for maintaining compatibility between
- * async DFMs and synchronous modules.
- */
-public class ConstantPoolReferenceReader {
- private static final String CLASS_FILE_SUFFIX = ".class";
- private static final int BUFFER_SIZE = 16384;
-
- // Constants representing Java constant pool tags
- // See https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4
- private static final int FIELD_REF_TAG = 9;
- private static final int METHOD_REF_TAG = 10;
- private static final int INTERFACE_METHOD_REF_TAG = 11;
-
- private static byte[] readAllBytes(InputStream inputStream) throws IOException {
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- int numRead = 0;
- byte[] data = new byte[BUFFER_SIZE];
- while ((numRead = inputStream.read(data, 0, data.length)) != -1) {
- buffer.write(data, 0, numRead);
- }
- return buffer.toByteArray();
- }
-
- /**
- * Given a set of paths, generates references used to produce Proguard keep rules
- * necessary for asynchronous DFMs.
- * It reads all references stored in constant pools of Java classes from
- * the specified jar paths and writes them to an output file.
- * References written to the specified file can be converted to a
- * corresponding set of Proguard keep rules using the
- * constant_pool_refs_to_keep_rules.py script.
- *
- * @param jarPaths Set of paths specifying Java files to read constant pool
- * references from.
- * @param outputFilePath File path to write output to.
- */
- public static void writeConstantPoolRefsToFile(Set<String> jarPaths, String outputFilePath) {
- HashSet<String> classReferences = new HashSet<>();
-
- for (String jarPath : jarPaths) {
- try (ZipInputStream inputStream = new ZipInputStream(
- new BufferedInputStream(new FileInputStream(jarPath)))) {
- ZipEntry entry;
- while ((entry = inputStream.getNextEntry()) != null) {
- if (entry.isDirectory() || !entry.getName().endsWith(CLASS_FILE_SUFFIX)) {
- continue;
- }
- byte[] data = readAllBytes(inputStream);
- ClassReader reader = new ClassReader(data);
- classReferences.addAll(collectConstantPoolClassReferences(reader));
- }
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- try {
- BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath));
- for (String ref : classReferences) {
- writer.append(ref);
- writer.append("\n");
- }
- writer.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Given a ClassReader, return a set of all super classes, implemented interfaces and
- * members by reading from the associated class's constant pool.
- *
- * @param classReader .class file interface for reading the constant pool.
- */
- private static Set<String> collectConstantPoolClassReferences(ClassReader classReader) {
- char[] charBuffer = new char[classReader.getMaxStringLength()];
- HashSet<String> classReferences = new HashSet<>();
-
- classReferences.add(classReader.getSuperName());
- classReferences.addAll(Arrays.asList(classReader.getInterfaces()));
-
- // According to the Java spec, the constant pool is indexed from 1 to constant_pool_count -
- // 1. See https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4
- StringBuilder refInfoString = new StringBuilder();
- for (int i = 1; i < classReader.getItemCount(); i++) {
- int offset = classReader.getItem(i);
- if (offset <= 0) {
- continue;
- }
- int constantType = classReader.readByte(offset - 1);
- if (offset > 0
- && (constantType == METHOD_REF_TAG || constantType == FIELD_REF_TAG
- || constantType == INTERFACE_METHOD_REF_TAG)) {
- // Read the corresponding class ref and member info from the constant pool.
- int classIndex = classReader.readUnsignedShort(offset);
- int classStartIndex = classReader.getItem(classIndex);
- // Class index is a 2-byte quantity, nameAndTypeIndex is stored sequentially after.
- int nameAndTypeIndex = classReader.readUnsignedShort(offset + 2);
- int nameAndTypeStartIndex = classReader.getItem(nameAndTypeIndex);
-
- // Get member's containing class's name, member's name, and member's details (type,
- // return type, and argument types).
- refInfoString.append(classReader.readUTF8(classStartIndex, charBuffer));
- refInfoString.append(",");
- refInfoString.append(classReader.readUTF8(nameAndTypeStartIndex, charBuffer));
- refInfoString.append(",");
- refInfoString.append(classReader.readUTF8(nameAndTypeStartIndex + 2, charBuffer));
-
- classReferences.add(refInfoString.toString());
- refInfoString.setLength(0);
- }
- }
-
- return classReferences;
- }
-} \ No newline at end of file
diff --git a/chromium/build/android/bytecode/java/org/chromium/bytecode/SplitCompatClassAdapter.java b/chromium/build/android/bytecode/java/org/chromium/bytecode/SplitCompatClassAdapter.java
deleted file mode 100644
index 17c271642c0..00000000000
--- a/chromium/build/android/bytecode/java/org/chromium/bytecode/SplitCompatClassAdapter.java
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2019 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.
-
-package org.chromium.bytecode;
-
-import static org.objectweb.asm.Opcodes.ACC_PROTECTED;
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.INVOKEINTERFACE;
-import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.RETURN;
-
-import static org.chromium.bytecode.TypeUtils.CONTEXT;
-import static org.chromium.bytecode.TypeUtils.VOID;
-
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-
-import java.util.Set;
-
-/**
- * A ClassVisitor for injecting ModuleInstaller.initActivity(activity) method call
- * into Activity's attachBaseContext() method. The goal is to eventually invoke
- * SplitCompat.install() method if running with the binary that has bundle support
- * enabled. This needs to happen for activities that were not built with SplitCompat
- * support.
- */
-class SplitCompatClassAdapter extends ClassVisitor {
- private static final String ANDROID_APP_ACTIVITY_CLASS_NAME = "android/app/Activity";
- private static final String ATTACH_BASE_CONTEXT_METHOD_NAME = "attachBaseContext";
- private static final String ATTACH_BASE_CONTEXT_DESCRIPTOR =
- TypeUtils.getMethodDescriptor(VOID, CONTEXT);
-
- private static final String MODULE_INSTALLER_CLASS_NAME =
- "org/chromium/components/module_installer/ModuleInstaller";
- private static final String GET_INSTANCE_METHOD_NAME = "getInstance";
- private static final String GET_INSTANCE_DESCRIPTOR =
- TypeUtils.getMethodDescriptor(MODULE_INSTALLER_CLASS_NAME);
- private static final String INIT_ACTIVITY_METHOD_NAME = "initActivity";
- private static final String INIT_ACTIVITY_DESCRIPTOR =
- TypeUtils.getMethodDescriptor(VOID, CONTEXT);
-
- private boolean mShouldTransform;
-
- private Set<String> mClassNames;
-
- private ClassLoader mClassLoader;
-
- /**
- * Creates instance of SplitCompatClassAdapter.
- *
- * @param visitor
- * @param classNames Names of classes into which the attachBaseContext method will be
- * injected. Currently, we'll only consider classes for bytecode rewriting only if
- * they inherit directly from android.app.Activity & not already contain
- * attachBaseContext method.
- * @param classLoader
- */
- SplitCompatClassAdapter(ClassVisitor visitor, Set<String> classNames, ClassLoader classLoader) {
- super(Opcodes.ASM5, visitor);
-
- mShouldTransform = false;
- mClassNames = classNames;
- mClassLoader = classLoader;
- }
-
- @Override
- public void visit(int version, int access, String name, String signature, String superName,
- String[] interfaces) {
- super.visit(version, access, name, signature, superName, interfaces);
-
- if (mClassNames.contains(name)) {
- if (!isSubclassOfActivity(name)) {
- throw new RuntimeException(name
- + " should be transformed but does not inherit from android.app.Activity");
- }
-
- mShouldTransform = true;
- }
- }
-
- @Override
- public MethodVisitor visitMethod(
- int access, String name, String descriptor, String signature, String[] exceptions) {
- // Check if current method matches attachBaseContext & we're supposed to emit code - if so,
- // fail.
- if (mShouldTransform && name.equals(ATTACH_BASE_CONTEXT_METHOD_NAME)) {
- throw new RuntimeException(ATTACH_BASE_CONTEXT_METHOD_NAME + " method already exists");
- }
-
- return super.visitMethod(access, name, descriptor, signature, exceptions);
- }
-
- @Override
- public void visitEnd() {
- if (mShouldTransform) {
- // If we reached this place, it means we're rewriting a class that inherits from
- // Activity and there was no exception thrown due to existence of attachBaseContext
- // method - emit code.
- emitAttachBaseContext();
- }
-
- super.visitEnd();
- }
-
- /**
- * Generates:
- *
- * <pre>
- * protected void attachBaseContext(Context base) {
- * super.attachBaseContext(base);
- * ModuleInstaller.getInstance().initActivity(this);
- * }
- * </pre>
- */
- private void emitAttachBaseContext() {
- MethodVisitor mv = super.visitMethod(ACC_PROTECTED, ATTACH_BASE_CONTEXT_METHOD_NAME,
- ATTACH_BASE_CONTEXT_DESCRIPTOR, null, null);
- mv.visitCode();
- // Push "this" on stack.
- mv.visitVarInsn(ALOAD, 0);
- // Push first method parameter on stack (Context).
- mv.visitVarInsn(ALOAD, 1);
- // Pop argument from stack (Context).
- // Pop target object from stack ("this").
- // Calls attachBaseContext.
- mv.visitMethodInsn(INVOKESPECIAL, ANDROID_APP_ACTIVITY_CLASS_NAME,
- ATTACH_BASE_CONTEXT_METHOD_NAME, ATTACH_BASE_CONTEXT_DESCRIPTOR, false);
- // Push return value on stack (ModuleInstaller).
- // Calls getInstance.
- mv.visitMethodInsn(INVOKESTATIC, MODULE_INSTALLER_CLASS_NAME, GET_INSTANCE_METHOD_NAME,
- GET_INSTANCE_DESCRIPTOR, true);
- // Push "this" on stack.
- mv.visitVarInsn(ALOAD, 0);
- // Pop argument from stack ("this").
- // Pop target object from stack (ModuleInstaller).
- // Calls initActivity.
- mv.visitMethodInsn(INVOKEINTERFACE, MODULE_INSTALLER_CLASS_NAME, INIT_ACTIVITY_METHOD_NAME,
- INIT_ACTIVITY_DESCRIPTOR, true);
- mv.visitInsn(RETURN);
- // Max stack size = 2 (Only push at most 2 before popping).
- // Max locals = 2 ("this" and 1 parameter).
- mv.visitMaxs(2, 2);
- mv.visitEnd();
- }
-
- /**
- * Checks whether passed in class inherits from android.app.Activity.
- * @param name Name of the class to be checked.
- * @return true if class inherits from android.app.Activity, false otherwise.
- */
- private boolean isSubclassOfActivity(String name) {
- Class<?> activityClass = loadClass(ANDROID_APP_ACTIVITY_CLASS_NAME);
- Class<?> candidateClass = loadClass(name);
- return activityClass.isAssignableFrom(candidateClass);
- }
-
- private Class<?> loadClass(String className) {
- try {
- return mClassLoader.loadClass(className.replace('/', '.'));
- } catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/chromium/build/android/constant_pool_refs_to_keep_rules.py b/chromium/build/android/constant_pool_refs_to_keep_rules.py
deleted file mode 100644
index b2452d7261e..00000000000
--- a/chromium/build/android/constant_pool_refs_to_keep_rules.py
+++ /dev/null
@@ -1,223 +0,0 @@
-# Copyright 2019 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 script is used to convert a list of references to corresponding ProGuard
-keep rules, for the purposes of maintaining compatibility between async DFMs
-and synchronously proguarded modules.
-This script take an input file generated from
-//build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java
-during the build phase of an async module.
-"""
-
-from collections import defaultdict
-import argparse
-import sys
-
-# Classes in _IGNORED_PACKAGES do not need explicit keep rules because they are
-# system APIs and are already included in ProGuard configs.
-_IGNORED_PACKAGES = ['java', 'android', 'org.w3c', 'org.xml', 'dalvik']
-
-# Classes in _WHITELIST_PACKAGES are support libraries compiled into chrome
-# that must bypass the _IGNORED_PACKAGES.
-_WHITELIST_PACKAGES = ['android.support']
-
-# TODO(https://crbug.com/968769): Filter may be too broad.
-# Classes in _DFM_FEATURES will be excluded from "keep all members" rule.
-_DFM_FEATURES = [
- 'org.chromium.chrome.autofill_assistant', 'org.chromium.chrome.tab_ui',
- 'org.chromium.chrome.browser.tasks.tab_management', 'org.chromium.chrome.vr'
-]
-
-# Mapping for translating Java bytecode type identifiers to source code type
-# identifiers.
-_TYPE_IDENTIFIER_MAP = {
- 'V': 'void',
- 'Z': 'boolean',
- 'B': 'byte',
- 'S': 'short',
- 'C': 'char',
- 'I': 'int',
- 'J': 'long',
- 'F': 'float',
- 'D': 'double',
-}
-
-
-# Translates DEX TypeDescriptor of the first type found in a given string to
-# its source code type identifier, as described in
-# https://source.android.com/devices/tech/dalvik/dex-format#typedescriptor,
-# and returns the translated type and the starting index of the next type
-# (if present).
-def translate_single_type(typedesc):
- array_count = 0
- translated = ''
- next_index = 0
-
- # In the constant pool, fully qualified names (prefixed by 'L') have a
- # trailing ';' if they are describing the type/return type of a symbol,
- # or the type of arguments passed to a symbol. TypeDescriptor representing
- # primitive types do not have trailing ';'s in any circumstances.
- for i, c in enumerate(typedesc):
- if c == '[':
- array_count += 1
- continue
- if c == 'L':
- # Fully qualified names have no trailing ';' if they are describing the
- # containing class of a reference.
- next_index = typedesc.find(';')
- if next_index == -1:
- next_index = len(typedesc)
- translated = typedesc[i + 1:next_index]
- break
- else:
- translated = _TYPE_IDENTIFIER_MAP[c]
- next_index = i
- break
-
- translated += '[]' * array_count
- return translated, next_index + 1
-
-
-# Convert string of method argument types read from constant pool to
-# corresponding list of srouce code type identifiers.
-def parse_args_list(args_list):
- parsed_args = []
- start_index = 0
-
- while start_index < len(args_list):
- args_list = args_list[start_index:]
- translated_arg, start_index = translate_single_type(args_list)
- parsed_args.append(translated_arg)
-
- return parsed_args
-
-
-def add_to_refs(class_name, keep_entry, dep_refs):
- # Add entry to class's keep rule if entry is not the empty string
- if class_name in dep_refs and keep_entry:
- dep_refs[class_name].append(keep_entry)
- else:
- dep_refs[class_name] = [keep_entry]
-
-
-def should_include_class_path(class_path):
- """ Check whether a class_path should be added as keep rule.
- Conditions:
- - Class is auto-generated (Lambdas/Nested, for example $)
- - Class is not in a DFM Module
- - Class is not in a black/white listed package
- """
- nested_class = '$' in class_path
- not_in_dfm = all(not class_path.startswith(f) for f in _DFM_FEATURES)
- allowed_packages = not (any(
- class_path.startswith(p)
- for p in _IGNORED_PACKAGES) and all(not class_path.startswith(p)
- for p in _WHITELIST_PACKAGES))
- return nested_class or (not_in_dfm and allowed_packages)
-
-
-def main(argv):
- dep_refs = defaultdict(list)
- extended_and_implemented_classes = set()
-
- parser = argparse.ArgumentParser()
- parser.add_argument(
- '--input-file',
- required=True,
- help='Path to constant pool reference output.')
- parser.add_argument(
- '--output-file',
- required=True,
- help='Path to write corresponding keep rules to')
- args = parser.parse_args(argv[1:])
-
- with open(args.input_file, 'r') as constant_pool_refs:
- for line in constant_pool_refs:
- line = line.rstrip().replace('/', '.')
- # Ignore any references specified by the list of
- # _IGNORED_PACKAGES and not in _WHITELIST_PACKAGES.
- if (any(line.startswith(p) for p in _IGNORED_PACKAGES)
- and all(not line.startswith(p) for p in _WHITELIST_PACKAGES)):
- continue
-
- reflist = line.split(',')
-
- # Lines denoting super classes and implemented interface references do
- # not contain additional information and thus have reflist size 1.
- # Store these as a separate set as they require full keep rules.
- if len(reflist) == 1:
- extended_and_implemented_classes.add(reflist[0])
- continue
-
- class_name = reflist[0]
- member_name = reflist[1]
- member_info = reflist[2]
- keep_entry = ''
-
- # When testing with the VR module, all class names read from constant
- # pool output that were prefixed with '[' matched references to the
- # overridden clone() method of the Object class. These seem to correspond
- # to Java enum types defined within classes.
- # It is not entirely clear whether or not this always represents
- # an enum, why enums would be represented as such in the constant pool,
- # or how we should go about keeping these references. For the moment,
- # ignoring these references does not impact compatibility between
- # modules.
- if class_name.startswith('['):
- continue
-
- # Ignore R(esources) files that are from the same module.
- if ('$' in class_name
- and any(class_name.startswith(f) for f in _DFM_FEATURES)):
- continue
-
- # If member_info starts with '(', member is a method, otherwise member
- # is a field.
- # Format keep entries as per ProGuard documentation
- # guardsquare.com/en/products/proguard/manual/usage#classspecification.
- if member_info.startswith('('):
- args_list, return_type = member_info.split(')')
- args_list = parse_args_list(args_list[1:])
- if member_name == '<init>':
- # No return type specified for constructors.
- return_type = ''
- else:
- return_type = translate_single_type(return_type)[0]
-
- # Include types of function arguments.
- for arg_type in args_list:
- if should_include_class_path(arg_type):
- extended_and_implemented_classes.add(arg_type)
-
- # Include the actual class when it's a constructor.
- if member_name == '<init>':
- if should_include_class_path(class_name):
- extended_and_implemented_classes.add(class_name)
- continue
-
- keep_entry = '%s %s(%s);' % (return_type, member_name,
- ', '.join(args_list))
- else:
- keep_entry = '%s %s;' % (translate_single_type(member_info)[0],
- member_name)
-
- dep_refs[class_name].append(keep_entry)
-
- with open(args.output_file, 'w') as keep_rules:
- # Write super classes and implemented interfaces to keep rules.
- for super_class in sorted(extended_and_implemented_classes):
- keep_rules.write('-keep class %s { *; }\n' % (super_class.rstrip()))
- keep_rules.write('\n')
- # Write all other class references to keep rules.
- for c in sorted(dep_refs.iterkeys()):
- if c in extended_and_implemented_classes:
- continue
- class_keeps = '\n '.join(dep_refs[c])
- keep_rules.write('-keep class %s {\n %s\n}\n' % (c, class_keeps))
- keep_rules.write('\n')
-
-
-if __name__ == '__main__':
- main(sys.argv)
diff --git a/chromium/build/android/constant_pool_refs_to_keep_rules_test.py b/chromium/build/android/constant_pool_refs_to_keep_rules_test.py
deleted file mode 100644
index 6f281e26738..00000000000
--- a/chromium/build/android/constant_pool_refs_to_keep_rules_test.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright 2019 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 unittest
-import re
-import os
-
-
-class TestProguardRuleGeneration(unittest.TestCase):
- """
- This script is used to test a ProGuard keep rules for the purposes
- of maintaining compatibility between async DFMs and synchronously
- proguarded modules.
-
- The rules are often generated by constant_pool_refs_to_keep_rules.py
-
- This test can be run manually. Example:
- python build/android/constant_pool_refs_to_keep_rules_test.py -v
- """
-
- # Make sure this variable is set accordingly.
- # It should point to a proguard file.
- PROGUARD_FILE_PATH = os.path.join(
- os.path.dirname(__file__),
- "../../chrome/android/features/tab_ui/proguard_async.flags")
-
- def test_TabUI_HasRules(self):
- """
- Ensures that a few of the rules used in tabs_ui module are included.
- Although this is far from 100% deterministic, these rules are
- created by code that exercise different parts of the rule generation code.
- """
-
- rules = set()
- with open(self.PROGUARD_FILE_PATH, 'r') as proguard_rules:
- for line in proguard_rules:
- if line.startswith('-keep'):
- rule = re.search('class (.+?) {', line).group(1)
- rules.add(rule)
-
- # The following rules test most of the use cases for
- # rules that can be added automatically.
- self.assertIn('org.chromium.ui.modelutil.PropertyModel', rules)
- self.assertIn('org.chromium.ui.modelutil.PropertyModel', rules)
- self.assertIn('org.chromium.ui.modelutil.PropertyKey', rules)
- self.assertIn('org.chromium.chrome.browser.toolbar.ToolbarManager', rules)
- self.assertIn('org.chromium.base.Supplier', rules)
- self.assertIn('android.support.v7.widget.helper.ItemTouchHelper', rules)
- self.assertIn(
- 'android.support.v7.widget.helper.ItemTouchHelper$SimpleCallback',
- rules)
- self.assertIn('android.support.v7.widget.helper.ItemTouchHelper$Callback',
- rules)
- self.assertIn('android.support.v4.content.ContextCompat', rules)
- self.assertIn('android.support.v7.widget.GridLayoutManager', rules)
- self.assertIn('android.support.v4.content.res.ResourcesCompat', rules)
- self.assertIn(
- 'org.chromium.chrome.browser.tasks.tabgroup.TabGroupModelFilter', rules)
- self.assertIn('android.support.v7.widget.RecyclerView$ViewHolder', rules)
- self.assertIn('android.support.v7.widget.RecyclerView', rules)
- self.assertIn('org.chromium.ui.modelutil.SimpleRecyclerViewMcpBase', rules)
- self.assertIn('org.chromium.ui.modelutil.RecyclerViewAdapter', rules)
-
- # The following rules need to be added manually.
- self.assertNotIn(
- 'org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager' +
- '$FullscreenListener$$CC', rules)
- self.assertNotIn(
- 'org.chromium.chrome.browser.widget.bottomsheet.BottomSheet' +
- '$BottomSheetContent$$CC', rules)
- self.assertNotIn('org.chromium.ui.widget.RoundedCornerImageView', rules)
- self.assertNotIn(
- 'android.support.v4.graphics.drawable.RoundedBitmapDrawable', rules)
-
- def test_TabUI_HasNoDuplicateRules(self):
- """
- Ensures that there are no duplicate keep rules
- """
-
- rules = set()
- with open(self.PROGUARD_FILE_PATH, 'r') as proguard_rules:
- for line in proguard_rules:
- if line.startswith('-keep'):
- rule = re.search('class (.+?) {', line).group(1)
- self.assertNotIn(rule, rules)
- rules.add(rule)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/chromium/build/android/devil_chromium.json b/chromium/build/android/devil_chromium.json
index 6cb7608c9ee..4734deccf34 100644
--- a/chromium/build/android/devil_chromium.json
+++ b/chromium/build/android/devil_chromium.json
@@ -125,6 +125,15 @@
]
}
}
+ },
+ "bundletool": {
+ "file_info": {
+ "default": {
+ "local_paths": [
+ "../../third_party/android_build_tools/bundletool/bundletool-all-0.10.3.jar"
+ ]
+ }
+ }
}
}
}
diff --git a/chromium/build/android/docs/README.md b/chromium/build/android/docs/README.md
index b6f0a6e9c24..cecccf22f2a 100644
--- a/chromium/build/android/docs/README.md
+++ b/chromium/build/android/docs/README.md
@@ -3,6 +3,7 @@
* [android_app_bundles.md](android_app_bundles.md)
* [build_config.md](build_config.md)
* [coverage.md](coverage.md)
+* [java_toolchain.md](java_toolchain.md)
* [lint.md](lint.md)
* [life_of_a_resource.md](life_of_a_resource.md)
* [../incremental_install/README.md](../incremental_install/README.md)
diff --git a/chromium/build/android/docs/class_verification_failures.md b/chromium/build/android/docs/class_verification_failures.md
index bf9a8a2952c..36ee97ee712 100644
--- a/chromium/build/android/docs/class_verification_failures.md
+++ b/chromium/build/android/docs/class_verification_failures.md
@@ -127,7 +127,7 @@ look as follows:
* These need to exist in a separate class so that Android framework can successfully verify
* classes without encountering the new APIs.
*/
-@DoNotInline
+@VerifiesOnOMR1
@TargetApi(Build.VERSION_CODES.O_MR1)
public class ApiHelperForOMR1 {
private ApiHelperForOMR1() {}
@@ -136,8 +136,8 @@ public class ApiHelperForOMR1 {
}
```
-* `@DoNotInline`: this is a chromium-defined annotation to tell proguard (and
- similar tools) not to inline this class or its methods (since that would
+* `@VerifiesOnO_MR1`: this is a chromium-defined annotation to tell proguard
+ (and similar tools) not to inline this class or its methods (since that would
defeat the point of out-of-lining!)
* `@TargetApi(Build.VERSION_CODES.O_MR1)`: this tells Android Lint it's OK to
use OMR1 APIs since this class is only used on OMR1 and above. Substitute
diff --git a/chromium/build/android/docs/coverage.md b/chromium/build/android/docs/coverage.md
index 6ea548aed78..35cd80988a1 100644
--- a/chromium/build/android/docs/coverage.md
+++ b/chromium/build/android/docs/coverage.md
@@ -17,7 +17,7 @@ class files and runtime **.exec** files. Then we need to process them using the
```gn
target_os = "android"
- jacoco_coverage = true
+ use_jacoco_coverage = true
```
Now when building, pre-instrumented files will be created in the build directory.
diff --git a/chromium/build/android/docs/java_toolchain.md b/chromium/build/android/docs/java_toolchain.md
new file mode 100644
index 00000000000..fed7654b526
--- /dev/null
+++ b/chromium/build/android/docs/java_toolchain.md
@@ -0,0 +1,152 @@
+# Building Dex
+
+This doc aims to describe the Chrome build process that takes a set of `.java`
+files and turns them into a `classes.dex` file.
+
+[TOC]
+
+## Core GN Target Types
+
+The following have `supports_android` and `requires_android` set to false by
+default:
+* `java_library()`: Compiles `.java` -> `.jar`
+* `java_prebuilt()`: Imports a prebuilt `.jar` file.
+
+The following have `supports_android` and `requires_android` set to true. They
+also have a default `jar_excluded_patterns` set (more on that later):
+* `android_library()`
+* `android_java_prebuilt()`
+
+All targets names must end with "_java" so that the build system can distinguish
+them from non-java targets (or [other variations](https://cs.chromium.org/chromium/src/build/config/android/internal_rules.gni?rcl=ec2c17d7b4e424e060c3c7972842af87343526a1&l=20)).
+
+## Step 1a: Compile with javac
+
+This step is the only step that does not apply to prebuilt targets.
+
+* All `.java` files in a target are compiled by `javac` into `.class` files.
+ * This includes `.java` files that live within `.srcjar` files, referenced
+ through `srcjar_deps`.
+* The `classpath` used when compiling a target is comprised of `.jar` files of
+ its deps.
+ * When deps are library targets, the Step 1 `.jar` file is used.
+ * When deps are prebuilt targets, the original `.jar` file is used.
+ * All `.jar` processing done in subsequent steps does not impact compilation
+ classpath.
+* `.class` files are zipped into an output `.jar` file.
+* There is **no support** for incremental compilation at this level.
+ * If one source file changes within a library, then the entire library is
+ recompiled.
+ * Prefer smaller targets to avoid slow compiles.
+
+## Step 1b: Compile with ErrorProne
+
+This step can be disabled via GN arg: `use_errorprone_java_compiler = false`
+
+* Concurrently with step 1a: [ErrorProne] compiles java files and checks for bug
+ patterns, including some [custom to Chromium][ep_plugins].
+* ErrorProne used to replace step 1a, but was changed to a concurrent step after
+ being identified as being slower.
+
+[ErrorProne]: https://errorprone.info/
+[ep_plugins]: /tools/android/errorprone_plugin/
+
+## Step 2: Creating an .interface.jar
+
+This step happens in parallel with subsequent steps.
+
+* `//third_party/ijar` converts the `.jar` into an `.interface.jar`, which is a
+ copy of the input with all non-public symbols and function bodies removed.
+* Dependant targets use `.interface.jar` files to skip having to be rebuilt
+ when only private implementation details change.
+
+## Step 3: Bytecode Processing
+
+* `//build/android/bytecode` runs on the compiled `.jar` in order to:
+ * Enable Java assertions (when dcheck is enabled).
+ * Assert that libraries have properly declared `deps`.
+
+## Step 4: Desugaring
+
+This step happens only when targets have `supports_android = true`.
+
+* `//third_party/bazel/desugar` converts certain Java 8 constructs, such as
+ lambdas and default interface methods, into constructs that are compatible
+ with Java 7.
+
+## Step 5: Filtering
+
+This step happens only when targets that have `jar_excluded_patterns` or
+`jar_included_patterns` set (e.g. all `android_` targets).
+
+* Remove `.class` files that match the filters from the `.jar`. These `.class`
+ files are generally those that are re-created with different implementations
+ further on in the build process.
+ * E.g.: `R.class` files - a part of [Android Resources].
+ * E.g.: `GEN_JNI.class` - a part of our [JNI] glue.
+ * E.g.: `AppHooksImpl.class` - how `chrome_java` wires up different
+ implementations for [non-public builds][apphooks].
+
+[JNI]: /base/android/jni_generator/README.md
+[Android Resources]: life_of_a_resource.md
+[apphooks]: /chrome/android/java/src/org/chromium/chrome/browser/AppHooksImpl.java
+
+## Step 6: Instrumentation
+
+This step happens only when this GN arg is set: `use_jacoco_coverage = true`
+
+* [Jacoco] adds instrumentation hooks to methods.
+
+[Jacoco]: https://www.eclemma.org/jacoco/
+
+## Step 7: Copy to lib.java
+
+* The `.jar` is copied into `$root_build_dir/lib.java` (under target-specific
+ subdirectories) so that it will be included by bot archive steps.
+ * These `.jar` files are the ones used when running `java_binary` and
+ `junit_binary` targets.
+
+## Step 8: Per-Library Dexing
+
+This step happens only when targets have `supports_android = true`.
+
+* [d8] converts `.jar` files contain `.class` files into `.dex.jar` files
+ containing `.dex` files.
+* Dexing is incremental - it will reuse dex'ed classes from a previous build if
+ the corresponding `.class` file is unchanged.
+* These per-library `.dex.jar` files are used directly by [incremental install],
+ and are inputs to the Apk step when `enable_proguard = false`.
+ * Even when `is_java_debug = false`, many apk targets do not enable ProGuard
+ (e.g. unit tests).
+
+[d8]: https://developer.android.com/studio/command-line/d8
+[incremental install]: /build/android/incremental_install/README.md
+
+## Step 9: Apk / Bundle Module Compile
+
+* Each `android_apk` and `android_bundle_module` template has a nested
+ `java_library` target. The nested library includes final copies of files
+ stripped out by prior filtering steps. These files include:
+ * Final `R.java` files, created by `compile_resources.py`.
+ * Final `GEN_JNI.java` for JNI glue.
+ * `BuildConfig.java` and `NativeLibraries.java` (//base dependencies).
+
+## Step 10: Final Dexing
+
+When `is_java_debug = true`:
+* [d8] merges all library `.dex.jar` files into a final `.dex.zip`.
+
+When `is_java_debug = false`:
+* [R8] performs whole-program optimization on all library `lib.java` `.jar`
+ files and outputs a final `.dex.zip`.
+ * For App Bundles, R8 creates a single `.dex.zip` with the code from all
+ modules.
+
+[R8]: https://r8.googlesource.com/r8
+
+## Step 11: Bundle Module Dex Splitting
+
+This step happens only when `is_java_debug = false`.
+
+* [dexsplitter.py] splits the single `.dex.zip` into per-module `.dex.zip`
+ files.
diff --git a/chromium/build/android/generate_jacoco_report.py b/chromium/build/android/generate_jacoco_report.py
index 927f520ee9c..e857b2def62 100755
--- a/chromium/build/android/generate_jacoco_report.py
+++ b/chromium/build/android/generate_jacoco_report.py
@@ -130,7 +130,7 @@ def main():
for f in sources_json_files:
with open(f, 'r') as json_file:
data = json.load(json_file)
- class_files.append(data['input_path'])
+ class_files.extend(data['input_path'])
source_dirs.extend(data['source_dirs'])
# Fix source directories as direct parent of Java packages.
diff --git a/chromium/build/android/gradle/generate_gradle.py b/chromium/build/android/gradle/generate_gradle.py
index 08be3e99238..3b8b3c29445 100755
--- a/chromium/build/android/gradle/generate_gradle.py
+++ b/chromium/build/android/gradle/generate_gradle.py
@@ -45,6 +45,7 @@ _CMAKE_FILE = 'CMakeLists.txt'
_MODULE_ALL = '_all'
_SRC_INTERNAL = os.path.join(
os.path.dirname(host_paths.DIR_SOURCE_ROOT), 'src-internal')
+_INSTRUMENTATION_TARGET_SUFFIX = '_test_apk__test_apk__apk'
_DEFAULT_TARGETS = [
'//android_webview/test/embedded_test_server:aw_net_test_support_apk',
@@ -733,8 +734,8 @@ def _CombineTestEntries(entries):
android_test_entries = collections.defaultdict(list)
for entry in entries:
target_name = entry.GnTarget()
- if (target_name.endswith('_test_apk__apk') and
- 'apk_under_test' in entry.Gradle()):
+ if (target_name.endswith(_INSTRUMENTATION_TARGET_SUFFIX)
+ and 'apk_under_test' in entry.Gradle()):
apk_name = entry.Gradle()['apk_under_test']
android_test_entries[apk_name].append(entry)
else:
@@ -848,8 +849,10 @@ def main():
targets = _QueryForAllGnTargets(output_dir)
else:
assert not args.native_targets, 'Native editing requires --all.'
- targets = [re.sub(r'_test_apk$', '_test_apk__apk', t)
- for t in targets_from_args]
+ targets = [
+ re.sub(r'_test_apk$', _INSTRUMENTATION_TARGET_SUFFIX, t)
+ for t in targets_from_args
+ ]
# Necessary after "gn clean"
if not os.path.exists(os.path.join(output_dir, 'build_vars.txt')):
_RunGnGen(output_dir)
@@ -884,7 +887,7 @@ def main():
main_entries = [
e for e in main_entries
if (e.GetType() in BASE_TYPES or e.GnTarget() in targets_from_args
- or e.GnTarget().endswith('_test_apk__apk'))
+ or e.GnTarget().endswith(_INSTRUMENTATION_TARGET_SUFFIX))
]
if args.split_projects:
diff --git a/chromium/build/android/gradle/root.jinja b/chromium/build/android/gradle/root.jinja
index 3895fc43111..38d7387573d 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.6.0-alpha03"
+ classpath "com.android.tools.build:gradle:3.6.0-alpha10"
{% elif channel == 'beta' %}
classpath "com.android.tools.build:gradle:3.1.0-beta4"
{% else %}
diff --git a/chromium/build/android/gyp/bundletool.py b/chromium/build/android/gyp/bundletool.py
index 2201cc12373..65be46e31dd 100755
--- a/chromium/build/android/gyp/bundletool.py
+++ b/chromium/build/android/gyp/bundletool.py
@@ -13,6 +13,8 @@ import os
import subprocess
import sys
+from util import build_utils
+
# Assume this is stored under build/android/gyp/
BUNDLETOOL_DIR = os.path.abspath(os.path.join(
__file__, '..', '..', '..', '..', 'third_party', 'android_build_tools',
@@ -24,7 +26,7 @@ BUNDLETOOL_JAR_PATH = os.path.join(
BUNDLETOOL_DIR, 'bundletool-all-%s.jar' % BUNDLETOOL_VERSION)
def RunBundleTool(args):
- args = ['java', '-jar', BUNDLETOOL_JAR_PATH] + args
+ args = [build_utils.JAVA_PATH, '-jar', BUNDLETOOL_JAR_PATH] + args
logging.debug(' '.join(args))
subprocess.check_call(args)
diff --git a/chromium/build/android/gyp/bytecode_processor.py b/chromium/build/android/gyp/bytecode_processor.py
index adff1625056..76775d3958a 100755
--- a/chromium/build/android/gyp/bytecode_processor.py
+++ b/chromium/build/android/gyp/bytecode_processor.py
@@ -36,12 +36,6 @@ def main(argv):
_AddSwitch(parser, '--enable-assert')
_AddSwitch(parser, '--enable-thread-annotations')
_AddSwitch(parser, '--enable-check-class-path')
- parser.add_argument('--enable-class-deps-output', default='')
- parser.add_argument(
- '--split-compat-class-names',
- action='append',
- default=[],
- help='Names of classes that need to be made SplitCompat-enabled.')
args = parser.parse_args(argv)
sdk_jars = build_utils.ParseGnList(args.sdk_classpath_jars)
@@ -54,9 +48,6 @@ def main(argv):
for a in args.extra_jars:
extra_classpath_jars.extend(build_utils.ParseGnList(a))
- split_compat_class_names = build_utils.ParseGnList(
- args.split_compat_class_names)
-
if args.verbose:
verbose = '--verbose'
else:
@@ -66,11 +57,8 @@ def main(argv):
args.script, args.input_jar, args.output_jar, verbose, args.is_prebuilt,
args.enable_assert, args.enable_custom_resources,
args.enable_thread_annotations, args.enable_check_class_path,
- args.enable_class_deps_output,
str(len(sdk_jars))
- ] + sdk_jars + [str(len(direct_jars))] + direct_jars + [
- str(len(split_compat_class_names))
- ] + split_compat_class_names + extra_classpath_jars)
+ ] + sdk_jars + [str(len(direct_jars))] + direct_jars + extra_classpath_jars)
subprocess.check_call(cmd)
diff --git a/chromium/build/android/gyp/compile_resources.py b/chromium/build/android/gyp/compile_resources.py
index 95b8c2aa0d7..4ac6d64bf18 100755
--- a/chromium/build/android/gyp/compile_resources.py
+++ b/chromium/build/android/gyp/compile_resources.py
@@ -23,6 +23,7 @@ import shutil
import subprocess
import sys
import tempfile
+import textwrap
import zipfile
from xml.etree import ElementTree
@@ -50,13 +51,6 @@ _PNG_WEBP_BLACKLIST_PATTERN = re.compile('|'.join([
r'.*daydream_icon_.*\.png']))
-def _ListToDictionary(lst, separator):
- """Splits each element of the passed-in |lst| using |separator| and creates
- dictionary treating first element of the split as the key and second as the
- value."""
- return dict(item.split(separator, 1) for item in lst)
-
-
def _ParseArgs(args):
"""Parses command line options.
@@ -100,17 +94,13 @@ def _ParseArgs(args):
input_opts.add_argument(
'--package-id',
- help='Custom package ID for resources (instead of 0x7f). Cannot be used '
- 'with --shared-resources.')
-
- input_opts.add_argument(
- '--package-name-to-id-mapping',
- help='List containing mapping from package name to package IDs that will '
- 'be assigned.')
+ type=int,
+ help='Decimal integer representing custom package ID for resources '
+ '(instead of 127==0x7f). Cannot be used with --shared-resources.')
input_opts.add_argument(
'--package-name',
- help='Package name that will be used to determine package ID.')
+ help='Package name that will be used to create R class.')
input_opts.add_argument(
'--rename-manifest-package', help='Package name to force AAPT to use.')
@@ -266,11 +256,8 @@ def _ParseArgs(args):
parser.error(
'--resources-path-map-out-path requires --short-resource-paths')
- if options.package_name_to_id_mapping:
- package_names_list = build_utils.ParseGnList(
- options.package_name_to_id_mapping)
- options.package_name_to_id_mapping = _ListToDictionary(
- package_names_list, '=')
+ if options.package_id and options.shared_resources:
+ parser.error('--package-id and --shared-resources are mutually exclusive')
return options
@@ -423,19 +410,6 @@ def _MoveImagesToNonMdpiFolders(res_root):
return renamed_paths
-def _PackageIdFromOptions(options):
- package_id = None
- if options.package_id:
- package_id = options.package_id
- if options.package_name:
- package_id = options.package_name_to_id_mapping.get(options.package_name)
- if package_id is None:
- raise Exception(
- 'Package name %s is not present in package_name_to_id_mapping.' %
- options.package_name)
- return package_id
-
-
def _FixManifest(options, temp_dir):
"""Fix the APK's AndroidManifest.xml.
@@ -684,6 +658,8 @@ def _PackageApk(options, build):
Args:
options: The command-line options.
build: BuildContext object.
+ Returns:
+ The manifest package name for the APK.
"""
dep_subdirs = resource_utils.ExtractDeps(options.dependencies_res_zips,
build.deps_dir)
@@ -751,9 +727,12 @@ def _PackageApk(options, build):
if options.no_xml_namespaces:
link_command.append('--no-xml-namespaces')
- package_id = _PackageIdFromOptions(options)
- if package_id is not None:
- link_command += ['--package-id', package_id, '--allow-reserved-package-id']
+ if options.package_id:
+ link_command += [
+ '--package-id',
+ hex(options.package_id),
+ '--allow-reserved-package-id',
+ ]
fixed_manifest, desired_manifest_package_name = _FixManifest(
options, build.temp_dir)
@@ -787,6 +766,19 @@ def _PackageApk(options, build):
build_utils.CheckOutput(link_command, print_stdout=False, print_stderr=False)
+ if options.proguard_file and (options.shared_resources
+ or options.app_as_shared_lib):
+ # Make sure the R class associated with the manifest package does not have
+ # its onResourcesLoaded method obfuscated or removed, so that the framework
+ # can call it in the case where the APK is being loaded as a library.
+ with open(build.proguard_path, 'a') as proguard_file:
+ keep_rule = '''
+ -keep class {package}.R {{
+ public static void onResourcesLoaded(int);
+ }}
+ '''.format(package=desired_manifest_package_name)
+ proguard_file.write(textwrap.dedent(keep_rule))
+
if options.proto_path and options.arsc_path:
build_utils.CheckOutput([
options.aapt2_path, 'convert', '-o', build.arsc_path, build.proto_path
@@ -799,6 +791,8 @@ def _PackageApk(options, build):
_OptimizeApk(build.optimized_arsc_path, options, build.temp_dir,
build.arsc_path, build.r_txt_path)
+ return desired_manifest_package_name
+
def _OptimizeApk(output, options, temp_dir, unoptimized_path, r_txt_path):
"""Optimize intermediate .ap_ file with aapt2.
@@ -921,7 +915,7 @@ def main(args):
build_utils.MakeDirectory(debug_temp_resources_dir)
with resource_utils.BuildContext(debug_temp_resources_dir) as build:
- _PackageApk(options, build)
+ manifest_package_name = _PackageApk(options, build)
# If --shared-resources-whitelist is used, the all resources listed in
# the corresponding R.txt file will be non-final, and an onResourcesLoaded()
@@ -953,19 +947,26 @@ def main(args):
custom_root_package_name = options.package_name
grandparent_custom_package_name = options.r_java_root_package_name
+ if options.shared_resources or options.app_as_shared_lib:
+ package_for_library = manifest_package_name
+ else:
+ package_for_library = None
+
resource_utils.CreateRJavaFiles(
- build.srcjar_dir, None, build.r_txt_path, options.extra_res_packages,
- options.extra_r_text_files, rjava_build_options, options.srcjar_out,
- custom_root_package_name, grandparent_custom_package_name,
- options.extra_main_r_text_files)
+ build.srcjar_dir, package_for_library, build.r_txt_path,
+ options.extra_res_packages, options.extra_r_text_files,
+ rjava_build_options, options.srcjar_out, custom_root_package_name,
+ grandparent_custom_package_name, options.extra_main_r_text_files)
build_utils.ZipDir(build.srcjar_path, build.srcjar_dir)
# Sanity check that the created resources have the expected package ID.
- expected_id = _PackageIdFromOptions(options)
- if expected_id is None:
- expected_id = '0x00' if options.shared_resources else '0x7f'
- expected_id = int(expected_id, 16)
+ if options.package_id:
+ expected_id = options.package_id
+ elif options.shared_resources:
+ expected_id = 0
+ else:
+ expected_id = 127 # == '0x7f'.
_, package_id = resource_utils.ExtractArscPackage(
options.aapt2_path,
build.arsc_path if options.arsc_path else build.proto_path)
diff --git a/chromium/build/android/gyp/create_app_bundle.py b/chromium/build/android/gyp/create_app_bundle.py
index eeb665bb41b..ae3f4662b1b 100755
--- a/chromium/build/android/gyp/create_app_bundle.py
+++ b/chromium/build/android/gyp/create_app_bundle.py
@@ -411,12 +411,17 @@ def main(args):
with open(tmp_bundle_config, 'w') as f:
f.write(bundle_config)
- cmd_args = ['java', '-jar', bundletool.BUNDLETOOL_JAR_PATH, 'build-bundle']
- cmd_args += ['--modules=%s' % ','.join(module_zips)]
- cmd_args += ['--output=%s' % tmp_unsigned_bundle]
- cmd_args += ['--config=%s' % tmp_bundle_config]
-
- build_utils.CheckOutput(cmd_args, print_stdout=True, print_stderr=True)
+ cmd_args = [
+ build_utils.JAVA_PATH, '-jar', bundletool.BUNDLETOOL_JAR_PATH,
+ 'build-bundle', '--modules=' + ','.join(module_zips),
+ '--output=' + tmp_unsigned_bundle, '--config=' + tmp_bundle_config
+ ]
+
+ build_utils.CheckOutput(
+ cmd_args,
+ print_stdout=True,
+ print_stderr=True,
+ stderr_filter=build_utils.FilterReflectiveAccessJavaWarnings)
if options.keystore_path:
# NOTE: As stated by the public documentation, apksigner cannot be used
diff --git a/chromium/build/android/gyp/create_bundle_wrapper_script.pydeps b/chromium/build/android/gyp/create_bundle_wrapper_script.pydeps
index fb35bc02ea1..a83e696a26d 100644
--- a/chromium/build/android/gyp/create_bundle_wrapper_script.pydeps
+++ b/chromium/build/android/gyp/create_bundle_wrapper_script.pydeps
@@ -37,6 +37,7 @@
../../../third_party/catapult/devil/devil/android/sdk/aapt.py
../../../third_party/catapult/devil/devil/android/sdk/adb_wrapper.py
../../../third_party/catapult/devil/devil/android/sdk/build_tools.py
+../../../third_party/catapult/devil/devil/android/sdk/bundletool.py
../../../third_party/catapult/devil/devil/android/sdk/intent.py
../../../third_party/catapult/devil/devil/android/sdk/keyevent.py
../../../third_party/catapult/devil/devil/android/sdk/split_select.py
diff --git a/chromium/build/android/gyp/create_java_binary_script.py b/chromium/build/android/gyp/create_java_binary_script.py
index 4469381c7c0..7ea0efb22d8 100755
--- a/chromium/build/android/gyp/create_java_binary_script.py
+++ b/chromium/build/android/gyp/create_java_binary_script.py
@@ -37,13 +37,14 @@ if os.getcwd() != self_dir:
offset = os.path.relpath(self_dir, os.getcwd())
classpath = [os.path.join(offset, p) for p in classpath]
bootclasspath = [os.path.join(offset, p) for p in bootclasspath]
-java_cmd = ["java"]
-# This is a simple argparser for jvm and jar arguments.
+java_cmd = ['java']
+# This is a simple argparser for jvm, jar, and classpath arguments.
parser = argparse.ArgumentParser()
parser.add_argument('--jar-args')
parser.add_argument('--jvm-args')
-
+parser.add_argument('--classpath')
known_args, unknown_args = parser.parse_known_args(sys.argv[1:])
+
if known_args.jvm_args:
jvm_arguments = known_args.jvm_args.strip('"').split()
java_cmd.extend(jvm_arguments)
@@ -54,14 +55,17 @@ if known_args.jar_args:
else:
jar_arguments = unknown_args
+if known_args.classpath:
+ classpath += [known_args.classpath]
+
{noverify_flag}
if bootclasspath:
- java_cmd.append("-Xbootclasspath/p:" + ":".join(bootclasspath))
+ java_cmd.append('-Xbootclasspath/p:' + ':'.join(bootclasspath))
java_cmd.extend(
- ["-classpath", ":".join(classpath), "-enableassertions", \"{main_class}\"])
+ ['-classpath', ':'.join(classpath), '-enableassertions', \"{main_class}\"])
java_cmd.extend(extra_program_args)
java_cmd.extend(jar_arguments)
-os.execvp("java", java_cmd)
+os.execvp('java', java_cmd)
"""
def main(argv):
diff --git a/chromium/build/android/gyp/desugar.py b/chromium/build/android/gyp/desugar.py
index b9d04059e55..407b8f2c59c 100755
--- a/chromium/build/android/gyp/desugar.py
+++ b/chromium/build/android/gyp/desugar.py
@@ -31,7 +31,7 @@ def main():
options.classpath = build_utils.ParseGnList(options.classpath)
cmd = [
- 'java',
+ build_utils.JAVA_PATH,
'-jar',
options.desugar_jar,
'--input',
@@ -46,7 +46,10 @@ def main():
cmd += ['--bootclasspath_entry', path]
for path in options.classpath:
cmd += ['--classpath_entry', path]
- build_utils.CheckOutput(cmd, print_stdout=False)
+ build_utils.CheckOutput(
+ cmd,
+ print_stdout=False,
+ stderr_filter=build_utils.FilterReflectiveAccessJavaWarnings)
if options.depfile:
build_utils.WriteDepfile(
diff --git a/chromium/build/android/gyp/dex.py b/chromium/build/android/gyp/dex.py
index a2e17b4e282..043a08ab272 100755
--- a/chromium/build/android/gyp/dex.py
+++ b/chromium/build/android/gyp/dex.py
@@ -27,7 +27,27 @@ def _ParseArgs(args):
build_utils.AddDepfileOption(parser)
parser.add_argument('--output', required=True, help='Dex output path.')
- parser.add_argument('--input-list', help='GN-list of additional input paths.')
+ parser.add_argument(
+ '--class-inputs',
+ action='append',
+ help='GN-list of .jars with .class files.')
+ parser.add_argument(
+ '--class-inputs-filearg',
+ action='append',
+ help='GN-list of .jars with .class files (added to depfile).')
+ parser.add_argument(
+ '--dex-inputs', action='append', help='GN-list of .jars with .dex files.')
+ parser.add_argument(
+ '--dex-inputs-filearg',
+ action='append',
+ help='GN-list of .jars with .dex files (added to depfile).')
+ parser.add_argument(
+ '--incremental-dir',
+ help='Path of directory to put intermediate dex files.')
+ parser.add_argument(
+ '--merge-incrementals',
+ action='store_true',
+ help='Combine all per-class .dex files into a single classes.dex')
parser.add_argument(
'--main-dex-list-path',
help='File containing a list of the classes to include in the main dex.')
@@ -35,7 +55,7 @@ def _ParseArgs(args):
'--multi-dex',
action='store_true',
help='Allow multiple dex files within output.')
- parser.add_argument('--d8-jar-path', required=True, help='Path to D8 jar.')
+ parser.add_argument('--r8-jar-path', required=True, help='Path to R8 jar.')
parser.add_argument(
'--release',
action='store_true',
@@ -44,7 +64,6 @@ def _ParseArgs(args):
'main dex and keeps all line number information, and then some.')
parser.add_argument(
'--min-api', help='Minimum Android API level compatibility.')
- parser.add_argument('inputs', nargs='*', help='Input .jar files.')
group = parser.add_argument_group('Dexlayout')
group.add_argument(
@@ -79,8 +98,12 @@ def _ParseArgs(args):
if options.main_dex_list_path and not options.multi_dex:
parser.error('--main-dex-list-path is unused if multidex is not enabled')
- if options.input_list:
- options.inputs += build_utils.ParseGnList(options.input_list)
+ options.class_inputs = build_utils.ParseGnList(options.class_inputs)
+ options.class_inputs_filearg = build_utils.ParseGnList(
+ options.class_inputs_filearg)
+ options.dex_inputs = build_utils.ParseGnList(options.dex_inputs)
+ options.dex_inputs_filearg = build_utils.ParseGnList(
+ options.dex_inputs_filearg)
return options
@@ -249,48 +272,156 @@ def _PerformDexlayout(tmp_dir, tmp_dex_output, options):
return final_output
-def _PerformDexing(options):
- dex_cmd = ['java', '-jar', options.d8_jar_path, '--no-desugaring']
- if options.multi_dex and options.main_dex_list_path:
- dex_cmd += ['--main-dex-list', options.main_dex_list_path]
- if options.release:
- dex_cmd += ['--release']
- if options.min_api:
- dex_cmd += ['--min-api', options.min_api]
+def _CreateFinalDex(options, d8_inputs, tmp_dir, dex_cmd):
+ tmp_dex_output = os.path.join(tmp_dir, 'tmp_dex_output.zip')
+ if (options.merge_incrementals or options.output.endswith('.dex')
+ or not all(f.endswith('.dex') for f in d8_inputs)):
+ if options.multi_dex and options.main_dex_list_path:
+ # Provides a list of classes that should be included in the main dex file.
+ dex_cmd = dex_cmd + ['--main-dex-list', options.main_dex_list_path]
- with build_utils.TempDir() as tmp_dir:
tmp_dex_dir = os.path.join(tmp_dir, 'tmp_dex_dir')
os.mkdir(tmp_dex_dir)
- _RunD8(dex_cmd, options.inputs, tmp_dex_dir)
+ _RunD8(dex_cmd, d8_inputs, tmp_dex_dir)
+ logging.info('Performed dex merging')
+
dex_files = [os.path.join(tmp_dex_dir, f) for f in os.listdir(tmp_dex_dir)]
- if not options.output.endswith('.dex'):
- tmp_dex_output = os.path.join(tmp_dir, 'tmp_dex_output.zip')
- _ZipAligned(sorted(dex_files), tmp_dex_output)
- else:
- # Output to a .dex file.
+ if options.output.endswith('.dex'):
if len(dex_files) > 1:
raise Exception('%d files created, expected 1' % len(dex_files))
tmp_dex_output = dex_files[0]
+ else:
+ _ZipAligned(sorted(dex_files), tmp_dex_output)
+ else:
+ # Skip dexmerger. Just put all incrementals into the .jar individually.
+ _ZipAligned(sorted(d8_inputs), tmp_dex_output)
+ logging.info('Quick-zipped %d files', len(d8_inputs))
- if options.dexlayout_profile:
- tmp_dex_output = _PerformDexlayout(tmp_dir, tmp_dex_output, options)
+ if options.dexlayout_profile:
+ tmp_dex_output = _PerformDexlayout(tmp_dir, tmp_dex_output, options)
+
+ # The dex file is complete and can be moved out of tmp_dir.
+ shutil.move(tmp_dex_output, options.output)
+
+
+def _IntermediateDexFilePathsFromInputJars(class_inputs, incremental_dir):
+ """Returns a list of all intermediate dex file paths."""
+ dex_files = []
+ for jar in class_inputs:
+ with zipfile.ZipFile(jar, 'r') as z:
+ for subpath in z.namelist():
+ if subpath.endswith('.class'):
+ subpath = subpath[:-5] + 'dex'
+ dex_files.append(os.path.join(incremental_dir, subpath))
+ return dex_files
+
+
+def _DeleteStaleIncrementalDexFiles(dex_dir, dex_files):
+ """Deletes intermediate .dex files that are no longer needed."""
+ all_files = build_utils.FindInDirectory(dex_dir)
+ desired_files = set(dex_files)
+ for path in all_files:
+ if path not in desired_files:
+ os.unlink(path)
+
+
+def _ExtractClassFiles(changes, tmp_dir, class_inputs):
+ classes_list = []
+ for jar in class_inputs:
+ if changes:
+ changed_class_list = set(changes.IterChangedSubpaths(jar))
+ predicate = lambda x: x in changed_class_list and x.endswith('.class')
+ else:
+ predicate = lambda x: x.endswith('.class')
+
+ classes_list.extend(
+ build_utils.ExtractAll(jar, path=tmp_dir, predicate=predicate))
+ return classes_list
+
+
+def _CreateIntermediateDexFiles(changes, options, tmp_dir, dex_cmd):
+ # Create temporary directory for classes to be extracted to.
+ tmp_extract_dir = os.path.join(tmp_dir, 'tmp_extract_dir')
+ os.mkdir(tmp_extract_dir)
+
+ # Check whether changes were to a non-jar file, requiring full re-dex.
+ # E.g. r8.jar updated.
+ rebuild_all = changes.HasStringChanges() or not all(
+ p.endswith('.jar') for p in changes.IterChangedPaths())
+
+ if rebuild_all:
+ changes = None
+ class_files = _ExtractClassFiles(changes, tmp_extract_dir,
+ options.class_inputs)
+ logging.info('Extracted class files: %d', len(class_files))
+
+ # If the only change is deleting a file, class_files will be empty.
+ if class_files:
+ # Dex necessary classes into intermediate dex files.
+ dex_cmd = dex_cmd + ['--intermediate', '--file-per-class']
+ _RunD8(dex_cmd, class_files, options.incremental_dir)
+ logging.info('Dexed class files.')
+
+
+def _OnStaleMd5(changes, options, final_dex_inputs, dex_cmd):
+ logging.info('_OnStaleMd5')
+ with build_utils.TempDir() as tmp_dir:
+ if options.incremental_dir:
+ # Create directory for all intermediate dex files.
+ if not os.path.exists(options.incremental_dir):
+ os.makedirs(options.incremental_dir)
- # The dex file is complete and can be moved out of tmp_dir.
- shutil.move(tmp_dex_output, options.output)
+ _DeleteStaleIncrementalDexFiles(options.incremental_dir, final_dex_inputs)
+ logging.info('Stale files deleted')
+ _CreateIntermediateDexFiles(changes, options, tmp_dir, dex_cmd)
+
+ _CreateFinalDex(options, final_dex_inputs, tmp_dir, dex_cmd)
+ logging.info('Dex finished for: %s', options.output)
def main(args):
+ logging.basicConfig(
+ level=logging.INFO if os.environ.get('DEX_DEBUG') else logging.WARNING,
+ format='%(levelname).1s %(relativeCreated)6d %(message)s')
options = _ParseArgs(args)
- input_paths = list(options.inputs)
+ options.class_inputs += options.class_inputs_filearg
+ options.dex_inputs += options.dex_inputs_filearg
+
+ input_paths = options.class_inputs + options.dex_inputs
if options.multi_dex and options.main_dex_list_path:
input_paths.append(options.main_dex_list_path)
+ input_paths.append(options.r8_jar_path)
+
+ output_paths = [options.output]
+
+ if options.incremental_dir:
+ final_dex_inputs = _IntermediateDexFilePathsFromInputJars(
+ options.class_inputs, options.incremental_dir)
+ output_paths += final_dex_inputs
+ else:
+ final_dex_inputs = list(options.class_inputs)
+ final_dex_inputs += options.dex_inputs
- _PerformDexing(options)
+ dex_cmd = [
+ build_utils.JAVA_PATH, '-jar', options.r8_jar_path, 'd8',
+ '--no-desugaring'
+ ]
+ if options.release:
+ dex_cmd += ['--release']
+ if options.min_api:
+ dex_cmd += ['--min-api', options.min_api]
- build_utils.WriteDepfile(
- options.depfile, options.output, input_paths, add_pydeps=False)
+ build_utils.CallAndWriteDepfileIfStale(
+ lambda changes: _OnStaleMd5(changes, options, final_dex_inputs, dex_cmd),
+ options,
+ depfile_deps=options.class_inputs_filearg + options.dex_inputs_filearg,
+ output_paths=output_paths,
+ input_paths=input_paths,
+ input_strings=dex_cmd + [bool(options.incremental_dir)],
+ pass_changes=True,
+ track_subpaths_whitelist=options.class_inputs)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/dexsplitter.py b/chromium/build/android/gyp/dexsplitter.py
index 926d2cdd502..7bbc066f076 100755
--- a/chromium/build/android/gyp/dexsplitter.py
+++ b/chromium/build/android/gyp/dexsplitter.py
@@ -49,7 +49,7 @@ def _ParseOptions(args):
def _RunDexsplitter(options, output_dir):
cmd = [
- 'java',
+ build_utils.JAVA_PATH,
'-jar',
options.r8_path,
'dexsplitter',
diff --git a/chromium/build/android/gyp/dist_aar.py b/chromium/build/android/gyp/dist_aar.py
index ed823f18b7b..a74037af07a 100755
--- a/chromium/build/android/gyp/dist_aar.py
+++ b/chromium/build/android/gyp/dist_aar.py
@@ -14,16 +14,19 @@ import sys
import tempfile
import zipfile
+from filter_zip import CreatePathTransform
from util import build_utils
_ANDROID_BUILD_DIR = os.path.dirname(os.path.dirname(__file__))
-def _MergeRTxt(r_paths):
+def _MergeRTxt(r_paths, include_globs):
"""Merging the given R.txt files and returns them as a string."""
all_lines = set()
for r_path in r_paths:
+ if include_globs and not build_utils.MatchesGlob(r_path, include_globs):
+ continue
with open(r_path) as f:
all_lines.update(f.readlines())
return ''.join(sorted(all_lines))
@@ -39,18 +42,21 @@ def _MergeProguardConfigs(proguard_configs):
return '\n'.join(ret)
-def _AddResources(aar_zip, resource_zips):
+def _AddResources(aar_zip, resource_zips, include_globs):
"""Adds all resource zips to the given aar_zip.
Ensures all res/values/* files have unique names by prefixing them.
"""
for i, path in enumerate(resource_zips):
+ if include_globs and not build_utils.MatchesGlob(path, include_globs):
+ continue
with zipfile.ZipFile(path) as res_zip:
for info in res_zip.infolist():
data = res_zip.read(info)
dirname, basename = posixpath.split(info.filename)
if 'values' in dirname:
- basename = '{}_{}'.format(basename, i)
+ root, ext = os.path.splitext(basename)
+ basename = '{}_{}{}'.format(root, i, ext)
info.filename = posixpath.join(dirname, basename)
info.filename = posixpath.join('res', info.filename)
aar_zip.writestr(info, data)
@@ -77,6 +83,15 @@ def main(args):
'ABI must be specified.')
parser.add_argument('--abi',
help='ABI (e.g. armeabi-v7a) for native libraries.')
+ parser.add_argument(
+ '--jar-excluded-globs',
+ help='GN-list of globs for paths to exclude in jar.')
+ parser.add_argument(
+ '--jar-included-globs',
+ help='GN-list of globs for paths to include in jar.')
+ parser.add_argument(
+ '--resource-included-globs',
+ help='GN-list of globs for paths to include in R.txt and resources zips.')
options = parser.parse_args(args)
@@ -89,6 +104,12 @@ def main(args):
options.r_text_files = build_utils.ParseGnList(options.r_text_files)
options.proguard_configs = build_utils.ParseGnList(options.proguard_configs)
options.native_libraries = build_utils.ParseGnList(options.native_libraries)
+ options.jar_excluded_globs = build_utils.ParseGnList(
+ options.jar_excluded_globs)
+ options.jar_included_globs = build_utils.ParseGnList(
+ options.jar_included_globs)
+ options.resource_included_globs = build_utils.ParseGnList(
+ options.resource_included_globs)
with tempfile.NamedTemporaryFile(delete=False) as staging_file:
try:
@@ -96,12 +117,18 @@ def main(args):
build_utils.AddToZipHermetic(
z, 'AndroidManifest.xml', src_path=options.android_manifest)
+ path_transform = CreatePathTransform(options.jar_excluded_globs,
+ options.jar_included_globs, [])
with tempfile.NamedTemporaryFile() as jar_file:
- build_utils.MergeZips(jar_file.name, options.jars)
+ build_utils.MergeZips(
+ jar_file.name, options.jars, path_transform=path_transform)
build_utils.AddToZipHermetic(z, 'classes.jar', src_path=jar_file.name)
build_utils.AddToZipHermetic(
- z, 'R.txt', data=_MergeRTxt(options.r_text_files))
+ z,
+ 'R.txt',
+ data=_MergeRTxt(options.r_text_files,
+ options.resource_included_globs))
build_utils.AddToZipHermetic(z, 'public.txt', data='')
if options.proguard_configs:
@@ -109,7 +136,8 @@ def main(args):
z, 'proguard.txt',
data=_MergeProguardConfigs(options.proguard_configs))
- _AddResources(z, options.dependencies_res_zips)
+ _AddResources(z, options.dependencies_res_zips,
+ options.resource_included_globs)
for native_library in options.native_libraries:
libname = os.path.basename(native_library)
diff --git a/chromium/build/android/gyp/dist_aar.pydeps b/chromium/build/android/gyp/dist_aar.pydeps
index da5ea8da23d..d4f9aae9b34 100644
--- a/chromium/build/android/gyp/dist_aar.pydeps
+++ b/chromium/build/android/gyp/dist_aar.pydeps
@@ -2,6 +2,7 @@
# 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
+filter_zip.py
util/__init__.py
util/build_utils.py
util/md5_check.py
diff --git a/chromium/build/android/gyp/filter_zip.py b/chromium/build/android/gyp/filter_zip.py
index 2182042df52..6f854191254 100755
--- a/chromium/build/android/gyp/filter_zip.py
+++ b/chromium/build/android/gyp/filter_zip.py
@@ -18,7 +18,7 @@ _RESOURCE_CLASSES = [
]
-def _CreatePathTransform(exclude_globs, include_globs,
+def CreatePathTransform(exclude_globs, include_globs,
strip_resource_classes_for):
exclude_globs = list(exclude_globs or [])
if strip_resource_classes_for:
@@ -60,8 +60,8 @@ def main():
args.strip_resource_classes_for = build_utils.ParseGnList(
args.strip_resource_classes_for)
- path_transform = _CreatePathTransform(
- args.exclude_globs, args.include_globs, args.strip_resource_classes_for)
+ path_transform = CreatePathTransform(args.exclude_globs, args.include_globs,
+ args.strip_resource_classes_for)
with build_utils.AtomicOutput(args.output) as f:
build_utils.MergeZips(
f.name, [args.input], path_transform=path_transform)
diff --git a/chromium/build/android/gyp/generate_linker_version_script.py b/chromium/build/android/gyp/generate_linker_version_script.py
index 0b6c2ef6968..526d636197b 100755
--- a/chromium/build/android/gyp/generate_linker_version_script.py
+++ b/chromium/build/android/gyp/generate_linker_version_script.py
@@ -42,6 +42,10 @@ def main():
dest='whitelists',
help='Path to an input file containing a whitelist of extra symbols to '
'export, one symbol per line. Multiple files may be specified.')
+ parser.add_argument(
+ '--export-feature-registrations',
+ action='store_true',
+ help='Export JNI_OnLoad_* methods')
options = parser.parse_args()
# JNI_OnLoad is always exported.
@@ -52,6 +56,9 @@ def main():
if options.export_java_symbols:
symbol_list.append('Java_*')
+ if options.export_feature_registrations:
+ symbol_list.append('JNI_OnLoad_*')
+
for whitelist in options.whitelists:
with open(whitelist, 'rt') as f:
for line in f:
diff --git a/chromium/build/android/gyp/jacoco_instr.py b/chromium/build/android/gyp/jacoco_instr.py
index 4deea439559..9f4f55f551d 100755
--- a/chromium/build/android/gyp/jacoco_instr.py
+++ b/chromium/build/android/gyp/jacoco_instr.py
@@ -6,7 +6,7 @@
"""Instruments classes and jar files.
-This script corresponds to the 'jacoco_instr' action in the java build process.
+This script corresponds to the 'jacoco_instr' action in the Java build process.
Depending on whether jacoco_instrument is set, the 'jacoco_instr' action will
call the instrument command which accepts a jar and instruments it using
jacococli.jar.
@@ -21,6 +21,7 @@ import os
import shutil
import sys
import tempfile
+import zipfile
from util import build_utils
@@ -53,6 +54,9 @@ def _AddArguments(parser):
help='File containing newline-separated .java paths')
parser.add_argument(
'--jacococli-jar', required=True, help='Path to jacococli.jar.')
+ parser.add_argument(
+ '--files-to-instrument',
+ help='Path to a file containing which source files are affected.')
def _GetSourceDirsFromSourceFiles(source_files):
@@ -96,49 +100,145 @@ def _CreateSourcesJsonFile(source_dirs, input_path, sources_json_file,
data = {}
data['source_dirs'] = relative_sources
- data['input_path'] = os.path.abspath(input_path)
+ data['input_path'] = []
+ if input_path:
+ data['input_path'].append(os.path.abspath(input_path))
with open(sources_json_file, 'w') as f:
json.dump(data, f)
-def _RunInstrumentCommand(parser):
- """Instruments jar files using Jacoco.
+def _GetAffectedClasses(jar_file, source_files):
+ """Gets affected classes by affected source files to a jar.
Args:
- parser: ArgumentParser object.
+ jar_file: The jar file to get all members.
+ source_files: The list of affected source files.
Returns:
- An exit code.
+ A tuple of affected classes and unaffected members.
"""
- args = parser.parse_args()
+ with zipfile.ZipFile(jar_file) as f:
+ members = f.namelist()
- temp_dir = tempfile.mkdtemp()
- try:
- cmd = [
- 'java', '-jar', args.jacococli_jar, 'instrument', args.input_path,
- '--dest', temp_dir
- ]
+ affected_classes = []
+ unaffected_members = []
- build_utils.CheckOutput(cmd)
+ for member in members:
+ if not member.endswith('.class'):
+ unaffected_members.append(member)
+ continue
- jars = os.listdir(temp_dir)
- if len(jars) != 1:
- print('Error: multiple output files in: %s' % (temp_dir))
- return 1
+ is_affected = False
+ index = member.find('$')
+ if index == -1:
+ index = member.find('.class')
+ for source_file in source_files:
+ if source_file.endswith(member[:index] + '.java'):
+ affected_classes.append(member)
+ is_affected = True
+ break
+ if not is_affected:
+ unaffected_members.append(member)
+
+ return affected_classes, unaffected_members
+
+
+def _InstrumentWholeJar(instrument_cmd, input_path, output_path, temp_dir):
+ """Instruments input jar to output_path.
+
+ Args:
+ instrument_cmd: JaCoCo instrument command.
+ input_path: The input path to non-instrumented jar.
+ output_path: The output path to instrumented jar.
+ temp_dir: The temporary directory.
+ """
+ instrument_cmd.extend([input_path, '--dest', temp_dir])
+
+ build_utils.CheckOutput(instrument_cmd)
+
+ jars = os.listdir(temp_dir)
+ if len(jars) != 1:
+ raise Exception('Error: multiple output files: %s' % jars)
+
+ # Delete output_path first to avoid modifying input_path in the case where
+ # input_path is a hardlink to output_path. http://crbug.com/571642
+ if os.path.exists(output_path):
+ os.unlink(output_path)
+ shutil.move(os.path.join(temp_dir, jars[0]), output_path)
+
+
+def _InstrumentClassFiles(instrument_cmd, input_path, output_path, temp_dir,
+ affected_source_files):
+ """Instruments affected class files from input jar.
+
+ Args:
+ instrument_cmd: JaCoCo instrument command.
+ input_path: The input path to non-instrumented jar.
+ output_path: The output path to instrumented jar.
+ temp_dir: The temporary directory.
+ affected_source_files: The affected source file paths to input jar.
+ """
+ affected_classes, unaffected_members = _GetAffectedClasses(
+ input_path, affected_source_files)
- # Delete output_path first to avoid modifying input_path in the case where
- # input_path is a hardlink to output_path. http://crbug.com/571642
- if os.path.exists(args.output_path):
- os.unlink(args.output_path)
- shutil.move(os.path.join(temp_dir, jars[0]), args.output_path)
- finally:
- shutil.rmtree(temp_dir)
+ # Extract affected class files.
+ with zipfile.ZipFile(input_path) as f:
+ f.extractall(temp_dir, affected_classes)
+
+ instrumented_dir = os.path.join(temp_dir, 'instrumented')
+
+ # Instrument extracted class files.
+ instrument_cmd.extend([temp_dir, '--dest', instrumented_dir])
+ build_utils.CheckOutput(instrument_cmd)
+
+ # Extract unaffected members to instrumented_dir.
+ with zipfile.ZipFile(input_path) as f:
+ f.extractall(instrumented_dir, unaffected_members)
+
+ # Zip all files to output_path
+ build_utils.ZipDir(output_path, instrumented_dir)
+
+
+def _RunInstrumentCommand(parser):
+ """Instruments class or Jar files using JaCoCo.
+
+ Args:
+ parser: ArgumentParser object.
+
+ Returns:
+ An exit code.
+ """
+ args = parser.parse_args()
source_files = []
if args.java_sources_file:
source_files.extend(build_utils.ReadSourcesList(args.java_sources_file))
- source_dirs = _GetSourceDirsFromSourceFiles(source_files)
+ with build_utils.TempDir() as temp_dir:
+ instrument_cmd = [
+ build_utils.JAVA_PATH, '-jar', args.jacococli_jar, 'instrument'
+ ]
+
+ if not args.files_to_instrument:
+ _InstrumentWholeJar(instrument_cmd, args.input_path, args.output_path,
+ temp_dir)
+ else:
+ affected_files = build_utils.ReadSourcesList(args.files_to_instrument)
+ source_set = set(source_files)
+ affected_source_files = [f for f in affected_files if f in source_set]
+
+ # Copy input_path to output_path and return if no source file affected.
+ if not affected_source_files:
+ shutil.copyfile(args.input_path, args.output_path)
+ # Create a dummy sources_json_file.
+ _CreateSourcesJsonFile([], None, args.sources_json_file,
+ build_utils.DIR_SOURCE_ROOT)
+ return 0
+ else:
+ _InstrumentClassFiles(instrument_cmd, args.input_path, args.output_path,
+ temp_dir, affected_source_files)
+
+ source_dirs = _GetSourceDirsFromSourceFiles(source_files)
# TODO(GYP): In GN, we are passed the list of sources, detecting source
# directories, then walking them to re-establish the list of sources.
# This can obviously be simplified!
diff --git a/chromium/build/android/gyp/java_cpp_enum.py b/chromium/build/android/gyp/java_cpp_enum.py
index bacc8e3d46d..502e0715647 100755
--- a/chromium/build/android/gyp/java_cpp_enum.py
+++ b/chromium/build/android/gyp/java_cpp_enum.py
@@ -351,7 +351,7 @@ def GenerateOutput(source_path, enum_definition):
package ${PACKAGE};
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/chromium/build/android/gyp/java_cpp_enum_tests.py b/chromium/build/android/gyp/java_cpp_enum_tests.py
index 5717047c7a3..08ef3b8773b 100755
--- a/chromium/build/android/gyp/java_cpp_enum_tests.py
+++ b/chromium/build/android/gyp/java_cpp_enum_tests.py
@@ -42,7 +42,7 @@ class TestPreprocess(unittest.TestCase):
package some.package;
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/chromium/build/android/gyp/javac.py b/chromium/build/android/gyp/javac.py
index e8f27d562c2..9745a340373 100755
--- a/chromium/build/android/gyp/javac.py
+++ b/chromium/build/android/gyp/javac.py
@@ -501,7 +501,7 @@ def _ParseOptions(argv):
def main(argv):
logging.basicConfig(
- level=logging.INFO if os.environ.get('_JAVAC_DEBUG') else logging.WARNING,
+ level=logging.INFO if os.environ.get('JAVAC_DEBUG') else logging.WARNING,
format='%(levelname).1s %(relativeCreated)6d %(message)s')
colorama.init()
@@ -591,7 +591,7 @@ def main(argv):
options.jar_path + '.info',
]
- input_strings = javac_cmd + classpath
+ input_strings = javac_cmd + classpath + java_files
if options.jar_info_exclude_globs:
input_strings.append(options.jar_info_exclude_globs)
build_utils.CallAndWriteDepfileIfStale(
@@ -600,8 +600,7 @@ def main(argv):
depfile_deps=depfile_deps,
input_paths=input_paths,
input_strings=input_strings,
- output_paths=output_paths,
- add_pydeps=False)
+ output_paths=output_paths)
logging.info('Script complete: %s', __file__)
diff --git a/chromium/build/android/gyp/lint.py b/chromium/build/android/gyp/lint.py
index 605a478ec85..dfb9d08975b 100755
--- a/chromium/build/android/gyp/lint.py
+++ b/chromium/build/android/gyp/lint.py
@@ -439,8 +439,7 @@ def main():
input_paths=input_paths,
input_strings=input_strings,
output_paths=output_paths,
- depfile_deps=classpath,
- add_pydeps=False)
+ depfile_deps=classpath)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/main_dex_list.py b/chromium/build/android/gyp/main_dex_list.py
index d610982699c..b75f8ee6ff4 100755
--- a/chromium/build/android/gyp/main_dex_list.py
+++ b/chromium/build/android/gyp/main_dex_list.py
@@ -5,8 +5,6 @@
# found in the LICENSE file.
import argparse
-import json
-import os
import sys
import tempfile
import zipfile
@@ -14,7 +12,7 @@ import zipfile
from util import build_utils
-def main(args):
+def _ParseArgs():
parser = argparse.ArgumentParser()
build_utils.AddDepfileOption(parser)
parser.add_argument('--shrinked-android-path', required=True,
@@ -28,33 +26,36 @@ def main(args):
'main dex.')
parser.add_argument('--main-dex-list-path', required=True,
help='The main dex list file to generate.')
- parser.add_argument('--inputs',
- help='JARs for which a main dex list should be '
- 'generated.')
+ parser.add_argument(
+ '--class-inputs',
+ action='append',
+ help='GN-list of .jars with .class files.')
+ parser.add_argument(
+ '--class-inputs-filearg',
+ action='append',
+ help='GN-list of .jars with .class files (added to depfile).')
parser.add_argument(
'--r8-path', required=True, help='Path to the r8 executable.')
parser.add_argument('--negative-main-dex-globs',
help='GN-list of globs of .class names (e.g. org/chromium/foo/Bar.class) '
'that will fail the build if they match files in the main dex.')
- parser.add_argument('paths', nargs='*', default=[],
- help='JARs for which a main dex list should be '
- 'generated.')
-
- args = parser.parse_args(build_utils.ExpandFileArgs(args))
+ args = parser.parse_args(build_utils.ExpandFileArgs(sys.argv[1:]))
- depfile_deps = []
- if args.inputs:
- args.inputs = build_utils.ParseGnList(args.inputs)
- depfile_deps = args.inputs
- args.paths.extend(args.inputs)
+ args.class_inputs = build_utils.ParseGnList(args.class_inputs)
+ args.class_inputs_filearg = build_utils.ParseGnList(args.class_inputs_filearg)
+ args.class_inputs += args.class_inputs_filearg
if args.negative_main_dex_globs:
args.negative_main_dex_globs = build_utils.ParseGnList(
args.negative_main_dex_globs)
+ return args
+
+def main():
+ args = _ParseArgs()
proguard_cmd = [
- 'java',
+ build_utils.JAVA_PATH,
'-jar',
args.r8_path,
'--classfile',
@@ -73,60 +74,16 @@ def main(args):
'-dontpreverify',
]
- main_dex_list_cmd = [
- 'java', '-cp', args.dx_path,
- 'com.android.multidex.MainDexListBuilder',
- # This workaround significantly increases main dex size and doesn't seem to
- # be needed by Chrome. See comment in the source:
- # https://android.googlesource.com/platform/dalvik/+/master/dx/src/com/android/multidex/MainDexListBuilder.java
- '--disable-annotation-resolution-workaround',
- ]
-
- input_paths = list(args.paths)
- input_paths += [
- args.shrinked_android_path,
- args.dx_path,
- ]
- input_paths += args.main_dex_rules_paths
-
- input_strings = [
- proguard_cmd,
- main_dex_list_cmd,
- ]
-
if args.negative_main_dex_globs:
- input_strings += args.negative_main_dex_globs
for glob in args.negative_main_dex_globs:
# Globs come with 1 asterix, but we want 2 to match subpackages.
proguard_flags.append('-checkdiscard class ' +
glob.replace('*', '**').replace('/', '.'))
- output_paths = [
- args.main_dex_list_path,
- ]
-
- def _LineLengthHelperForOnStaleMd5():
- _OnStaleMd5(proguard_cmd, proguard_flags, main_dex_list_cmd, args.paths,
- args.main_dex_list_path)
-
- build_utils.CallAndWriteDepfileIfStale(
- _LineLengthHelperForOnStaleMd5,
- args,
- input_paths=input_paths,
- input_strings=input_strings,
- output_paths=output_paths,
- depfile_deps=depfile_deps,
- add_pydeps=False)
-
- return 0
-
-
-def _OnStaleMd5(proguard_cmd, proguard_flags, main_dex_list_cmd, paths,
- main_dex_list_path):
main_dex_list = ''
try:
with tempfile.NamedTemporaryFile(suffix='.jar') as temp_jar:
- # Step 1: Use ProGuard to find all @MainDex code, and all code reachable
+ # Step 1: Use R8 to find all @MainDex code, and all code reachable
# from @MainDex code (recursive).
proguard_cmd += ['--output', temp_jar.name]
with tempfile.NamedTemporaryFile() as proguard_flags_file:
@@ -134,7 +91,7 @@ def _OnStaleMd5(proguard_cmd, proguard_flags, main_dex_list_cmd, paths,
proguard_flags_file.write(flag + '\n')
proguard_flags_file.flush()
proguard_cmd += ['--pg-conf', proguard_flags_file.name]
- for injar in paths:
+ for injar in args.class_inputs:
proguard_cmd.append(injar)
build_utils.CheckOutput(proguard_cmd, print_stderr=False)
@@ -142,12 +99,23 @@ def _OnStaleMd5(proguard_cmd, proguard_flags, main_dex_list_cmd, paths,
# for debugging what classes are kept by ProGuard vs. MainDexListBuilder.
with zipfile.ZipFile(temp_jar.name) as z:
kept_classes = [p for p in z.namelist() if p.endswith('.class')]
- with open(main_dex_list_path + '.partial', 'w') as f:
+ with open(args.main_dex_list_path + '.partial', 'w') as f:
f.write('\n'.join(kept_classes) + '\n')
# Step 2: Expand inclusion list to all classes referenced by the .class
# files of kept classes (non-recursive).
- main_dex_list_cmd += [temp_jar.name, ':'.join(paths)]
+ main_dex_list_cmd = [
+ build_utils.JAVA_PATH,
+ '-cp',
+ args.dx_path,
+ 'com.android.multidex.MainDexListBuilder',
+ # This workaround increases main dex size and does not seem to
+ # be needed by Chrome. See comment in the source:
+ # https://android.googlesource.com/platform/dalvik/+/master/dx/src/com/android/multidex/MainDexListBuilder.java
+ '--disable-annotation-resolution-workaround',
+ temp_jar.name,
+ ':'.join(args.class_inputs)
+ ]
main_dex_list = build_utils.CheckOutput(main_dex_list_cmd)
except build_utils.CalledProcessError as e:
@@ -158,9 +126,16 @@ def _OnStaleMd5(proguard_cmd, proguard_flags, main_dex_list_cmd, paths,
else:
raise
- with open(main_dex_list_path, 'w') as main_dex_list_file:
- main_dex_list_file.write(main_dex_list)
+ with build_utils.AtomicOutput(args.main_dex_list_path) as f:
+ f.write(main_dex_list)
+
+ if args.depfile:
+ build_utils.WriteDepfile(
+ args.depfile,
+ args.main_dex_list_path,
+ inputs=args.class_inputs_filearg,
+ add_pydeps=False)
if __name__ == '__main__':
- sys.exit(main(sys.argv[1:]))
+ main()
diff --git a/chromium/build/android/gyp/merge_manifest.py b/chromium/build/android/gyp/merge_manifest.py
index 5680ad94028..61840bf6a1a 100755
--- a/chromium/build/android/gyp/merge_manifest.py
+++ b/chromium/build/android/gyp/merge_manifest.py
@@ -92,7 +92,7 @@ def main(argv):
with build_utils.AtomicOutput(args.output) as output:
cmd = [
- 'java',
+ build_utils.JAVA_PATH,
'-cp',
classpath,
_MANIFEST_MERGER_MAIN_CLASS,
diff --git a/chromium/build/android/gyp/prepare_resources.py b/chromium/build/android/gyp/prepare_resources.py
index 6147f1a087f..cb0a2446544 100755
--- a/chromium/build/android/gyp/prepare_resources.py
+++ b/chromium/build/android/gyp/prepare_resources.py
@@ -295,8 +295,7 @@ def main(args):
input_paths=input_paths,
input_strings=input_strings,
output_paths=output_paths,
- depfile_deps=depfile_deps,
- add_pydeps=False)
+ depfile_deps=depfile_deps)
if __name__ == '__main__':
diff --git a/chromium/build/android/gyp/proguard.py b/chromium/build/android/gyp/proguard.py
index 3284341100d..fc9364471bd 100755
--- a/chromium/build/android/gyp/proguard.py
+++ b/chromium/build/android/gyp/proguard.py
@@ -14,6 +14,18 @@ import zipfile
from util import build_utils
from util import diff_utils
+_API_LEVEL_VERSION_CODE = [
+ (21, 'L'),
+ (22, 'LolliopoMR1'),
+ (23, 'M'),
+ (24, 'N'),
+ (25, 'NMR1'),
+ (26, 'O'),
+ (27, 'OMR1'),
+ (28, 'P'),
+ (29, 'Q'),
+]
+
class _ProguardOutputFilter(object):
"""ProGuard outputs boring stuff to stdout (ProGuard version, jar path, etc)
@@ -99,8 +111,7 @@ def _ParseOptions():
parser.add_argument(
'--verbose', '-v', action='store_true', help='Print all ProGuard output')
parser.add_argument(
- '--repackage-classes',
- help='Unique package name given to an asynchronously proguarded module')
+ '--repackage-classes', help='Package all optimized classes are put in.')
parser.add_argument(
'--disable-outlining',
action='store_true',
@@ -123,9 +134,6 @@ def _ParseOptions():
options.extra_mapping_output_paths = build_utils.ParseGnList(
options.extra_mapping_output_paths)
- if options.apply_mapping:
- options.apply_mapping = os.path.abspath(options.apply_mapping)
-
return options
@@ -168,7 +176,7 @@ def _OptimizeWithR8(options,
os.mkdir(tmp_output)
cmd = [
- 'java',
+ build_utils.JAVA_PATH,
'-jar',
options.r8_path,
'--no-desugaring',
@@ -238,7 +246,7 @@ def _OptimizeWithProguard(options,
if options.proguard_path.endswith('.jar'):
cmd = [
- 'java', '-jar', options.proguard_path, '-include',
+ build_utils.JAVA_PATH, '-jar', options.proguard_path, '-include',
combined_proguard_configs_path
]
else:
@@ -319,9 +327,23 @@ def _CreateDynamicConfig(options):
}""" % options.min_api)
if options.apply_mapping:
- ret.append("-applymapping '%s'" % options.apply_mapping)
+ ret.append("-applymapping '%s'" % os.path.abspath(options.apply_mapping))
if options.repackage_classes:
ret.append("-repackageclasses '%s'" % options.repackage_classes)
+
+ _min_api = int(options.min_api) if options.min_api else 0
+ for api_level, version_code in _API_LEVEL_VERSION_CODE:
+ annotation_name = 'org.chromium.base.annotations.VerifiesOn' + version_code
+ if api_level > _min_api:
+ ret.append('-keep @interface %s' % annotation_name)
+ ret.append("""\
+-keep,allowobfuscation,allowoptimization @%s class ** {
+ <methods>;
+}""" % annotation_name)
+ ret.append("""\
+-keepclassmembers,allowobfuscation,allowoptimization class ** {
+ @%s <methods>;
+}""" % annotation_name)
return '\n'.join(ret)
@@ -387,7 +409,7 @@ def main():
inputs = options.proguard_configs + options.input_paths + libraries
if options.apply_mapping:
- inputs += options.apply_mapping
+ inputs.append(options.apply_mapping)
build_utils.WriteDepfile(
options.depfile, options.output_path, inputs=inputs, add_pydeps=False)
diff --git a/chromium/build/android/gyp/util/build_utils.py b/chromium/build/android/gyp/util/build_utils.py
index ecb41a3fe85..ca7f0c165b6 100644
--- a/chromium/build/android/gyp/util/build_utils.py
+++ b/chromium/build/android/gyp/util/build_utils.py
@@ -33,6 +33,8 @@ import gn_helpers
DIR_SOURCE_ROOT = os.environ.get('CHECKOUT_SOURCE_ROOT',
os.path.abspath(os.path.join(os.path.dirname(__file__),
os.pardir, os.pardir, os.pardir, os.pardir)))
+JAVA_PATH = os.path.join(DIR_SOURCE_ROOT, 'third_party', 'jdk', 'current',
+ 'bin', 'java')
try:
string_types = basestring
@@ -70,7 +72,7 @@ def Touch(path, fail_if_missing=False):
os.utime(path, None)
-def FindInDirectory(directory, filename_filter):
+def FindInDirectory(directory, filename_filter='*'):
files = []
for root, _dirnames, filenames in os.walk(directory):
matched_files = fnmatch.filter(filenames, filename_filter)
@@ -206,6 +208,26 @@ def FilterLines(output, filter_string):
line for line in output.splitlines() if not re_filter.search(line))
+def FilterReflectiveAccessJavaWarnings(output):
+ """Filters out warnings about illegal reflective access operation.
+
+ These warnings were introduced in Java 9, and generally mean that dependencies
+ need to be updated.
+ """
+ # WARNING: An illegal reflective access operation has occurred
+ # WARNING: Illegal reflective access by ...
+ # WARNING: Please consider reporting this to the maintainers of ...
+ # WARNING: Use --illegal-access=warn to enable warnings of further ...
+ # WARNING: All illegal access operations will be denied in a future release
+ return FilterLines(
+ output, r'WARNING: ('
+ 'An illegal reflective|'
+ 'Illegal reflective access|'
+ 'Please consider reporting this to|'
+ 'Use --illegal-access=warn|'
+ 'All illegal access operations)')
+
+
# This can be used in most cases like subprocess.check_output(). The output,
# particularly when the command fails, better highlights the command's failure.
# If the command fails, raises a build_utils.CalledProcessError.
@@ -511,7 +533,7 @@ def _ComputePythonDependencies():
src/. The paths will be relative to the current directory.
"""
_ForceLazyModulesToLoad()
- module_paths = (m.__file__ for m in sys.modules.itervalues()
+ module_paths = (m.__file__ for m in sys.modules.values()
if m is not None and hasattr(m, '__file__'))
abs_module_paths = map(os.path.abspath, module_paths)
@@ -634,15 +656,20 @@ def ReadSourcesList(sources_list_file_name):
return [file_name.strip() for file_name in f]
-def CallAndWriteDepfileIfStale(function, options, record_path=None,
- input_paths=None, input_strings=None,
- output_paths=None, force=False,
- pass_changes=False, depfile_deps=None,
- add_pydeps=True):
+def CallAndWriteDepfileIfStale(on_stale_md5,
+ options,
+ record_path=None,
+ input_paths=None,
+ input_strings=None,
+ output_paths=None,
+ force=False,
+ pass_changes=False,
+ track_subpaths_whitelist=None,
+ depfile_deps=None):
"""Wraps md5_check.CallAndRecordIfStale() and writes a depfile if applicable.
Depfiles are automatically added to output_paths when present in the |options|
- argument. They are then created after |function| is called.
+ argument. They are then created after |on_stale_md5| is called.
By default, only python dependencies are added to the depfile. If there are
other input paths that are not captured by GN deps, then they should be listed
@@ -656,21 +683,7 @@ def CallAndWriteDepfileIfStale(function, options, record_path=None,
input_strings = list(input_strings or [])
output_paths = list(output_paths or [])
- python_deps = None
- if hasattr(options, 'depfile') and options.depfile:
- python_deps = _ComputePythonDependencies()
- input_paths += python_deps
- output_paths += [options.depfile]
-
- def on_stale_md5(changes):
- args = (changes,) if pass_changes else ()
- function(*args)
- if python_deps is not None:
- all_depfile_deps = list(python_deps) if add_pydeps else []
- if depfile_deps:
- all_depfile_deps.extend(depfile_deps)
- WriteDepfile(options.depfile, output_paths[0], all_depfile_deps,
- add_pydeps=False)
+ input_paths += _ComputePythonDependencies()
md5_check.CallAndRecordIfStale(
on_stale_md5,
@@ -679,4 +692,12 @@ def CallAndWriteDepfileIfStale(function, options, record_path=None,
input_strings=input_strings,
output_paths=output_paths,
force=force,
- pass_changes=True)
+ pass_changes=pass_changes,
+ track_subpaths_whitelist=track_subpaths_whitelist)
+
+ # Write depfile even when inputs have not changed to ensure build correctness
+ # on bots that build with & without patch, and the patch changes the depfile
+ # location.
+ if hasattr(options, 'depfile') and options.depfile:
+ WriteDepfile(
+ options.depfile, output_paths[0], depfile_deps, add_pydeps=False)
diff --git a/chromium/build/android/gyp/util/md5_check.py b/chromium/build/android/gyp/util/md5_check.py
index 9a15ee6e75a..0ad6f1b4003 100644
--- a/chromium/build/android/gyp/util/md5_check.py
+++ b/chromium/build/android/gyp/util/md5_check.py
@@ -20,9 +20,14 @@ PRINT_EXPLANATIONS = int(os.environ.get('PRINT_BUILD_EXPLANATIONS', 0))
_FORCE_REBUILD = int(os.environ.get('FORCE_REBUILD', 0))
-def CallAndRecordIfStale(
- function, record_path=None, input_paths=None, input_strings=None,
- output_paths=None, force=False, pass_changes=False):
+def CallAndRecordIfStale(function,
+ record_path=None,
+ input_paths=None,
+ input_strings=None,
+ output_paths=None,
+ force=False,
+ pass_changes=False,
+ track_subpaths_whitelist=None):
"""Calls function if outputs are stale.
Outputs are considered stale if:
@@ -43,6 +48,8 @@ def CallAndRecordIfStale(
force: Whether to treat outputs as missing regardless of whether they
actually are.
pass_changes: Whether to pass a Changes instance to |function|.
+ track_subpaths_whitelist: Relevant only when pass_changes=True. List of .zip
+ files from |input_paths| to make subpath information available for.
"""
assert record_path or output_paths
input_paths = input_paths or []
@@ -57,12 +64,15 @@ def CallAndRecordIfStale(
new_metadata = _Metadata(track_entries=pass_changes or PRINT_EXPLANATIONS)
new_metadata.AddStrings(input_strings)
+ zip_whitelist = set(track_subpaths_whitelist or [])
for path in input_paths:
- if _IsZipFile(path):
+ # It's faster to md5 an entire zip file than it is to just locate & hash
+ # its central directory (which is what this used to do).
+ if path in zip_whitelist:
entries = _ExtractZipEntries(path)
new_metadata.AddZipFile(path, entries)
else:
- new_metadata.AddFile(path, _Md5ForPath(path))
+ new_metadata.AddFile(path, _ComputeTagForPath(path))
old_metadata = None
force = force or _FORCE_REBUILD
@@ -106,19 +116,20 @@ class Changes(object):
def HasChanges(self):
"""Returns whether any changes exist."""
- return (self.force or
- not self.old_metadata or
- self.old_metadata.StringsMd5() != self.new_metadata.StringsMd5() or
- self.old_metadata.FilesMd5() != self.new_metadata.FilesMd5())
+ return (self.HasStringChanges()
+ or self.old_metadata.FilesMd5() != self.new_metadata.FilesMd5())
+
+ def HasStringChanges(self):
+ """Returns whether string metadata changed."""
+ return (self.force or not self.old_metadata
+ or self.old_metadata.StringsMd5() != self.new_metadata.StringsMd5())
def AddedOrModifiedOnly(self):
"""Returns whether the only changes were from added or modified (sub)files.
No missing outputs, no removed paths/subpaths.
"""
- if (self.force or
- not self.old_metadata or
- self.old_metadata.StringsMd5() != self.new_metadata.StringsMd5()):
+ if self.HasStringChanges():
return False
if any(self.IterRemovedPaths()):
return False
@@ -368,27 +379,15 @@ class _Metadata(object):
return (entry['path'] for entry in subentries)
-def _UpdateMd5ForFile(md5, path, block_size=2**16):
- with open(path, 'rb') as infile:
- while True:
- data = infile.read(block_size)
- if not data:
- break
- md5.update(data)
-
-
-def _UpdateMd5ForDirectory(md5, dir_path):
- for root, _, files in os.walk(dir_path):
- for f in files:
- _UpdateMd5ForFile(md5, os.path.join(root, f))
-
-
-def _Md5ForPath(path):
+def _ComputeTagForPath(path):
+ stat = os.stat(path)
+ if stat.st_size > 1 * 1024 * 1024:
+ # Fallback to mtime for large files so that md5_check does not take too long
+ # to run.
+ return stat.st_mtime
md5 = hashlib.md5()
- if os.path.isdir(path):
- _UpdateMd5ForDirectory(md5, path)
- else:
- _UpdateMd5ForFile(md5, path)
+ with open(path, 'rb') as f:
+ md5.update(f.read())
return md5.hexdigest()
@@ -400,14 +399,6 @@ def _ComputeInlineMd5(iterable):
return md5.hexdigest()
-def _IsZipFile(path):
- """Returns whether to treat the given file as a zip file."""
- # ijar doesn't set the CRC32 field.
- if path.endswith('.interface.jar'):
- return False
- return path[-4:] in ('.zip', '.apk', '.jar') or path.endswith('.srcjar')
-
-
def _ExtractZipEntries(path):
"""Returns a list of (path, CRC32) of all files within |path|."""
entries = []
diff --git a/chromium/build/android/gyp/util/md5_check_test.py b/chromium/build/android/gyp/util/md5_check_test.py
index 41e9d3c248c..cba7a6a354a 100755
--- a/chromium/build/android/gyp/util/md5_check_test.py
+++ b/chromium/build/android/gyp/util/md5_check_test.py
@@ -36,12 +36,18 @@ class TestMd5Check(unittest.TestCase):
# Test out empty zip file to start.
_WriteZipFile(input_file2.name, [])
input_files = [input_file1.name, input_file2.name]
+ zip_paths = [input_file2.name]
record_path = tempfile.NamedTemporaryFile(suffix='.stamp')
- def CheckCallAndRecord(should_call, message, force=False,
- outputs_specified=False, outputs_missing=False,
- expected_changes=None, added_or_modified_only=None):
+ def CheckCallAndRecord(should_call,
+ message,
+ force=False,
+ outputs_specified=False,
+ outputs_missing=False,
+ expected_changes=None,
+ added_or_modified_only=None,
+ track_subentries=False):
output_paths = None
if outputs_specified:
output_file1 = tempfile.NamedTemporaryFile()
@@ -66,7 +72,8 @@ class TestMd5Check(unittest.TestCase):
input_strings=input_strings,
output_paths=output_paths,
force=force,
- pass_changes=(expected_changes or added_or_modified_only) is not None)
+ pass_changes=(expected_changes or added_or_modified_only) is not None,
+ track_subpaths_whitelist=zip_paths if track_subentries else None)
self.assertEqual(should_call, self.called, message)
if expected_changes:
description = self.changes.DescribeDifference()
@@ -81,6 +88,9 @@ class TestMd5Check(unittest.TestCase):
expected_changes='Previous stamp file not found.',
added_or_modified_only=False)
CheckCallAndRecord(False, 'should not call when nothing changed')
+ input_files = input_files[::-1]
+ CheckCallAndRecord(False, 'reordering of inputs shouldn\'t trigger call')
+
CheckCallAndRecord(False, 'should not call when nothing changed #2',
outputs_specified=True, outputs_missing=False)
CheckCallAndRecord(True, 'should call when output missing',
@@ -97,9 +107,6 @@ class TestMd5Check(unittest.TestCase):
expected_changes='*Modified: %s' % input_file1.name,
added_or_modified_only=True)
- input_files = input_files[::-1]
- CheckCallAndRecord(False, 'reordering of inputs shouldn\'t trigger call')
-
input_files = input_files[:1]
CheckCallAndRecord(True, 'removing file should trigger call',
expected_changes='*Removed: %s' % input_file1.name,
@@ -129,16 +136,21 @@ class TestMd5Check(unittest.TestCase):
added_or_modified_only=False)
_WriteZipFile(input_file2.name, [('path/1.txt', '1')])
- CheckCallAndRecord(True, 'added subpath should trigger call',
- expected_changes='*Modified: %s*Subpath added: %s' % (
- input_file2.name, 'path/1.txt'),
- added_or_modified_only=True)
+ CheckCallAndRecord(
+ True,
+ 'added subpath should trigger call',
+ expected_changes='*Modified: %s*Subpath added: %s' % (input_file2.name,
+ 'path/1.txt'),
+ added_or_modified_only=True,
+ track_subentries=True)
_WriteZipFile(input_file2.name, [('path/1.txt', '2')])
- CheckCallAndRecord(True, 'changed subpath should trigger call',
- expected_changes='*Modified: %s*Subpath modified: %s' % (
- input_file2.name, 'path/1.txt'),
- added_or_modified_only=True)
- CheckCallAndRecord(False, 'should not call when nothing changed')
+ CheckCallAndRecord(
+ True,
+ 'changed subpath should trigger call',
+ expected_changes='*Modified: %s*Subpath modified: %s' %
+ (input_file2.name, 'path/1.txt'),
+ added_or_modified_only=True,
+ track_subentries=True)
_WriteZipFile(input_file2.name, [])
CheckCallAndRecord(True, 'removed subpath should trigger call',
diff --git a/chromium/build/android/gyp/write_build_config.py b/chromium/build/android/gyp/write_build_config.py
index 3d842a3fc5e..b98bd4fa4a3 100755
--- a/chromium/build/android/gyp/write_build_config.py
+++ b/chromium/build/android/gyp/write_build_config.py
@@ -348,9 +348,9 @@ that will be merged into the final `.jar` file for distribution.
Path to the final classes.dex file (or classes.zip in case of multi-dex)
for this APK.
-* `deps_info['final_dex']['dependency_dex_files']`:
-The list of paths to all `deps_info['dex_path']` entries for all library
-dependencies for this APK.
+* `deps_info['final_dex']['all_dex_files']`:
+The list of paths to all `deps_info['dex_path']` entries for all libraries
+that comprise this APK. Valid only for debug builds.
* `native['libraries']`
List of native libraries for the primary ABI to be embedded in this APK.
@@ -1191,6 +1191,9 @@ def main(argv):
raise Exception('Not all deps support the Android platform: '
+ str(deps_not_support_android))
+ if is_apk_or_module_target:
+ all_dex_files = [c['dex_path'] for c in all_library_deps]
+
if is_java_target:
# Classpath values filled in below (after applying tested_apk_config).
config['javac'] = {}
@@ -1200,6 +1203,8 @@ def main(argv):
deps_info['interface_jar_path'] = options.interface_jar_path
if options.dex_path:
deps_info['dex_path'] = options.dex_path
+ if is_apk_or_module_target:
+ all_dex_files.append(options.dex_path)
if options.type == 'android_apk':
deps_info['apk_path'] = options.apk_path
deps_info['incremental_apk_path'] = options.incremental_apk_path
@@ -1318,9 +1323,6 @@ def main(argv):
if options.res_size_info:
config['deps_info']['res_size_info'] = options.res_size_info
- if is_apk_or_module_target:
- deps_dex_files = [c['dex_path'] for c in all_library_deps]
-
if options.type == 'group':
if options.extra_classpath_jars:
# These are .jars to add to javac classpath but not to runtime classpath.
@@ -1590,8 +1592,9 @@ def main(argv):
# within proguard.py. Move the logic for the proguard case to here.
tested_apk_library_deps = tested_apk_deps.All('java_library')
tested_apk_deps_dex_files = [c['dex_path'] for c in tested_apk_library_deps]
- deps_dex_files = [
- p for p in deps_dex_files if not p in tested_apk_deps_dex_files]
+ all_dex_files = [
+ p for p in all_dex_files if not p in tested_apk_deps_dex_files
+ ]
if options.type in ('android_apk', 'dist_aar', 'dist_jar',
'android_app_bundle_module', 'android_app_bundle'):
@@ -1605,7 +1608,7 @@ def main(argv):
dex_config = config['final_dex']
dex_config['path'] = options.final_dex_path
if is_apk_or_module_target:
- dex_config['dependency_dex_files'] = deps_dex_files
+ dex_config['all_dex_files'] = all_dex_files
if is_java_target:
config['javac']['classpath'] = javac_classpath
@@ -1723,7 +1726,7 @@ def main(argv):
RemoveObjDups(config, base, 'deps_info', 'javac_full_classpath')
RemoveObjDups(config, base, 'deps_info', 'javac_full_interface_classpath')
RemoveObjDups(config, base, 'deps_info', 'jni', 'all_source')
- RemoveObjDups(config, base, 'final_dex', 'dependency_dex_files')
+ RemoveObjDups(config, base, 'final_dex', 'all_dex_files')
RemoveObjDups(config, base, 'extra_android_manifests')
build_utils.WriteJson(config, options.build_config, only_if_changed=True)
diff --git a/chromium/build/android/incremental_install/BUILD.gn b/chromium/build/android/incremental_install/BUILD.gn
index fb75d793345..934ce2cf61d 100644
--- a/chromium/build/android/incremental_install/BUILD.gn
+++ b/chromium/build/android/incremental_install/BUILD.gn
@@ -6,7 +6,7 @@ import("//build/config/android/rules.gni")
android_library("bootstrap_java") {
# Use .dex rather than .dex.jar to be usable by package_apk().
- dex_path = "$target_gen_dir/bootstrap.dex"
+ dex_path = "$target_out_dir/bootstrap.dex"
java_files = [
"java/org/chromium/incrementalinstall/BootstrapApplication.java",
"java/org/chromium/incrementalinstall/BootstrapInstrumentation.java",
diff --git a/chromium/build/android/incremental_install/write_installer_json.py b/chromium/build/android/incremental_install/write_installer_json.py
index 75bd6d1aab7..df6cfdf734c 100755
--- a/chromium/build/android/incremental_install/write_installer_json.py
+++ b/chromium/build/android/incremental_install/write_installer_json.py
@@ -31,19 +31,13 @@ def _ParseArgs(args):
default=[],
help='A glob matching the apk splits. '
'Can be specified multiple times.')
- parser.add_argument('--native-libs-list',
- action='append',
- default=[],
- help='GN-list of paths to native libraries relative to '
- 'output directory. Can be repeated.')
- parser.add_argument('--dex-file',
- action='append',
- default=[],
- dest='dex_files',
- help='.dex file to include relative to output directory. '
- 'Can be repeated')
- parser.add_argument('--dex-file-list',
- help='GN-list of dex paths relative to output directory.')
+ parser.add_argument(
+ '--native-libs',
+ action='append',
+ help='GN-list of paths to native libraries relative to '
+ 'output directory. Can be repeated.')
+ parser.add_argument(
+ '--dex-files', help='GN-list of dex paths relative to output directory.')
parser.add_argument('--show-proguard-warning',
action='store_true',
default=False,
@@ -52,11 +46,8 @@ def _ParseArgs(args):
help='Prints the given message and exits.')
options = parser.parse_args(args)
- options.dex_files += build_utils.ParseGnList(options.dex_file_list)
- all_libs = []
- for gn_list in options.native_libs_list:
- all_libs.extend(build_utils.ParseGnList(gn_list))
- options.native_libs_list = all_libs
+ options.dex_files = build_utils.ParseGnList(options.dex_files)
+ options.native_libs = build_utils.ParseGnList(options.native_libs)
return options
@@ -65,7 +56,7 @@ def main(args):
data = {
'apk_path': options.apk_path,
- 'native_libs': options.native_libs_list,
+ 'native_libs': options.native_libs,
'dex_files': options.dex_files,
'dont_even_try': options.dont_even_try,
'show_proguard_warning': options.show_proguard_warning,
diff --git a/chromium/build/android/list_class_verification_failures.py b/chromium/build/android/list_class_verification_failures.py
index cfcb2ac6896..da7d0a8c484 100755
--- a/chromium/build/android/list_class_verification_failures.py
+++ b/chromium/build/android/list_class_verification_failures.py
@@ -121,10 +121,11 @@ def _AdbOatDumpForPackage(device, package_name, out_file):
"""Runs oatdump on the device."""
# Get the path to the odex file.
odex_file = PathToDexForPlatformVersion(device, package_name)
- device.RunShellCommand(['oatdump',
- '--oat-file=' + odex_file,
- '--output=' + out_file],
- timeout=120, shell=True, check_return=True)
+ device.RunShellCommand(
+ ['oatdump', '--oat-file=' + odex_file, '--output=' + out_file],
+ timeout=420,
+ shell=True,
+ check_return=True)
class JavaClass(object):
@@ -211,7 +212,7 @@ def RealMain(mapping, device_arg, package, status, hide_summary, workdir):
device.adb) as file_on_device:
_AdbOatDumpForPackage(device, package, file_on_device.name)
file_on_host = os.path.join(workdir, 'out.dump')
- device.PullFile(file_on_device.name, file_on_host)
+ device.PullFile(file_on_device.name, file_on_host, timeout=220)
proguard_mappings = (_ParseMappingFile(mapping) if mapping else None)
with open(file_on_host, 'r') as f:
java_classes = ListClassesAndVerificationStatus(f, proguard_mappings)
diff --git a/chromium/build/android/pylib/base/environment_factory.py b/chromium/build/android/pylib/base/environment_factory.py
index 4d3727444f4..2b402ab9854 100644
--- a/chromium/build/android/pylib/base/environment_factory.py
+++ b/chromium/build/android/pylib/base/environment_factory.py
@@ -4,14 +4,24 @@
from pylib import constants
from pylib.local.device import local_device_environment
-from pylib.local.emulator import local_emulator_environment
from pylib.local.machine import local_machine_environment
+try:
+ # local_emulator_environment depends on //tools.
+ # If a client pulls in the //build subtree but not the //tools
+ # one, fail at emulator environment creation time.
+ from pylib.local.emulator import local_emulator_environment
+except ImportError:
+ local_emulator_environment = None
+
+
def CreateEnvironment(args, output_manager, error_func):
if args.environment == 'local':
if args.command not in constants.LOCAL_MACHINE_TESTS:
- if args.avd_name:
+ if args.avd_config:
+ if not local_emulator_environment:
+ error_func('emulator environment requested but not available.')
return local_emulator_environment.LocalEmulatorEnvironment(
args, output_manager, error_func)
return local_device_environment.LocalDeviceEnvironment(
diff --git a/chromium/build/android/pylib/constants/__init__.py b/chromium/build/android/pylib/constants/__init__.py
index aff42e3e961..5daecb6d6ed 100644
--- a/chromium/build/android/pylib/constants/__init__.py
+++ b/chromium/build/android/pylib/constants/__init__.py
@@ -79,6 +79,11 @@ PACKAGE_INFO.update({
chrome.PackageInfo('org.chromium.webview_ui_test',
'org.chromium.webview_ui_test.WebViewUiTestActivity',
'webview-command-line', None),
+ 'weblayer_browsertests':
+ chrome.PackageInfo(
+ 'org.chromium.weblayer_browsertests_apk',
+ 'org.chromium.weblayer_browsertests_apk.WebLayerBrowserTestsActivity',
+ 'chrome-native-tests-command-line', None),
})
diff --git a/chromium/build/android/pylib/gtest/gtest_test_instance.py b/chromium/build/android/pylib/gtest/gtest_test_instance.py
index 2b2c5e7f7e9..634ab7220a2 100644
--- a/chromium/build/android/pylib/gtest/gtest_test_instance.py
+++ b/chromium/build/android/pylib/gtest/gtest_test_instance.py
@@ -26,6 +26,7 @@ BROWSER_TEST_SUITES = [
'android_browsertests',
'components_browsertests',
'content_browsertests',
+ 'weblayer_browsertests',
]
RUN_IN_SUB_THREAD_TEST_SUITES = [
diff --git a/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py b/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py
index 09114225cb1..bc2a9a31d50 100644
--- a/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py
+++ b/chromium/build/android/pylib/instrumentation/instrumentation_test_instance.py
@@ -446,6 +446,8 @@ class InstrumentationTestInstance(test_instance.TestInstance):
self._additional_apks = []
self._apk_under_test = None
self._apk_under_test_incremental_install_json = None
+ self._modules = None
+ self._fake_modules = None
self._package_info = None
self._suite = None
self._test_apk = None
@@ -506,7 +508,8 @@ class InstrumentationTestInstance(test_instance.TestInstance):
def _initializeApkAttributes(self, args, error_func):
if args.apk_under_test:
apk_under_test_path = args.apk_under_test
- if not args.apk_under_test.endswith('.apk'):
+ if (not args.apk_under_test.endswith('.apk')
+ and not args.apk_under_test.endswith('.apks')):
apk_under_test_path = os.path.join(
constants.GetOutDirectory(), constants.SDK_BUILD_APKS_DIR,
'%s.apk' % args.apk_under_test)
@@ -520,24 +523,20 @@ class InstrumentationTestInstance(test_instance.TestInstance):
self._apk_under_test = apk_helper.ToHelper(apk_under_test_path)
- if args.test_apk.endswith('.apk'):
- self._suite = os.path.splitext(os.path.basename(args.test_apk))[0]
- test_apk_path = args.test_apk
- self._test_apk = apk_helper.ToHelper(args.test_apk)
- else:
- self._suite = args.test_apk
+ test_apk_path = args.test_apk
+ if not os.path.exists(test_apk_path):
test_apk_path = os.path.join(
constants.GetOutDirectory(), constants.SDK_BUILD_APKS_DIR,
'%s.apk' % args.test_apk)
-
- # TODO(jbudorick): Move the realpath up to the argument parser once
- # APK-by-name is no longer supported.
- test_apk_path = os.path.realpath(test_apk_path)
+ # TODO(jbudorick): Move the realpath up to the argument parser once
+ # APK-by-name is no longer supported.
+ test_apk_path = os.path.realpath(test_apk_path)
if not os.path.exists(test_apk_path):
error_func('Unable to find test APK: %s' % test_apk_path)
self._test_apk = apk_helper.ToHelper(test_apk_path)
+ self._suite = os.path.splitext(os.path.basename(args.test_apk))[0]
self._apk_under_test_incremental_install_json = (
args.apk_under_test_incremental_install_json)
@@ -548,13 +547,14 @@ class InstrumentationTestInstance(test_instance.TestInstance):
assert self._suite.endswith('_incremental')
self._suite = self._suite[:-len('_incremental')]
+ self._modules = args.modules
+ self._fake_modules = args.fake_modules
+
self._test_jar = args.test_jar
self._test_support_apk = apk_helper.ToHelper(os.path.join(
constants.GetOutDirectory(), constants.SDK_BUILD_TEST_JAVALIB_DIR,
'%sSupport.apk' % self._suite))
- if not os.path.exists(self._test_apk.path):
- error_func('Unable to find test APK: %s' % self._test_apk.path)
if not self._test_jar:
logging.warning('Test jar not specified. Test runner will not have '
'Java annotation info available. May not handle test '
@@ -655,7 +655,10 @@ class InstrumentationTestInstance(test_instance.TestInstance):
with open(args.device_flags_file) as device_flags_file:
stripped_lines = (l.strip() for l in device_flags_file)
self._flags.extend(flag for flag in stripped_lines if flag)
- if args.strict_mode and args.strict_mode != 'off':
+ if args.strict_mode and args.strict_mode != 'off' and (
+ # TODO(yliuyliu): Turn on strict mode for coverage once
+ # crbug/1006397 is fixed.
+ not args.coverage_dir):
self._flags.append('--strict-mode=' + args.strict_mode)
def _initializeDriverAttributes(self):
@@ -717,6 +720,14 @@ class InstrumentationTestInstance(test_instance.TestInstance):
return self._apk_under_test_incremental_install_json
@property
+ def modules(self):
+ return self._modules
+
+ @property
+ def fake_modules(self):
+ return self._fake_modules
+
+ @property
def coverage_directory(self):
return self._coverage_directory
diff --git a/chromium/build/android/pylib/instrumentation/instrumentation_test_instance_test.py b/chromium/build/android/pylib/instrumentation/instrumentation_test_instance_test.py
index 78446d15272..5176dcd82fe 100755
--- a/chromium/build/android/pylib/instrumentation/instrumentation_test_instance_test.py
+++ b/chromium/build/android/pylib/instrumentation/instrumentation_test_instance_test.py
@@ -40,21 +40,20 @@ class InstrumentationTestInstanceTest(unittest.TestCase):
return instrumentation_test_instance.InstrumentationTestInstance(
mock.MagicMock(), mock.MagicMock(), lambda s: None)
- _FlagAttributesArgs = collections.namedtuple(
- '_FlagAttributesArgs',
- [
- 'command_line_flags',
- 'device_flags_file',
- 'strict_mode',
- 'use_apk_under_test_flags_file'
- ])
-
- def createFlagAttributesArgs(
- self, command_line_flags=None, device_flags_file=None,
- strict_mode=None, use_apk_under_test_flags_file=False):
- return self._FlagAttributesArgs(
- command_line_flags, device_flags_file, strict_mode,
- use_apk_under_test_flags_file)
+ _FlagAttributesArgs = collections.namedtuple('_FlagAttributesArgs', [
+ 'command_line_flags', 'device_flags_file', 'strict_mode',
+ 'use_apk_under_test_flags_file', 'coverage_dir'
+ ])
+
+ def createFlagAttributesArgs(self,
+ command_line_flags=None,
+ device_flags_file=None,
+ strict_mode=None,
+ use_apk_under_test_flags_file=False,
+ coverage_dir=None):
+ return self._FlagAttributesArgs(command_line_flags, device_flags_file,
+ strict_mode, use_apk_under_test_flags_file,
+ coverage_dir)
def test_initializeFlagAttributes_commandLineFlags(self):
o = self.createTestInstance()
@@ -78,6 +77,13 @@ class InstrumentationTestInstanceTest(unittest.TestCase):
o._initializeFlagAttributes(args)
self.assertEquals(o._flags, ['--enable-test-intents', '--strict-mode=on'])
+ def test_initializeFlagAttributes_strictModeOn_coverageOn(self):
+ o = self.createTestInstance()
+ args = self.createFlagAttributesArgs(
+ strict_mode='on', coverage_dir='/coverage/dir')
+ o._initializeFlagAttributes(args)
+ self.assertEquals(o._flags, ['--enable-test-intents'])
+
def test_initializeFlagAttributes_strictModeOff(self):
o = self.createTestInstance()
args = self.createFlagAttributesArgs(strict_mode='off')
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 5044cdf1247..605b826c1a0 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
@@ -10,11 +10,13 @@ import posixpath
import shutil
import time
+from devil import base_error
from devil.android import crash_handler
from devil.android import device_errors
from devil.android import device_temp_file
from devil.android import logcat_monitor
from devil.android import ports
+from devil.android.sdk import version_codes
from devil.utils import reraiser_thread
from incremental_install import installer
from pylib import constants
@@ -35,6 +37,8 @@ _EXTRA_COMMAND_LINE_FILE = (
'org.chromium.native_test.NativeTest.CommandLineFile')
_EXTRA_COMMAND_LINE_FLAGS = (
'org.chromium.native_test.NativeTest.CommandLineFlags')
+_EXTRA_COVERAGE_DEVICE_FILE = (
+ 'org.chromium.native_test.NativeTest.CoverageDeviceFile')
_EXTRA_STDOUT_FILE = (
'org.chromium.native_test.NativeTestInstrumentationTestRunner'
'.StdoutFile')
@@ -102,6 +106,24 @@ def _ExtractTestsFromFilter(gtest_filter):
return patterns
+def _PullCoverageFile(device, coverage_device_file, output_dir):
+ """Pulls coverage file on device to host directory.
+
+ Args:
+ device: The working device.
+ coverage_device_file: The temporary coverage file on device.
+ output_dir: The output directory on host.
+ """
+ try:
+ if not os.path.exists(output_dir):
+ os.makedirs(output_dir)
+ device.PullFile(coverage_device_file.name, output_dir)
+ except (OSError, base_error.BaseError) as e:
+ logging.warning('Failed to handle coverage data after tests: %s', e)
+ finally:
+ coverage_device_file.close()
+
+
class _ApkDelegate(object):
def __init__(self, test_instance, tool):
self._activity = test_instance.activity
@@ -116,6 +138,7 @@ class _ApkDelegate(object):
self._extras = test_instance.extras
self._wait_for_java_debugger = test_instance.wait_for_java_debugger
self._tool = tool
+ self._coverage_dir = test_instance.coverage_dir
def GetTestDataRoot(self, device):
# pylint: disable=no-self-use
@@ -138,6 +161,15 @@ class _ApkDelegate(object):
def Run(self, test, device, flags=None, **kwargs):
extras = dict(self._extras)
+ device_api = device.build_version_sdk
+
+ if self._coverage_dir and device_api >= version_codes.LOLLIPOP:
+ coverage_device_file = device_temp_file.DeviceTempFile(
+ device.adb,
+ suffix='.profraw',
+ prefix=self._suite,
+ dir=device.GetExternalStoragePath())
+ extras[_EXTRA_COVERAGE_DEVICE_FILE] = coverage_device_file.name
if ('timeout' in kwargs
and gtest_test_instance.EXTRA_SHARD_NANO_TIMEOUT not in extras):
@@ -193,6 +225,10 @@ class _ApkDelegate(object):
except Exception:
device.ForceStop(self._package)
raise
+ finally:
+ if self._coverage_dir and device_api >= version_codes.LOLLIPOP:
+ _PullCoverageFile(device, coverage_device_file, self._coverage_dir)
+
# TODO(jbudorick): Remove this after resolving crbug.com/726880
if device.PathExists(stdout_file.name):
logging.info('%s size on device: %s', stdout_file.name,
@@ -218,13 +254,18 @@ class _ApkDelegate(object):
class _ExeDelegate(object):
- def __init__(self, tr, dist_dir, tool):
- self._host_dist_dir = dist_dir
- self._exe_file_name = os.path.basename(dist_dir)[:-len('__dist')]
+
+ def __init__(self, tr, test_instance, tool):
+ self._host_dist_dir = test_instance.exe_dist_dir
+ self._exe_file_name = os.path.basename(
+ test_instance.exe_dist_dir)[:-len('__dist')]
self._device_dist_dir = posixpath.join(
- constants.TEST_EXECUTABLE_DIR, os.path.basename(dist_dir))
+ constants.TEST_EXECUTABLE_DIR,
+ os.path.basename(test_instance.exe_dist_dir))
self._test_run = tr
self._tool = tool
+ self._coverage_dir = test_instance.coverage_dir
+ self._suite = test_instance.suite
def GetTestDataRoot(self, device):
# pylint: disable=no-self-use
@@ -261,6 +302,14 @@ class _ExeDelegate(object):
'LD_LIBRARY_PATH': self._device_dist_dir
}
+ if self._coverage_dir:
+ coverage_device_file = device_temp_file.DeviceTempFile(
+ device.adb,
+ suffix='.profraw',
+ prefix=self._suite,
+ dir=device.GetExternalStoragePath())
+ env['LLVM_PROFILE_FILE'] = coverage_device_file.name
+
if self._tool != 'asan':
env['UBSAN_OPTIONS'] = constants.UBSAN_OPTIONS
@@ -276,6 +325,10 @@ class _ExeDelegate(object):
# fine from the test runner's perspective; thus check_return=False.
output = device.RunShellCommand(
cmd, cwd=cwd, env=env, check_return=False, large_output=True, **kwargs)
+
+ if self._coverage_dir:
+ _PullCoverageFile(device, coverage_device_file, self._coverage_dir)
+
return output
def PullAppFiles(self, device, files, directory):
@@ -296,8 +349,7 @@ class LocalDeviceGtestRun(local_device_test_run.LocalDeviceTestRun):
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)
+ self._delegate = _ExeDelegate(self, self._test_instance, self._env.tool)
if self._test_instance.isolated_script_test_perf_output:
self._test_perf_output_filenames = _GenerateSequentialFileNames(
self._test_instance.isolated_script_test_perf_output)
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 18914e9aa13..25e47a0159d 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
@@ -190,32 +190,33 @@ class LocalDeviceInstrumentationTestRun(
steps.append(use_webview_provider)
- def install_helper(apk, permissions):
+ def install_helper(apk, modules=None, fake_modules=None,
+ permissions=None):
+
@instrumentation_tracing.no_tracing
- @trace_event.traced("apk_path")
- def install_helper_internal(d, apk_path=apk.path):
+ @trace_event.traced
+ def install_helper_internal(d, apk_path=None):
# pylint: disable=unused-argument
- d.Install(apk, permissions=permissions)
+ logging.info('Start Installing %s', apk.path)
+ d.Install(
+ apk,
+ modules=modules,
+ fake_modules=fake_modules,
+ permissions=permissions)
+ logging.info('Finished Installing %s', apk.path)
+
return install_helper_internal
def incremental_install_helper(apk, json_path, permissions):
- @trace_event.traced("apk_path")
- def incremental_install_helper_internal(d, apk_path=apk.path):
+
+ @trace_event.traced
+ def incremental_install_helper_internal(d, apk_path=None):
# pylint: disable=unused-argument
+ logging.info('Start Incremental Installing %s', apk.path)
installer.Install(d, json_path, apk=apk, permissions=permissions)
- return incremental_install_helper_internal
+ logging.info('Finished Incremental Installing %s', apk.path)
- if self._test_instance.apk_under_test:
- permissions = self._test_instance.apk_under_test.GetPermissions()
- if self._test_instance.apk_under_test_incremental_install_json:
- steps.append(incremental_install_helper(
- self._test_instance.apk_under_test,
- self._test_instance.
- apk_under_test_incremental_install_json,
- permissions))
- else:
- steps.append(install_helper(self._test_instance.apk_under_test,
- permissions))
+ return incremental_install_helper_internal
permissions = self._test_instance.test_apk.GetPermissions()
if self._test_instance.test_apk_incremental_install_json:
@@ -225,11 +226,29 @@ class LocalDeviceInstrumentationTestRun(
test_apk_incremental_install_json,
permissions))
else:
- steps.append(install_helper(self._test_instance.test_apk,
- permissions))
+ steps.append(
+ install_helper(
+ self._test_instance.test_apk, permissions=permissions))
+
+ steps.extend(
+ install_helper(apk) for apk in self._test_instance.additional_apks)
- steps.extend(install_helper(apk, None)
- for apk in self._test_instance.additional_apks)
+ # The apk under test needs to be installed last since installing other
+ # apks after will unintentionally clear the fake module directory.
+ # TODO(wnwen): Make this more robust, fix crbug.com/1010954.
+ if self._test_instance.apk_under_test:
+ permissions = self._test_instance.apk_under_test.GetPermissions()
+ if self._test_instance.apk_under_test_incremental_install_json:
+ steps.append(
+ incremental_install_helper(
+ self._test_instance.apk_under_test,
+ self._test_instance.apk_under_test_incremental_install_json,
+ permissions))
+ else:
+ steps.append(
+ install_helper(self._test_instance.apk_under_test,
+ self._test_instance.modules,
+ self._test_instance.fake_modules, permissions))
@trace_event.traced
def set_debug_app(dev):
@@ -282,9 +301,9 @@ class LocalDeviceInstrumentationTestRun(
host_device_tuples_substituted = [
(h, local_device_test_run.SubstituteDeviceRoot(d, device_root))
for h, d in host_device_tuples]
- logging.info('instrumentation data deps:')
+ logging.info('Pushing data dependencies.')
for h, d in host_device_tuples_substituted:
- logging.info('%r -> %r', h, d)
+ logging.debug(' %r -> %r', h, d)
dev.PushChangedFiles(host_device_tuples_substituted,
delete_device_stale=True)
if not host_device_tuples_substituted:
@@ -541,6 +560,7 @@ class LocalDeviceInstrumentationTestRun(
with ui_capture_dir:
with self._env.output_manager.ArchivedTempfile(
stream_name, 'logcat') as logcat_file:
+ logmon = None
try:
with logcat_monitor.LogcatMonitor(
device.adb,
@@ -555,7 +575,8 @@ class LocalDeviceInstrumentationTestRun(
output = device.StartInstrumentation(
target, raw=True, extras=extras, timeout=timeout, retries=0)
finally:
- logmon.Close()
+ if logmon:
+ logmon.Close()
if logcat_file.Link():
logging.info('Logcat saved to %s', logcat_file.Link())
@@ -589,13 +610,12 @@ class LocalDeviceInstrumentationTestRun(
def handle_coverage_data():
if self._test_instance.coverage_directory:
try:
+ if not os.path.exists(self._test_instance.coverage_directory):
+ os.makedirs(self._test_instance.coverage_directory)
device.PullFile(coverage_device_file,
self._test_instance.coverage_directory)
- device.RunShellCommand(
- 'rm -f %s' % posixpath.join(coverage_directory, '*'),
- check_return=True,
- shell=True)
- except base_error.BaseError as e:
+ device.RemovePath(coverage_device_file, True)
+ except (OSError, base_error.BaseError) as e:
logging.warning('Failed to handle coverage data after tests: %s', e)
def handle_render_test_data():
diff --git a/chromium/build/android/pylib/local/emulator/avd.py b/chromium/build/android/pylib/local/emulator/avd.py
new file mode 100644
index 00000000000..fab9061e90e
--- /dev/null
+++ b/chromium/build/android/pylib/local/emulator/avd.py
@@ -0,0 +1,496 @@
+# Copyright 2019 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 contextlib
+import json
+import logging
+import os
+import socket
+import stat
+import subprocess
+import textwrap
+import threading
+
+from google.protobuf import text_format # pylint: disable=import-error
+
+from devil.android import device_utils
+from devil.android.sdk import adb_wrapper
+from devil.utils import cmd_helper
+from devil.utils import timeout_retry
+from py_utils import tempfile_ext
+from pylib import constants
+from pylib.local.emulator.proto import avd_pb2
+
+_ALL_PACKAGES = object()
+_DEFAULT_AVDMANAGER_PATH = os.path.join(constants.ANDROID_SDK_ROOT, 'tools',
+ 'bin', 'avdmanager')
+
+
+class AvdException(Exception):
+ """Raised when this module has a problem interacting with an AVD."""
+
+ def __init__(self, summary, command=None, stdout=None, stderr=None):
+ message_parts = [summary]
+ if command:
+ message_parts.append(' command: %s' % ' '.join(command))
+ if stdout:
+ message_parts.append(' stdout:')
+ message_parts.extend(' %s' % line for line in stdout.splitlines())
+ if stderr:
+ message_parts.append(' stderr:')
+ message_parts.extend(' %s' % line for line in stderr.splitlines())
+
+ super(AvdException, self).__init__('\n'.join(message_parts))
+
+
+def _Load(avd_proto_path):
+ """Loads an Avd proto from a textpb file at the given path.
+
+ Should not be called outside of this module.
+
+ Args:
+ avd_proto_path: path to a textpb file containing an Avd message.
+ """
+ with open(avd_proto_path) as avd_proto_file:
+ return text_format.Merge(avd_proto_file.read(), avd_pb2.Avd())
+
+
+class _AvdManagerAgent(object):
+ """Private utility for interacting with avdmanager."""
+
+ def __init__(self, avd_home, sdk_root):
+ """Create an _AvdManagerAgent.
+
+ Args:
+ avd_home: path to ANDROID_AVD_HOME directory.
+ Typically something like /path/to/dir/.android/avd
+ sdk_root: path to SDK root directory.
+ """
+ self._avd_home = avd_home
+ self._sdk_root = sdk_root
+
+ self._env = dict(os.environ)
+
+ # avdmanager, like many tools that have evolved from `android`
+ # (http://bit.ly/2m9JiTx), uses toolsdir to find the SDK root.
+ # Pass avdmanager a fake directory under the directory in which
+ # we install the system images s.t. avdmanager can find the
+ # system images.
+ fake_tools_dir = os.path.join(self._sdk_root, 'non-existent-tools')
+ self._env.update({
+ 'ANDROID_AVD_HOME':
+ self._avd_home,
+ 'AVDMANAGER_OPTS':
+ '-Dcom.android.sdkmanager.toolsdir=%s' % fake_tools_dir,
+ })
+
+ def Create(self, avd_name, system_image, force=False):
+ """Call `avdmanager create`.
+
+ Args:
+ avd_name: name of the AVD to create.
+ system_image: system image to use for the AVD.
+ force: whether to force creation, overwriting any existing
+ AVD with the same name.
+ """
+ create_cmd = [
+ _DEFAULT_AVDMANAGER_PATH,
+ '-v',
+ 'create',
+ 'avd',
+ '-n',
+ avd_name,
+ '-k',
+ system_image,
+ ]
+ if force:
+ create_cmd += ['--force']
+
+ create_proc = cmd_helper.Popen(
+ create_cmd,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ env=self._env)
+ output, error = create_proc.communicate(input='\n')
+ if create_proc.returncode != 0:
+ raise AvdException(
+ 'AVD creation failed',
+ command=create_cmd,
+ stdout=output,
+ stderr=error)
+
+ for line in output.splitlines():
+ logging.info(' %s', line)
+
+ def Delete(self, avd_name):
+ """Call `avdmanager delete`.
+
+ Args:
+ avd_name: name of the AVD to delete.
+ """
+ delete_cmd = [
+ _DEFAULT_AVDMANAGER_PATH,
+ '-v',
+ 'delete',
+ 'avd',
+ '-n',
+ avd_name,
+ ]
+ try:
+ for line in cmd_helper.IterCmdOutputLines(delete_cmd, env=self._env):
+ logging.info(' %s', line)
+ except subprocess.CalledProcessError as e:
+ raise AvdException('AVD deletion failed: %s' % str(e), command=delete_cmd)
+
+
+class AvdConfig(object):
+ """Represents a particular AVD configuration.
+
+ This class supports creation, installation, and execution of an AVD
+ from a given Avd proto message, as defined in
+ //build/android/pylib/local/emulator/proto/avd.proto.
+ """
+
+ def __init__(self, avd_proto_path):
+ """Create an AvdConfig object.
+
+ Args:
+ avd_proto_path: path to a textpb file containing an Avd message.
+ """
+ self._config = _Load(avd_proto_path)
+
+ self._emulator_home = os.path.join(constants.DIR_SOURCE_ROOT,
+ self._config.avd_package.dest_path)
+ self._emulator_sdk_root = os.path.join(
+ constants.DIR_SOURCE_ROOT, self._config.emulator_package.dest_path)
+ self._emulator_path = os.path.join(self._emulator_sdk_root, 'emulator',
+ 'emulator')
+
+ self._initialized = False
+ self._initializer_lock = threading.Lock()
+
+ def Create(self,
+ force=False,
+ snapshot=False,
+ keep=False,
+ cipd_json_output=None):
+ """Create an instance of the AVD CIPD package.
+
+ This method:
+ - installs the requisite system image
+ - creates the AVD
+ - modifies the AVD's ini files to support running chromium tests
+ in chromium infrastructure
+ - optionally starts & stops the AVD for snapshotting (default no)
+ - creates and uploads an instance of the AVD CIPD package
+ - optionally deletes the AVD (default yes)
+
+ Args:
+ force: bool indicating whether to force create the AVD.
+ snapshot: bool indicating whether to snapshot the AVD before creating
+ the CIPD package.
+ keep: bool indicating whether to keep the AVD after creating
+ the CIPD package.
+ cipd_json_output: string path to pass to `cipd create` via -json-output.
+ """
+ logging.info('Installing required packages.')
+ self.Install(packages=[
+ self._config.emulator_package,
+ self._config.system_image_package,
+ ])
+
+ android_avd_home = os.path.join(self._emulator_home, 'avd')
+
+ if not os.path.exists(android_avd_home):
+ os.makedirs(android_avd_home)
+
+ avd_manager = _AvdManagerAgent(
+ avd_home=android_avd_home, sdk_root=self._emulator_sdk_root)
+
+ logging.info('Creating AVD.')
+ avd_manager.Create(
+ avd_name=self._config.avd_name,
+ system_image=self._config.system_image_name,
+ force=force)
+
+ try:
+ logging.info('Modifying AVD configuration.')
+
+ # Clear out any previous configuration or state from this AVD.
+ root_ini = os.path.join(android_avd_home,
+ '%s.ini' % self._config.avd_name)
+ avd_dir = os.path.join(android_avd_home, '%s.avd' % self._config.avd_name)
+ config_ini = os.path.join(avd_dir, 'config.ini')
+
+ with open(root_ini, 'a') as root_ini_file:
+ root_ini_file.write('path.rel=avd/%s.avd\n' % self._config.avd_name)
+
+ with open(config_ini, 'a') as config_ini_file:
+ config_ini_file.write(
+ textwrap.dedent("""\
+ disk.dataPartition.size=4G
+ hw.lcd.density=160
+ hw.lcd.height=960
+ hw.lcd.width=480
+ """))
+
+ # Start & stop the AVD.
+ self._Initialize()
+ instance = _AvdInstance(self._emulator_path, self._config.avd_name,
+ self._emulator_home)
+ instance.Start(read_only=False, snapshot_save=snapshot)
+ device_utils.DeviceUtils(instance.serial).WaitUntilFullyBooted(
+ timeout=180, retries=0)
+ instance.Stop()
+
+ # The multiinstance lock file seems to interfere with the emulator's
+ # operation in some circumstances (beyond the obvious -read-only ones),
+ # and there seems to be no mechanism by which it gets closed or deleted.
+ # See https://bit.ly/2pWQTH7 for context.
+ multiInstanceLockFile = os.path.join(avd_dir, 'multiinstance.lock')
+ if os.path.exists(multiInstanceLockFile):
+ os.unlink(multiInstanceLockFile)
+
+ package_def_content = {
+ 'package':
+ self._config.avd_package.package_name,
+ 'root':
+ self._emulator_home,
+ 'install_mode':
+ 'copy',
+ 'data': [
+ {
+ 'dir': os.path.relpath(avd_dir, self._emulator_home)
+ },
+ {
+ 'file': os.path.relpath(root_ini, self._emulator_home)
+ },
+ ],
+ }
+
+ logging.info('Creating AVD CIPD package.')
+ logging.debug('ensure file content: %s',
+ json.dumps(package_def_content, indent=2))
+
+ with tempfile_ext.TemporaryFileName(suffix='.json') as package_def_path:
+ with open(package_def_path, 'w') as package_def_file:
+ json.dump(package_def_content, package_def_file)
+
+ logging.info(' %s', self._config.avd_package.package_name)
+ cipd_create_cmd = [
+ 'cipd',
+ 'create',
+ '-pkg-def',
+ package_def_path,
+ ]
+ if cipd_json_output:
+ cipd_create_cmd.extend([
+ '-json-output',
+ cipd_json_output,
+ ])
+ try:
+ for line in cmd_helper.IterCmdOutputLines(cipd_create_cmd):
+ logging.info(' %s', line)
+ except subprocess.CalledProcessError as e:
+ raise AvdException(
+ 'CIPD package creation failed: %s' % str(e),
+ command=cipd_create_cmd)
+
+ finally:
+ if not keep:
+ logging.info('Deleting AVD.')
+ avd_manager.Delete(avd_name=self._config.avd_name)
+
+ def Install(self, packages=_ALL_PACKAGES):
+ """Installs the requested CIPD packages.
+
+ Returns: None
+ Raises: AvdException on failure to install.
+ """
+ pkgs_by_dir = {}
+ if packages is _ALL_PACKAGES:
+ packages = [
+ self._config.avd_package,
+ self._config.emulator_package,
+ self._config.system_image_package,
+ ]
+ for pkg in packages:
+ if not pkg.dest_path in pkgs_by_dir:
+ pkgs_by_dir[pkg.dest_path] = []
+ pkgs_by_dir[pkg.dest_path].append(pkg)
+
+ for pkg_dir, pkgs in pkgs_by_dir.iteritems():
+ logging.info('Installing packages in %s', pkg_dir)
+ cipd_root = os.path.join(constants.DIR_SOURCE_ROOT, pkg_dir)
+ if not os.path.exists(cipd_root):
+ os.makedirs(cipd_root)
+ ensure_path = os.path.join(cipd_root, '.ensure')
+ with open(ensure_path, 'w') as ensure_file:
+ # Make CIPD ensure that all files are present, even if
+ # it thinks the package is installed.
+ ensure_file.write('$ParanoidMode CheckPresence\n\n')
+ for pkg in pkgs:
+ ensure_file.write('%s %s\n' % (pkg.package_name, pkg.version))
+ logging.info(' %s %s', pkg.package_name, pkg.version)
+ ensure_cmd = [
+ 'cipd',
+ 'ensure',
+ '-ensure-file',
+ ensure_path,
+ '-root',
+ cipd_root,
+ ]
+ try:
+ for line in cmd_helper.IterCmdOutputLines(ensure_cmd):
+ logging.info(' %s', line)
+ except subprocess.CalledProcessError as e:
+ raise AvdException(
+ 'Failed to install CIPD package %s: %s' % (pkg.package_name,
+ str(e)),
+ command=ensure_cmd)
+
+ # The emulator requires that some files are writable.
+ for dirname, _, filenames in os.walk(self._emulator_home):
+ for f in filenames:
+ path = os.path.join(dirname, f)
+ mode = os.lstat(path).st_mode
+ if mode & stat.S_IRUSR:
+ mode = mode | stat.S_IWUSR
+ os.chmod(path, mode)
+
+ def _Initialize(self):
+ if self._initialized:
+ return
+
+ with self._initializer_lock:
+ if self._initialized:
+ return
+
+ # Emulator start-up looks for the adb daemon. Make sure it's running.
+ adb_wrapper.AdbWrapper.StartServer()
+
+ # Emulator start-up tries to check for the SDK root by looking for
+ # platforms/ and platform-tools/. Ensure they exist.
+ # See http://bit.ly/2YAkyFE for context.
+ required_dirs = [
+ os.path.join(self._emulator_sdk_root, 'platforms'),
+ os.path.join(self._emulator_sdk_root, 'platform-tools'),
+ ]
+ for d in required_dirs:
+ if not os.path.exists(d):
+ os.makedirs(d)
+
+ def CreateInstance(self):
+ """Creates an AVD instance without starting it.
+
+ Returns:
+ An _AvdInstance.
+ """
+ self._Initialize()
+ return _AvdInstance(self._emulator_path, self._config.avd_name,
+ self._emulator_home)
+
+ def StartInstance(self):
+ """Starts an AVD instance.
+
+ Returns:
+ An _AvdInstance.
+ """
+ instance = self.CreateInstance()
+ instance.Start()
+ return instance
+
+
+class _AvdInstance(object):
+ """Represents a single running instance of an AVD.
+
+ This class should only be created directly by AvdConfig.StartInstance,
+ but its other methods can be freely called.
+ """
+
+ def __init__(self, emulator_path, avd_name, emulator_home):
+ """Create an _AvdInstance object.
+
+ Args:
+ emulator_path: path to the emulator binary.
+ avd_name: name of the AVD to run.
+ emulator_home: path to the emulator home directory.
+ """
+ self._avd_name = avd_name
+ self._emulator_home = emulator_home
+ self._emulator_path = emulator_path
+ self._emulator_proc = None
+ self._emulator_serial = None
+ self._sink = None
+
+ def __str__(self):
+ return '%s|%s' % (self._avd_name, (self._emulator_serial or id(self)))
+
+ def Start(self, read_only=True, snapshot_save=False, window=False):
+ """Starts the emulator running an instance of the given AVD."""
+ with tempfile_ext.TemporaryFileName() as socket_path, (contextlib.closing(
+ socket.socket(socket.AF_UNIX))) as sock:
+ sock.bind(socket_path)
+ emulator_cmd = [
+ self._emulator_path,
+ '-avd',
+ self._avd_name,
+ '-report-console',
+ 'unix:%s' % socket_path,
+ ]
+ if read_only:
+ emulator_cmd.append('-read-only')
+ if not snapshot_save:
+ emulator_cmd.append('-no-snapshot-save')
+ emulator_env = {}
+ if self._emulator_home:
+ emulator_env['ANDROID_EMULATOR_HOME'] = self._emulator_home
+ if window:
+ if 'DISPLAY' in os.environ:
+ emulator_env['DISPLAY'] = os.environ.get('DISPLAY')
+ else:
+ raise AvdException('Emulator failed to start: DISPLAY not defined')
+ else:
+ emulator_cmd.append('-no-window')
+ sock.listen(1)
+
+ logging.info('Starting emulator.')
+
+ # TODO(jbudorick): Add support for logging emulator stdout & stderr at
+ # higher logging levels.
+ self._sink = open('/dev/null', 'w')
+ self._emulator_proc = cmd_helper.Popen(
+ emulator_cmd, stdout=self._sink, stderr=self._sink, env=emulator_env)
+
+ # Waits for the emulator to report its serial as requested via
+ # -report-console. See http://bit.ly/2lK3L18 for more.
+ def listen_for_serial(s):
+ logging.info('Waiting for connection from emulator.')
+ with contextlib.closing(s.accept()[0]) as conn:
+ val = conn.recv(1024)
+ return 'emulator-%d' % int(val)
+
+ try:
+ self._emulator_serial = timeout_retry.Run(
+ listen_for_serial, timeout=30, retries=0, args=[sock])
+ logging.info('%s started', self._emulator_serial)
+ except Exception as e:
+ self.Stop()
+ raise AvdException('Emulator failed to start: %s' % str(e))
+
+ def Stop(self):
+ """Stops the emulator process."""
+ if self._emulator_proc:
+ if self._emulator_proc.poll() is None:
+ self._emulator_proc.terminate()
+ self._emulator_proc.wait()
+ self._emulator_proc = None
+ if self._sink:
+ self._sink.close()
+ self._sink = None
+
+ @property
+ def serial(self):
+ return self._emulator_serial
diff --git a/chromium/build/android/pylib/local/emulator/local_emulator_environment.py b/chromium/build/android/pylib/local/emulator/local_emulator_environment.py
index cd81cf9c3a7..22470c035e6 100644
--- a/chromium/build/android/pylib/local/emulator/local_emulator_environment.py
+++ b/chromium/build/android/pylib/local/emulator/local_emulator_environment.py
@@ -2,20 +2,14 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import contextlib
import logging
-import os
-import socket
-import stat
-from py_utils import tempfile_ext
-
-from devil.android.sdk import adb_wrapper
-from devil.utils import cmd_helper
-from devil.utils import timeout_retry
-
-from pylib import constants
+from devil.utils import parallelizer
from pylib.local.device import local_device_environment
+from pylib.local.emulator import avd
+
+# Mirroring https://bit.ly/2OjuxcS#23
+_MAX_ANDROID_EMULATORS = 16
class LocalEmulatorEnvironment(local_device_environment.LocalDeviceEnvironment):
@@ -23,99 +17,52 @@ class LocalEmulatorEnvironment(local_device_environment.LocalDeviceEnvironment):
def __init__(self, args, output_manager, error_func):
super(LocalEmulatorEnvironment, self).__init__(args, output_manager,
error_func)
- self._avd_name = args.avd_name
- self._emulator_home = (args.emulator_home
- or os.path.expanduser(os.path.join('~', '.android')))
-
- root_ini = os.path.join(self._emulator_home, 'avd',
- '%s.ini' % self._avd_name)
- if not os.path.exists(root_ini):
- error_func('Unable to find configuration for AVD %s at %s' %
- (self._avd_name, root_ini))
-
- self._emulator_path = os.path.join(constants.ANDROID_SDK_ROOT, 'emulator',
- 'emulator')
- if not os.path.exists(self._emulator_path):
- error_func('%s does not exist.' % self._emulator_path)
-
- self._emulator_proc = None
- self._emulator_serial = None
+ self._avd_config = avd.AvdConfig(args.avd_config)
+ if args.emulator_count < 1:
+ error_func('--emulator-count must be >= 1')
+ elif args.emulator_count >= _MAX_ANDROID_EMULATORS:
+ logging.warning('--emulator-count capped at 16.')
+ self._emulator_count = min(_MAX_ANDROID_EMULATORS, args.emulator_count)
+ self._emulator_window = args.emulator_window
+ self._emulator_instances = []
+ self._device_serials = []
#override
def SetUp(self):
- # Emulator start-up looks for the adb daemon. Make sure it's running.
- adb_wrapper.AdbWrapper.StartServer()
+ self._avd_config.Install()
- # Emulator start-up tries to check for the SDK root by looking for
- # platforms/ and platform-tools/. Ensure they exist.
- # See http://bit.ly/2YAkyFE for context.
- required_dirs = [
- os.path.join(constants.ANDROID_SDK_ROOT, 'platforms'),
- os.path.join(constants.ANDROID_SDK_ROOT, 'platform-tools'),
+ emulator_instances = [
+ self._avd_config.CreateInstance() for _ in range(self._emulator_count)
]
- for d in required_dirs:
- if not os.path.exists(d):
- os.makedirs(d)
- # The emulator requires that some files are writable.
- for dirname, _, filenames in os.walk(self._emulator_home):
- for f in filenames:
- path = os.path.join(dirname, f)
- if (os.lstat(path).st_mode &
- (stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) == stat.S_IRUSR):
- os.chmod(path, stat.S_IRUSR | stat.S_IWUSR)
+ def start_emulator_instance(e):
+ try:
+ e.Start(window=self._emulator_window)
+ return e
+ except avd.AvdException:
+ logging.exception('Failed to start emulator instance.')
+ return None
+
+ parallel_emulators = parallelizer.SyncParallelizer(emulator_instances)
+ self._emulator_instances = [
+ emu
+ for emu in parallel_emulators.pMap(start_emulator_instance).pGet(None)
+ if emu is not None
+ ]
+ self._device_serials = [e.serial for e in self._emulator_instances]
- self._emulator_proc, self._emulator_serial = self._StartInstance()
+ if not self._emulator_instances:
+ raise Exception('Failed to start any instances of the emulator.')
+ elif len(self._emulator_instances) < self._emulator_count:
+ logging.warning(
+ 'Running with fewer emulator instances than requested (%d vs %d)',
+ len(self._emulator_instances), self._emulator_count)
- logging.info('Emulator serial: %s', self._emulator_serial)
- self._device_serials = [self._emulator_serial]
super(LocalEmulatorEnvironment, self).SetUp()
- def _StartInstance(self):
- """Starts an AVD instance.
-
- Returns:
- A (Popen, str) 2-tuple that includes the process and serial.
- """
- # Start up the AVD.
- with tempfile_ext.TemporaryFileName() as socket_path, (contextlib.closing(
- socket.socket(socket.AF_UNIX))) as sock:
- sock.bind(socket_path)
- emulator_cmd = [
- self._emulator_path,
- '-avd',
- self._avd_name,
- '-report-console',
- 'unix:%s' % socket_path,
- '-read-only',
- '-no-window',
- ]
- emulator_env = {}
- if self._emulator_home:
- emulator_env['ANDROID_EMULATOR_HOME'] = self._emulator_home
- sock.listen(1)
- emulator_proc = cmd_helper.Popen(emulator_cmd, env=emulator_env)
-
- def listen_for_serial(s):
- logging.info('Waiting for connection from emulator.')
- with contextlib.closing(s.accept()[0]) as conn:
- val = conn.recv(1024)
- return 'emulator-%d' % int(val)
-
- try:
- emulator_serial = timeout_retry.Run(
- listen_for_serial, timeout=30, retries=0, args=[sock])
- except Exception:
- emulator_proc.terminate()
- raise
-
- return (emulator_proc, emulator_serial)
-
#override
def TearDown(self):
try:
super(LocalEmulatorEnvironment, self).TearDown()
finally:
- if self._emulator_proc:
- self._emulator_proc.terminate()
- self._emulator_proc.wait()
+ parallelizer.SyncParallelizer(self._emulator_instances).Stop()
diff --git a/chromium/build/android/pylib/local/emulator/proto/__init__.py b/chromium/build/android/pylib/local/emulator/proto/__init__.py
new file mode 100644
index 00000000000..4a12e35c925
--- /dev/null
+++ b/chromium/build/android/pylib/local/emulator/proto/__init__.py
@@ -0,0 +1,3 @@
+# Copyright 2019 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/local/emulator/proto/avd.proto b/chromium/build/android/pylib/local/emulator/proto/avd.proto
new file mode 100644
index 00000000000..adf5cb76469
--- /dev/null
+++ b/chromium/build/android/pylib/local/emulator/proto/avd.proto
@@ -0,0 +1,35 @@
+
+// Copyright 2019 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.
+
+syntax = "proto3";
+
+package tools.android.avd.proto;
+
+message CIPDPackage {
+ // CIPD package name.
+ string package_name = 1;
+ // CIPD package version to use.
+ // Ignored when creating AVD packages.
+ string version = 2;
+ // Path into which the package should be installed.
+ // src-relative.
+ string dest_path = 3;
+}
+
+message Avd {
+ // The emulator to use in running the AVD.
+ CIPDPackage emulator_package = 1;
+
+ // The system image to use.
+ CIPDPackage system_image_package = 2;
+ // The name of the system image to use, as reported by sdkmanager.
+ string system_image_name = 3;
+
+ // The AVD to create or use.
+ // (Only the package_name is used during AVD creation.)
+ CIPDPackage avd_package = 4;
+ // The name of the AVD to create or use.
+ string avd_name = 5;
+}
diff --git a/chromium/build/android/pylib/local/emulator/proto/avd_pb2.py b/chromium/build/android/pylib/local/emulator/proto/avd_pb2.py
new file mode 100644
index 00000000000..c264e6d17fe
--- /dev/null
+++ b/chromium/build/android/pylib/local/emulator/proto/avd_pb2.py
@@ -0,0 +1,218 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: avd.proto
+
+import sys
+_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+ name='avd.proto',
+ package='tools.android.avd.proto',
+ syntax='proto3',
+ serialized_pb=_b(
+ '\n\tavd.proto\x12\x17tools.android.avd.proto\"G\n\x0b\x43IPDPackage\x12\x14\n\x0cpackage_name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x11\n\tdest_path\x18\x03 \x01(\t\"\xf1\x01\n\x03\x41vd\x12>\n\x10\x65mulator_package\x18\x01 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x42\n\x14system_image_package\x18\x02 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x19\n\x11system_image_name\x18\x03 \x01(\t\x12\x39\n\x0b\x61vd_package\x18\x04 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x10\n\x08\x61vd_name\x18\x05 \x01(\tb\x06proto3'
+ ))
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+_CIPDPACKAGE = _descriptor.Descriptor(
+ name='CIPDPackage',
+ full_name='tools.android.avd.proto.CIPDPackage',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='package_name',
+ full_name='tools.android.avd.proto.CIPDPackage.package_name',
+ index=0,
+ number=1,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode('utf-8'),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='version',
+ full_name='tools.android.avd.proto.CIPDPackage.version',
+ index=1,
+ number=2,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode('utf-8'),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='dest_path',
+ full_name='tools.android.avd.proto.CIPDPackage.dest_path',
+ index=2,
+ number=3,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode('utf-8'),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ ],
+ extensions=[],
+ nested_types=[],
+ enum_types=[],
+ options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[],
+ serialized_start=38,
+ serialized_end=109,
+)
+
+_AVD = _descriptor.Descriptor(
+ name='Avd',
+ full_name='tools.android.avd.proto.Avd',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='emulator_package',
+ full_name='tools.android.avd.proto.Avd.emulator_package',
+ index=0,
+ number=1,
+ type=11,
+ cpp_type=10,
+ label=1,
+ has_default_value=False,
+ default_value=None,
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='system_image_package',
+ full_name='tools.android.avd.proto.Avd.system_image_package',
+ index=1,
+ number=2,
+ type=11,
+ cpp_type=10,
+ label=1,
+ has_default_value=False,
+ default_value=None,
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='system_image_name',
+ full_name='tools.android.avd.proto.Avd.system_image_name',
+ index=2,
+ number=3,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode('utf-8'),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='avd_package',
+ full_name='tools.android.avd.proto.Avd.avd_package',
+ index=3,
+ number=4,
+ type=11,
+ cpp_type=10,
+ label=1,
+ has_default_value=False,
+ default_value=None,
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='avd_name',
+ full_name='tools.android.avd.proto.Avd.avd_name',
+ index=4,
+ number=5,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode('utf-8'),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ options=None),
+ ],
+ extensions=[],
+ nested_types=[],
+ enum_types=[],
+ options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[],
+ serialized_start=112,
+ serialized_end=353,
+)
+
+_AVD.fields_by_name['emulator_package'].message_type = _CIPDPACKAGE
+_AVD.fields_by_name['system_image_package'].message_type = _CIPDPACKAGE
+_AVD.fields_by_name['avd_package'].message_type = _CIPDPACKAGE
+DESCRIPTOR.message_types_by_name['CIPDPackage'] = _CIPDPACKAGE
+DESCRIPTOR.message_types_by_name['Avd'] = _AVD
+
+CIPDPackage = _reflection.GeneratedProtocolMessageType(
+ 'CIPDPackage',
+ (_message.Message, ),
+ dict(
+ DESCRIPTOR=_CIPDPACKAGE,
+ __module__='avd_pb2'
+ # @@protoc_insertion_point(class_scope:tools.android.avd.proto.CIPDPackage)
+ ))
+_sym_db.RegisterMessage(CIPDPackage)
+
+Avd = _reflection.GeneratedProtocolMessageType(
+ 'Avd',
+ (_message.Message, ),
+ dict(
+ DESCRIPTOR=_AVD,
+ __module__='avd_pb2'
+ # @@protoc_insertion_point(class_scope:tools.android.avd.proto.Avd)
+ ))
+_sym_db.RegisterMessage(Avd)
+
+# @@protoc_insertion_point(module_scope)
diff --git a/chromium/build/android/pylib/local/machine/local_machine_junit_test_run.py b/chromium/build/android/pylib/local/machine/local_machine_junit_test_run.py
index 312bf9c6ff9..dab18e32000 100644
--- a/chromium/build/android/pylib/local/machine/local_machine_junit_test_run.py
+++ b/chromium/build/android/pylib/local/machine/local_machine_junit_test_run.py
@@ -5,6 +5,7 @@
import json
import logging
import os
+import zipfile
from devil.utils import cmd_helper
from pylib import constants
@@ -31,7 +32,6 @@ class LocalMachineJunitTestRun(test_run.TestRun):
def RunTests(self, results):
with tempfile_ext.NamedTemporaryDirectory() as temp_dir:
json_file_path = os.path.join(temp_dir, 'results.json')
-
java_script = os.path.join(
constants.GetOutDirectory(), 'bin', 'helper',
self._test_instance.suite)
@@ -55,8 +55,6 @@ class LocalMachineJunitTestRun(test_run.TestRun):
self._test_instance.robolectric_runtime_deps_dir,
'-Ddir.source.root=%s' % constants.DIR_SOURCE_ROOT,
'-Drobolectric.resourcesMode=binary',
- '-Dchromium.robolectric.resource.ap_=%s' %
- self._test_instance.resource_apk
]
if logging.getLogger().isEnabledFor(logging.INFO):
@@ -90,6 +88,14 @@ class LocalMachineJunitTestRun(test_run.TestRun):
if jvm_args:
command.extend(['--jvm-args', '"%s"' % ' '.join(jvm_args)])
+ # Create properties file for Robolectric test runners so they can find the
+ # binary resources.
+ properties_jar_path = os.path.join(temp_dir, 'properties.jar')
+ with zipfile.ZipFile(properties_jar_path, 'w') as z:
+ z.writestr('com/android/tools/test_config.properties',
+ 'android_resource_apk=%s' % self._test_instance.resource_apk)
+ command.extend(['--classpath', properties_jar_path])
+
cmd_helper.RunCmd(command)
try:
with open(json_file_path, 'r') as f:
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 5e5f83f2a27..b2e542bd2a6 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
@@ -301,7 +301,7 @@ class JSONResultsGeneratorBase(object):
"JSON upload failed, %d: '%s'", response.code, response.read())
else:
_log.error('JSON upload failed; no response returned')
- except Exception, err: # pylint: disable=broad-except
+ except Exception as err: # pylint: disable=broad-except
_log.error('Upload failed: %s', err)
return
@@ -385,12 +385,12 @@ class JSONResultsGeneratorBase(object):
# FIXME: We should talk to the network via a Host object.
results_file = urllib2.urlopen(results_file_url)
old_results = results_file.read()
- except urllib2.HTTPError, http_error:
+ except urllib2.HTTPError as http_error:
# A non-4xx status code means the bot is hosed for some reason
# and we can't grab the results.json file off of it.
if http_error.code < 400 and http_error.code >= 500:
error = http_error
- except urllib2.URLError, url_error:
+ except urllib2.URLError as url_error:
error = url_error
# pylint: enable=redefined-variable-type
diff --git a/chromium/build/android/pylib/utils/simpleperf.py b/chromium/build/android/pylib/utils/simpleperf.py
index be259d621f2..b3ba00e6c22 100644
--- a/chromium/build/android/pylib/utils/simpleperf.py
+++ b/chromium/build/android/pylib/utils/simpleperf.py
@@ -12,6 +12,7 @@ import tempfile
from devil import devil_env
from devil.android import device_signal
from devil.android.sdk import version_codes
+from pylib import constants
def _ProcessType(proc):
@@ -246,13 +247,13 @@ def ConvertSimpleperfToPprof(simpleperf_out_path, build_directory,
# Run the script to annotate symbols and convert from simpleperf format to
# pprof format.
- llvm_symbolizer_path = devil_env.config.LocalPath('llvm-symbolizer')
pprof_converter_script = os.path.join(
script_dir, 'pprof_proto_generator.py')
- pprof_converter_cmd = [sys.executable, pprof_converter_script,
- '-i', simpleperf_out_path,
- '-o', os.path.abspath(pprof_out_path),
- '--addr2line', llvm_symbolizer_path]
+ pprof_converter_cmd = [
+ sys.executable, pprof_converter_script, '-i', simpleperf_out_path, '-o',
+ os.path.abspath(pprof_out_path), '--ndk_path',
+ constants.ANDROID_NDK_ROOT
+ ]
subprocess.check_output(pprof_converter_cmd, stderr=subprocess.STDOUT,
cwd=processing_dir)
finally:
diff --git a/chromium/build/android/resource_sizes.py b/chromium/build/android/resource_sizes.py
index 2067f51d0ca..a48a951d88d 100755
--- a/chromium/build/android/resource_sizes.py
+++ b/chromium/build/android/resource_sizes.py
@@ -80,7 +80,6 @@ _READELF_SIZES_METRICS = {
'.dynsym', '.dynstr', '.dynamic', '.shstrtab', '.got', '.plt',
'.got.plt', '.hash', '.gnu.hash'
],
- 'bss': ['.bss', '.bss.rel.ro'],
'other': [
'.init_array', '.preinit_array', '.ctors', '.fini_array', '.comment',
'.note.gnu.gold-version', '.note.crashpad.info', '.note.android.ident',
@@ -104,12 +103,17 @@ def _RunReadelf(so_path, options, tool_prefix=''):
def _ExtractLibSectionSizesFromApk(apk_path, lib_path, tool_prefix):
with Unzip(apk_path, filename=lib_path) as extracted_lib_path:
grouped_section_sizes = collections.defaultdict(int)
- section_sizes = _CreateSectionNameSizeMap(extracted_lib_path, tool_prefix)
+ no_bits_section_sizes, section_sizes = _CreateSectionNameSizeMap(
+ extracted_lib_path, tool_prefix)
for group_name, section_names in _READELF_SIZES_METRICS.iteritems():
for section_name in section_names:
if section_name in section_sizes:
grouped_section_sizes[group_name] += section_sizes.pop(section_name)
+ # Consider all NOBITS sections as .bss.
+ grouped_section_sizes['bss'] = sum(
+ v for v in no_bits_section_sizes.itervalues())
+
# Group any unknown section headers into the "other" group.
for section_header, section_size in section_sizes.iteritems():
sys.stderr.write('Unknown elf section header: %s\n' % section_header)
@@ -121,12 +125,14 @@ def _ExtractLibSectionSizesFromApk(apk_path, lib_path, tool_prefix):
def _CreateSectionNameSizeMap(so_path, tool_prefix):
stdout = _RunReadelf(so_path, ['-S', '--wide'], tool_prefix)
section_sizes = {}
+ no_bits_section_sizes = {}
# Matches [ 2] .hash HASH 00000000006681f0 0001f0 003154 04 A 3 0 8
for match in re.finditer(r'\[[\s\d]+\] (\..*)$', stdout, re.MULTILINE):
items = match.group(1).split()
- section_sizes[items[0]] = int(items[4], 16)
+ target = no_bits_section_sizes if items[1] == 'NOBITS' else section_sizes
+ target[items[0]] = int(items[4], 16)
- return section_sizes
+ return no_bits_section_sizes, section_sizes
def _ParseManifestAttributes(apk_path):
@@ -210,6 +216,22 @@ def _RunAaptDumpResources(apk_path):
return output
+def _ReportDfmSizes(zip_obj, report_func):
+ sizes = collections.defaultdict(int)
+ for info in zip_obj.infolist():
+ # Looks for paths like splits/vr-master.apk, splits/vr-hi.apk.
+ name_parts = info.filename.split('/')
+ if name_parts[0] == 'splits' and len(name_parts) == 2:
+ name_parts = name_parts[1].split('-')
+ if len(name_parts) == 2:
+ module_name, config_name = name_parts
+ if module_name != 'base' and config_name[:-4] in ('master', 'hi'):
+ sizes[module_name] += info.file_size
+
+ for module_name, size in sorted(sizes.iteritems()):
+ report_func('DFM_' + module_name, 'Size with hindi', size, 'bytes')
+
+
class _FileGroup(object):
"""Represents a category that apk files can fall into."""
@@ -353,6 +375,7 @@ def _DoApkAnalysis(apk_filename, apks_path, tool_prefix, out_dir, report_func):
with zipfile.ZipFile(apks_path) as z:
hindi_apk_info = z.getinfo('splits/base-hi.apk')
total_apk_size += hindi_apk_info.file_size
+ _ReportDfmSizes(z, report_func)
total_install_size = total_apk_size
total_install_size_android_go = total_apk_size
@@ -435,14 +458,20 @@ def _DoApkAnalysis(apk_filename, apks_path, tool_prefix, out_dir, report_func):
# file size. Also gets rid of compression.
normalized_apk_size -= native_code.ComputeZippedSize()
normalized_apk_size += native_code_unaligned_size
+ # Normalized dex size: Size within the zip + size on disk for Android Go
+ # devices running Android O (which ~= uncompressed dex size).
+ # Use a constant compression factor to account for fluctuations.
+ normalized_apk_size -= java_code.ComputeZippedSize()
+ normalized_apk_size += java_code.ComputeUncompressedSize()
# Unaligned size should be ~= uncompressed size or something is wrong.
# As of now, padding_fraction ~= .007
padding_fraction = -_PercentageDifference(
native_code.ComputeUncompressedSize(), native_code_unaligned_size)
- assert 0 <= padding_fraction < .02, 'Padding was: {}'.format(padding_fraction)
- # Normalized dex size: size within the zip + size on disk for Android Go
- # devices (which ~= uncompressed dex size).
- normalized_apk_size += java_code.ComputeUncompressedSize()
+ assert 0 <= padding_fraction < .02, (
+ 'Padding was: {} (file_size={}, sections_sum={})'.format(
+ padding_fraction, native_code.ComputeUncompressedSize(),
+ native_code_unaligned_size))
+
if apks_path:
# Locale normalization not needed when measuring only one locale.
# E.g. a change that adds 300 chars of unstranslated strings would cause the
diff --git a/chromium/build/android/test_runner.py b/chromium/build/android/test_runner.py
index 443eb26221d..0f6cc5021d4 100755
--- a/chromium/build/android/test_runner.py
+++ b/chromium/build/android/test_runner.py
@@ -310,13 +310,21 @@ def AddEmulatorOptions(parser):
parser = parser.add_argument_group('emulator arguments')
parser.add_argument(
- '--avd-name',
- help='Run and manage the lifetime of an AVD with the given name.')
- parser.add_argument(
- '--emulator-home',
+ '--avd-config',
type=os.path.realpath,
- help='Emulator home directory '
- '(see ANDROID_EMULATOR_HOME: http://bit.ly/2K32oEy)')
+ help='Path to the avd config textpb. '
+ '(See //tools/android/avd/proto/ for message definition'
+ ' and existing textpb files.)')
+ parser.add_argument(
+ '--emulator-count',
+ type=int,
+ default=1,
+ help='Number of emulators to use.')
+ parser.add_argument(
+ '--emulator-window',
+ action='store_true',
+ default=False,
+ help='Enable graphical window display on the emulator.')
def AddGTestOptions(parser):
@@ -414,6 +422,18 @@ def AddInstrumentationTestOptions(parser):
'--apk-under-test',
help='Path or name of the apk under test.')
parser.add_argument(
+ '--module',
+ action='append',
+ dest='modules',
+ help='Specify Android App Bundle modules to install in addition to the '
+ 'base module.')
+ parser.add_argument(
+ '--fake-module',
+ action='append',
+ dest='fake_modules',
+ help='Specify Android App Bundle modules to fake install in addition to '
+ 'the real modules.')
+ parser.add_argument(
'--coverage-dir',
type=os.path.realpath,
help='Directory in which to place all generated '
diff --git a/chromium/build/android/test_runner.pydeps b/chromium/build/android/test_runner.pydeps
index 9b722c4027c..e4b118cc6bf 100644
--- a/chromium/build/android/test_runner.pydeps
+++ b/chromium/build/android/test_runner.pydeps
@@ -56,6 +56,7 @@
../../third_party/catapult/devil/devil/android/sdk/aapt.py
../../third_party/catapult/devil/devil/android/sdk/adb_wrapper.py
../../third_party/catapult/devil/devil/android/sdk/build_tools.py
+../../third_party/catapult/devil/devil/android/sdk/bundletool.py
../../third_party/catapult/devil/devil/android/sdk/intent.py
../../third_party/catapult/devil/devil/android/sdk/keyevent.py
../../third_party/catapult/devil/devil/android/sdk/shared_prefs.py
@@ -168,7 +169,10 @@ pylib/local/device/local_device_linker_test_run.py
pylib/local/device/local_device_monkey_test_run.py
pylib/local/device/local_device_test_run.py
pylib/local/emulator/__init__.py
+pylib/local/emulator/avd.py
pylib/local/emulator/local_emulator_environment.py
+pylib/local/emulator/proto/__init__.py
+pylib/local/emulator/proto/avd_pb2.py
pylib/local/local_test_server_spawner.py
pylib/local/machine/__init__.py
pylib/local/machine/local_machine_environment.py
diff --git a/chromium/build/android/update_verification.py b/chromium/build/android/update_verification.py
index 40cb64ac5da..c2f32432bb6 100755
--- a/chromium/build/android/update_verification.py
+++ b/chromium/build/android/update_verification.py
@@ -49,8 +49,7 @@ def TestUpdate(device, old_apk, new_apk, app_data, package_name):
# Restore command is not synchronous
raw_input('Select "Restore my data" on the device. Then press enter to '
'continue.')
- device_path = device.GetApplicationPaths(package_name)
- if not device_path:
+ if not device.IsApplicationInstalled(package_name):
raise Exception('Expected package %s to already be installed. '
'Package name might have changed!' % package_name)
diff --git a/chromium/build/args/headless.gn b/chromium/build/args/headless.gn
index 9a6bfd103cb..caa98430560 100644
--- a/chromium/build/args/headless.gn
+++ b/chromium/build/args/headless.gn
@@ -41,3 +41,4 @@ use_libpci = false
use_pulseaudio = false
use_udev = false
rtc_use_pipewire = false
+v8_enable_lazy_source_positions = false
diff --git a/chromium/build/check_gn_headers_whitelist.txt b/chromium/build/check_gn_headers_whitelist.txt
index 0d8df0ae60f..a6805c9f7b9 100644
--- a/chromium/build/check_gn_headers_whitelist.txt
+++ b/chromium/build/check_gn_headers_whitelist.txt
@@ -25,7 +25,6 @@ cc/input/event_listener_properties.h
cc/input/scrollbar.h
cc/input/scroller_size_metrics.h
cc/layers/performance_properties.h
-cc/layers/scrollbar_theme_painter.h
cc/output/bsp_compare_result.h
cc/resources/release_callback_impl.h
cc/resources/return_callback.h
diff --git a/chromium/build/chromeos/test_runner.py b/chromium/build/chromeos/test_runner.py
index 9fbbf5e8fac..39d6fef3b00 100755
--- a/chromium/build/chromeos/test_runner.py
+++ b/chromium/build/chromeos/test_runner.py
@@ -350,7 +350,7 @@ class TastTest(RemoteTest):
# See the link below for the format of these errors:
# https://godoc.org/chromium.googlesource.com/chromiumos/platform/tast.git/src/chromiumos/tast/testing#Error
for err in errors:
- error_log += str(err['stack']) + '\n'
+ error_log += err['stack'].encode('utf-8') + '\n'
error_log += (
"\nIf you're unsure why this test failed, consult the steps "
'outlined in\n%s\n' % TAST_DEBUG_DOC)
@@ -450,7 +450,7 @@ class GTestTest(RemoteTest):
])
test_invocation = (
- './%s --test-launcher-shard-index=%d '
+ 'LD_LIBRARY_PATH=./ ./%s --test-launcher-shard-index=%d '
'--test-launcher-total-shards=%d' % (
self._test_exe, self._test_launcher_shard_index,
self._test_launcher_total_shards)
diff --git a/chromium/build/config/BUILDCONFIG.gn b/chromium/build/config/BUILDCONFIG.gn
index 59ab7810e71..f89e7e831b7 100644
--- a/chromium/build/config/BUILDCONFIG.gn
+++ b/chromium/build/config/BUILDCONFIG.gn
@@ -435,6 +435,7 @@ default_compiler_configs = [
"//build/config/compiler:no_rtti",
"//build/config/compiler:runtime_library",
"//build/config/compiler:thin_archive",
+ "//build/config/compiler:default_init_stack_vars",
"//build/config/coverage:default_coverage",
"//build/config/sanitizers:default_sanitizer_flags",
]
diff --git a/chromium/build/config/OWNERS b/chromium/build/config/OWNERS
index 082e53e0186..9eccd5b9f14 100644
--- a/chromium/build/config/OWNERS
+++ b/chromium/build/config/OWNERS
@@ -1,4 +1,4 @@
dpranke@chromium.org
scottmg@chromium.org
-per-file *jumbo*=bratell@opera.com
+per-file *jumbo*=bratell.d@gmail.com
diff --git a/chromium/build/config/aix/BUILD.gn b/chromium/build/config/aix/BUILD.gn
index e3f21c39c5d..6c8749ab5c3 100644
--- a/chromium/build/config/aix/BUILD.gn
+++ b/chromium/build/config/aix/BUILD.gn
@@ -35,7 +35,6 @@ config("compiler") {
]
cflags_cc = [
- "-std=gnu++11",
"-fno-rtti",
"-fno-exceptions",
"-Wno-narrowing",
diff --git a/chromium/build/config/android/config.gni b/chromium/build/config/android/config.gni
index c1bfc874669..00764337442 100644
--- a/chromium/build/config/android/config.gni
+++ b/chromium/build/config/android/config.gni
@@ -182,10 +182,6 @@ if (is_android || is_chromeos) {
# Set to false to disable the Errorprone compiler
use_errorprone_java_compiler = true
- # Enables Jacoco Java code coverage. Instruments classes during build to
- # produce .exec files during runtime
- jacoco_coverage = false
-
# Disables process isolation when building _incremental targets.
# Required for Android M+ due to SELinux policies (stronger sandboxing).
disable_incremental_isolated_processes = false
@@ -234,17 +230,13 @@ if (is_android || is_chromeos) {
android_sdk_platform_version = android_sdk_version
}
- # Speed up dexing using dx --incremental.
- enable_incremental_dx = is_java_debug
+ # Reduce build time by using d8 incremental build.
+ enable_incremental_d8 = true
# Use hashed symbol names to reduce JNI symbol overhead.
use_hashed_jni_names = !is_java_debug
}
- # This should not be used for release builds since dx --incremental is known
- # to not produce byte-for-byte identical output.
- assert(!(enable_incremental_dx && !is_java_debug))
-
# Path to where selected build variables are written to.
android_build_vars = "$root_build_dir/build_vars.txt"
diff --git a/chromium/build/config/android/internal_rules.gni b/chromium/build/config/android/internal_rules.gni
index 7e8306a1292..c4d3afa5204 100644
--- a/chromium/build/config/android/internal_rules.gni
+++ b/chromium/build/config/android/internal_rules.gni
@@ -6,6 +6,7 @@
# Some projects (e.g. V8) do not have non-build directories DEPS'ed in.
import("//build/config/android/config.gni")
import("//build/config/android/copy_ex.gni")
+import("//build/config/coverage/coverage.gni")
import("//build/config/dcheck_always_on.gni")
import("//build/config/python.gni")
import("//build/config/sanitizers/sanitizers.gni")
@@ -226,12 +227,15 @@ template("write_build_config") {
args += [ "--annotation-processor-configs=$_rebased_processor_configs" ]
}
+ # Dex path for library targets, or the the intermediate library for apks.
if (defined(invoker.dex_path)) {
args += [
"--dex-path",
rebase_path(invoker.dex_path, root_build_dir),
]
}
+
+ # Dex path for the final apk.
if (defined(invoker.final_dex_path)) {
args += [
"--final-dex-path",
@@ -661,6 +665,16 @@ template("test_runner_script") {
"--suite",
invoker.test_suite,
]
+ if (use_clang_coverage) {
+ # Set a default coverage output directory (can be overridden by user
+ # passing the same flag).
+ _rebased_coverage_dir =
+ rebase_path("$root_out_dir/coverage", root_build_dir)
+ executable_args += [
+ "--coverage-dir",
+ "@WrappedPath(${_rebased_coverage_dir})",
+ ]
+ }
} else if (_test_type == "instrumentation") {
_test_apk = "@WrappedPath(@FileArg($_rebased_apk_build_config:deps_info:apk_path))"
if (_incremental_install) {
@@ -697,7 +711,7 @@ template("test_runner_script") {
if (defined(invoker.proguard_enabled) && invoker.proguard_enabled) {
executable_args += [ "--enable-java-deobfuscation" ]
}
- if (jacoco_coverage) {
+ if (use_jacoco_coverage) {
# Set a default coverage output directory (can be overridden by user
# passing the same flag).
_rebased_coverage_dir =
@@ -729,7 +743,7 @@ template("test_runner_script") {
"--robolectric-runtime-deps-dir",
"@WrappedPath(${_rebased_robolectric_runtime_deps_dir})",
]
- if (jacoco_coverage) {
+ if (use_jacoco_coverage) {
# Set a default coverage output directory (can be overridden by user
# passing the same flag).
_rebased_coverage_dir =
@@ -796,8 +810,17 @@ template("test_runner_script") {
}
}
- if (defined(invoker.command_line_args)) {
- executable_args += invoker.command_line_args
+ if (defined(invoker.fake_modules)) {
+ foreach(fake_module, invoker.fake_modules) {
+ executable_args += [
+ "--fake-module",
+ fake_module,
+ ]
+ }
+ }
+
+ if (defined(invoker.extra_args)) {
+ executable_args += invoker.extra_args
}
}
}
@@ -1092,7 +1115,7 @@ if (enable_java_templates) {
}
args += [ "--classpath=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)" ]
- if (jacoco_coverage) {
+ if (use_jacoco_coverage) {
args += [
"--classpath",
rebase_path("//third_party/jacoco/lib/jacocoagent.jar",
@@ -1132,8 +1155,10 @@ if (enable_java_templates) {
}
}
- assert(!(defined(invoker.input_jars) && _proguard_enabled),
- "input_jars can't be specified when proguarding a dex.")
+ assert(!_proguard_enabled || !(defined(invoker.input_dex_filearg) ||
+ defined(invoker.input_classes_filearg) ||
+ defined(invoker.input_class_jars)),
+ "Cannot explicitly set inputs when proguarding a dex.")
assert(!(defined(invoker.apply_mapping) && !_proguard_enabled),
"apply_mapping can only be specified if proguard is enabled.")
@@ -1142,13 +1167,6 @@ if (enable_java_templates) {
_main_dex_rules = "//build/android/main_dex_classes.flags"
}
- if (!_proguarding_with_r8) {
- _dexing_jars = []
- if (defined(invoker.input_jars)) {
- _dexing_jars += invoker.input_jars
- }
- }
-
if (_proguard_enabled) {
if (_proguarding_with_r8) {
_proguard_output_path = invoker.output
@@ -1157,7 +1175,6 @@ if (enable_java_templates) {
} else {
_proguard_output_path = invoker.output + ".proguard.jar"
_proguard_target_name = "${target_name}__proguard"
- _dexing_jars += [ _proguard_output_path ]
}
proguard(_proguard_target_name) {
@@ -1233,6 +1250,18 @@ if (enable_java_templates) {
}
if (!_proguarding_with_r8) {
+ _input_class_jars = []
+ if (defined(invoker.input_class_jars)) {
+ _input_class_jars = invoker.input_class_jars
+ }
+ if (_proguard_enabled) {
+ _input_class_jars += [ _proguard_output_path ]
+ }
+ if (_input_class_jars != []) {
+ _rebased_input_class_jars =
+ rebase_path(_input_class_jars, root_build_dir)
+ }
+
if (_enable_main_dex_list) {
_main_dex_list_path = invoker.output + ".main_dex_list"
_main_dex_list_target_name = "${target_name}__main_dex_list"
@@ -1253,11 +1282,11 @@ if (enable_java_templates) {
_dx = "$android_sdk_build_tools/lib/dx.jar"
_r8 = "//third_party/r8/lib/r8.jar"
inputs = [
- _main_dex_rules,
- _dx,
- _r8,
- _shrinked_android,
- ]
+ _main_dex_rules,
+ _dx,
+ _r8,
+ _shrinked_android,
+ ] + _input_class_jars
outputs = [
_main_dex_list_path,
@@ -1297,14 +1326,17 @@ if (enable_java_templates) {
]
}
- if (defined(invoker.input_jar_classpath)) {
+ if (defined(invoker.input_classes_filearg)) {
inputs += [ invoker.build_config ]
- args += [ "--inputs=@FileArg(${invoker.input_jar_classpath})" ]
- } else {
- inputs += _dexing_jars
- if (_dexing_jars != []) {
- args += rebase_path(_dexing_jars, root_build_dir)
- }
+ args +=
+ [ "--class-inputs-filearg=${invoker.input_classes_filearg}" ]
+ }
+ if (defined(invoker.main_dex_list_input_classes_filearg)) {
+ inputs += [ invoker.build_config ]
+ args += [ "--class-inputs-filearg=${invoker.main_dex_list_input_classes_filearg}" ]
+ }
+ if (_input_class_jars != []) {
+ args += [ "--class-inputs=${_rebased_input_class_jars}" ]
}
}
}
@@ -1331,6 +1363,17 @@ if (enable_java_templates) {
if (_proguard_enabled) {
deps += [ ":${_proguard_target_name}" ]
+ } else if (enable_incremental_d8) {
+ # Don't use incremental dexing for ProGuarded inputs as a precaution.
+ args += [
+ "--incremental-dir",
+ rebase_path("$target_out_dir/$target_name", root_build_dir),
+ ]
+ if (is_java_debug) {
+ # The performance of incremental install is unbearable if each
+ # lib.dex.jar file has multiple classes.dex files in it.
+ args += [ "--merge-incrementals" ]
+ }
}
if (_enable_multidex) {
@@ -1345,14 +1388,17 @@ if (enable_java_templates) {
}
}
- if (defined(invoker.input_dex_classpath)) {
+ if (defined(invoker.input_dex_filearg)) {
inputs += [ invoker.build_config ]
- args += [ "--input-list=@FileArg(${invoker.input_dex_classpath})" ]
+ args += [ "--dex-inputs-filearg=${invoker.input_dex_filearg}" ]
}
-
- inputs += _dexing_jars
- if (_dexing_jars != []) {
- args += rebase_path(_dexing_jars, root_build_dir)
+ if (defined(invoker.input_classes_filearg)) {
+ inputs += [ invoker.build_config ]
+ args += [ "--class-inputs-filearg=${invoker.input_classes_filearg}" ]
+ }
+ if (_input_class_jars != []) {
+ inputs += _input_class_jars
+ args += [ "--class-inputs=${_rebased_input_class_jars}" ]
}
if (defined(invoker.dexlayout_profile)) {
@@ -1393,11 +1439,10 @@ if (enable_java_templates) {
]
}
- _d8_path = "//third_party/r8/lib/d8.jar"
- inputs += [ _d8_path ]
+ inputs += [ _r8_path ]
args += [
- "--d8-jar-path",
- rebase_path(_d8_path, root_build_dir),
+ "--r8-jar-path",
+ rebase_path(_r8_path, root_build_dir),
]
}
}
@@ -1436,6 +1481,12 @@ if (enable_java_templates) {
"--jacococli-jar",
rebase_path(_jacococli_jar, root_build_dir),
]
+ if (coverage_instrumentation_input_file != "") {
+ args += [
+ "--files-to-instrument",
+ rebase_path(coverage_instrumentation_input_file, root_build_dir),
+ ]
+ }
}
}
@@ -1487,13 +1538,9 @@ if (enable_java_templates) {
_desugar = defined(invoker.supports_android) && invoker.supports_android
_jacoco_instrument = invoker.jacoco_instrument
- _enable_split_compat = defined(invoker.split_compat_class_names)
- _enable_class_deps_output = defined(invoker.enable_class_deps_output)
_enable_bytecode_rewriter =
- _enable_assert || _enable_custom_resources ||
- _enable_thread_annotations || _enable_split_compat ||
- _enable_class_deps_output
+ _enable_assert || _enable_custom_resources || _enable_thread_annotations
_is_prebuilt = defined(invoker.is_prebuilt) && invoker.is_prebuilt
_enable_bytecode_checks = !defined(invoker.enable_bytecode_checks) ||
invoker.enable_bytecode_checks
@@ -1576,14 +1623,6 @@ if (enable_java_templates) {
if (_enable_bytecode_checks) {
args += [ "--enable-check-class-path" ]
}
- if (_enable_split_compat) {
- args += [ "--split-compat-class-names" ] +
- invoker.split_compat_class_names
- }
- if (_enable_class_deps_output) {
- args += [ "--enable-class-deps-output" ] +
- [ invoker.enable_class_deps_output ]
- }
args += [
"--direct-classpath-jars",
"@FileArg($_rebased_build_config:javac:classpath)",
@@ -2026,16 +2065,10 @@ if (enable_java_templates) {
# post_process_script: (optional)
#
# package_name: (optional)
- # Name of the package for the purpose of assigning package ID.
- #
- # package_name_to_id_mapping: (optional)
- # List containing mapping from package names to package IDs. It will be
- # used to determine which package ID to assign if package_name variable
- # was passed in.
+ # Name of the package for the purpose of creating R class.
#
# package_id: (optional)
- # Use a custom package ID in resource IDs (same purpose as
- # package_name_to_id_mapping)
+ # Use a custom package ID in resource IDs.
#
# arsc_package_name: (optional)
# Use this package name in the arsc file rather than the package name
@@ -2069,10 +2102,6 @@ if (enable_java_templates) {
# Path for the generated map between original resource paths and
# shortend resource paths.
#
- # srcjar_path: (optional)
- # Path to a generated .srcjar containing the generated R.java sources
- # for all dependent resource libraries.
- #
# proguard_file: (optional)
# Path to proguard configuration file for this apk target.
#
@@ -2086,10 +2115,12 @@ if (enable_java_templates) {
if (defined(invoker.optimized_arsc_output)) {
_optimized_arsc_output = invoker.optimized_arsc_output
}
- _srcjar_path = invoker.srcjar_path
+ _final_srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
+ _intermediate_srcjar_path = _final_srcjar_path
if (defined(invoker.post_process_script)) {
_compile_resources_target_name = "${target_name}__intermediate"
- _srcjar_path = "${_srcjar_path}.intermediate.srcjar"
+ _intermediate_srcjar_path =
+ "${target_gen_dir}/${target_name}.intermediate.srcjar"
_intermediate_path =
get_path_info(_arsc_output, "dir") + "/" +
get_path_info(_arsc_output, "name") + ".intermediate.ap_"
@@ -2144,13 +2175,13 @@ if (enable_java_templates) {
inputs += [ invoker.android_manifest ]
outputs = [
- _srcjar_path,
+ _intermediate_srcjar_path,
]
args += [
"--android-manifest",
rebase_path(invoker.android_manifest, root_build_dir),
"--srcjar-out",
- rebase_path(_srcjar_path, root_build_dir),
+ rebase_path(_intermediate_srcjar_path, root_build_dir),
]
if (defined(invoker.no_xml_namespaces) && invoker.no_xml_namespaces) {
args += [ "--no-xml-namespaces" ]
@@ -2271,8 +2302,8 @@ if (enable_java_templates) {
}
if (defined(invoker.package_name)) {
args += [
- "--package-name=${invoker.package_name}",
- "--package-name-to-id-mapping=${invoker.package_name_to_id_mapping}",
+ "--package-name",
+ invoker.package_name,
]
}
if (defined(invoker.arsc_package_name)) {
@@ -2396,9 +2427,9 @@ if (enable_java_templates) {
"--depfile",
rebase_path(depfile, root_build_dir),
"--srcjar-in",
- rebase_path(_srcjar_path, root_build_dir),
+ rebase_path(_intermediate_srcjar_path, root_build_dir),
"--srcjar-out",
- rebase_path(invoker.srcjar_path, root_build_dir),
+ rebase_path(_final_srcjar_path, root_build_dir),
]
if (defined(_optimized_arsc_output)) {
_input_apk = _optimized_arsc_output
@@ -2423,14 +2454,14 @@ if (enable_java_templates) {
}
inputs = [
_input_apk,
- _srcjar_path,
+ _intermediate_srcjar_path,
]
if (defined(invoker.post_process_script_inputs)) {
inputs += invoker.post_process_script_inputs
}
outputs = [
_output_apk,
- invoker.srcjar_path,
+ _final_srcjar_path,
]
public_deps = [
":${_compile_resources_target_name}",
@@ -2789,7 +2820,7 @@ if (enable_java_templates) {
if (defined(_dex_path)) {
dex_path =
- get_label_info(_dex_target, "target_gen_dir") + "/bootstrap.dex"
+ get_label_info(_dex_target, "target_out_dir") + "/bootstrap.dex"
}
native_libs = _native_libs_even_when_incremental
@@ -3091,7 +3122,7 @@ if (enable_java_templates) {
# Chromium-specific unless it is in a 'chromium' sub-directory).
# jacoco_never_instrument: Optional. If provided, whether to forbid
# instrumentation with the Jacoco coverage processor. If not provided,
- # this is controlled by the global jacoco_coverage build arg variable
+ # this is controlled by the global use_jacoco_coverage build arg variable
# and only used for non-test Chromium code.
# include_android_sdk: Optional. Whether or not the android SDK dep
# should be added to deps. Defaults to true for non-system libraries
@@ -3257,7 +3288,7 @@ if (enable_java_templates) {
}
if (_supports_android) {
- _dex_path = "$target_gen_dir/$_main_target_name.dex.jar"
+ _dex_path = "$target_out_dir/$_main_target_name.dex.jar"
if (defined(invoker.dex_path)) {
_dex_path = invoker.dex_path
}
@@ -3311,7 +3342,8 @@ if (enable_java_templates) {
if (defined(_final_jar_path)) {
_jacoco_instrument =
- jacoco_coverage && _chromium_code && _java_files != [] &&
+ use_jacoco_coverage && _chromium_code && _java_files != [] &&
+ !_is_java_binary && !_is_annotation_processor &&
(!defined(invoker.testonly) || !invoker.testonly)
if (defined(invoker.jacoco_never_instrument)) {
_jacoco_instrument =
@@ -3597,10 +3629,8 @@ if (enable_java_templates) {
[
"enable_bytecode_checks",
"enable_bytecode_rewriter",
- "enable_class_deps_output",
"jar_excluded_patterns",
"jar_included_patterns",
- "split_compat_class_names",
])
is_prebuilt = _is_prebuilt
supports_android = _supports_android
@@ -3620,11 +3650,15 @@ if (enable_java_templates) {
if (defined(_dex_path)) {
dex("${target_name}__dex") {
- input_jars = [ _final_jar_path ]
+ input_class_jars = [ _final_jar_path ]
output = _dex_path
deps = [
":$_process_prebuilt_target_name",
]
+
+ # Should never need multidex when compiling individual libraries.
+ # Disabling multidex saves on having to create a main_dex_list.
+ enable_multidex = false
}
_accumulated_public_deps += [ ":${target_name}__dex" ]
}
diff --git a/chromium/build/config/android/linker_version_script.gni b/chromium/build/config/android/linker_version_script.gni
index a764df37c5d..c7cc4fb0162 100644
--- a/chromium/build/config/android/linker_version_script.gni
+++ b/chromium/build/config/android/linker_version_script.gni
@@ -27,6 +27,11 @@ template("generate_linker_version_script") {
args += [ "--export-java-symbols" ]
}
+ if (defined(invoker.export_feature_registrations) &&
+ invoker.export_feature_registrations) {
+ args += [ "--export-feature-registrations" ]
+ }
+
if (defined(invoker.export_symbol_whitelist_files)) {
foreach(file_, invoker.export_symbol_whitelist_files) {
inputs += [ file_ ]
diff --git a/chromium/build/config/android/rules.gni b/chromium/build/config/android/rules.gni
index c99d7820ca0..70b5c29ce26 100644
--- a/chromium/build/config/android/rules.gni
+++ b/chromium/build/config/android/rules.gni
@@ -192,11 +192,12 @@ if (enable_java_templates) {
"//base/android/jni_generator/jni_generator_helper.h"
_jni_generator_include_deps = [
# Using //base/android/jni_generator/jni_generator_helper.h introduces
- # a dependency on debugging_buildflags indirectly through
+ # a dependency on buildflags targets indirectly through
# base/android/jni_android.h, which is part of the //base target.
# This can't depend directly on //base without causing a dependency
# cycle, though.
"//base:debugging_buildflags",
+ "//base:logging_buildflags",
]
}
@@ -372,14 +373,16 @@ if (enable_java_templates) {
template("generate_jni_registration") {
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"
+ _build_config = get_label_info("${invoker.target}($default_toolchain)",
+ "target_gen_dir") + "/" +
+ get_label_info("${invoker.target}($default_toolchain)",
+ "name") + ".build_config"
_rebased_build_config = rebase_path(_build_config, root_build_dir)
_srcjar_output = "$target_gen_dir/$target_name.srcjar"
script = "//base/android/jni_generator/jni_registration_generator.py"
deps = [
- "${invoker.target}$build_config_target_suffix",
+ "${invoker.target}$build_config_target_suffix($default_toolchain)",
]
inputs = [
_build_config,
@@ -1401,7 +1404,6 @@ if (enable_java_templates) {
compile_resources(_compile_resources_target) {
deps = _deps + [ ":$_build_config_target_name" ]
build_config = _build_config
- srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
if (defined(_package_name)) {
rename_manifest_package = _package_name
}
@@ -1757,6 +1759,8 @@ if (enable_java_templates) {
# android_manifest: Path to AndroidManifest.xml (optional).
# native_libraries: list of native libraries (optional).
# direct_deps_only: Do not recurse on deps. (optional, defaults false).
+ # jar_excluded_patterns (optional): List of globs for paths to exclude.
+ # jar_included_patterns (optional): List of globs for paths to include.
#
# Example
# dist_aar("my_aar") {
@@ -1841,6 +1845,17 @@ if (enable_java_templates) {
"--abi=$android_app_abi",
]
}
+ if (defined(invoker.jar_excluded_patterns)) {
+ args += [ "--jar-excluded-globs=${invoker.jar_excluded_patterns}" ]
+ }
+ if (defined(invoker.jar_included_patterns)) {
+ args += [ "--jar-included-globs=${invoker.jar_included_patterns}" ]
+ }
+ if (defined(invoker.resource_included_patterns)) {
+ args += [
+ "--resource-included-globs=${invoker.resource_included_patterns}",
+ ]
+ }
}
}
@@ -1974,6 +1989,10 @@ if (enable_java_templates) {
defines += [ "_IS_CHROME_BRANDED" ]
}
+ if (defined(invoker.is_bundle_module) && invoker.is_bundle_module) {
+ defines += [ "_IS_BUNDLE" ]
+ }
+
if (invoker.use_final_fields) {
forward_variables_from(invoker,
[
@@ -2129,8 +2148,8 @@ if (enable_java_templates) {
template("android_apk_or_module") {
forward_variables_from(invoker, [ "testonly" ])
assert(defined(invoker.android_manifest))
- _gen_dir = "$target_gen_dir/$target_name"
- _base_path = "$_gen_dir/$target_name"
+ _out_dir = "$target_out_dir/$target_name"
+ _base_path = "$_out_dir/$target_name"
_build_config = "$target_gen_dir/$target_name.build_config"
_build_config_target = "$target_name$build_config_target_suffix"
@@ -2146,7 +2165,6 @@ if (enable_java_templates) {
# JUnit tests use resource zip files. These must not be put in gen/
# directory or they will not be available to tester bots.
_jar_path = "$_base_path.jar"
- _lib_dex_path = "$_base_path.dex.jar"
_template_name = target_name
_is_bundle_module =
@@ -2158,7 +2176,7 @@ if (enable_java_templates) {
_enable_multidex =
!defined(invoker.enable_multidex) || invoker.enable_multidex
- _final_dex_path = "$_gen_dir/classes.dex.zip"
+ _final_dex_path = "$_out_dir/classes.dex.zip"
if (!_is_bundle_module) {
_final_apk_path = invoker.final_apk_path
@@ -2357,7 +2375,7 @@ if (enable_java_templates) {
defined(invoker.static_library_dependent_targets) && _proguard_enabled
if (_is_static_library_provider) {
_static_library_sync_dex_path =
- "$_gen_dir/static_library_synchronized_proguard.classes.dex.zip"
+ "$_out_dir/static_library_synchronized_proguard.classes.dex.zip"
_resource_ids_provider_deps = []
foreach(_target, invoker.static_library_dependent_targets) {
if (_target.is_resource_ids_provider) {
@@ -2457,8 +2475,8 @@ if (enable_java_templates) {
"manifest_package",
"max_sdk_version",
"no_xml_namespaces",
+ "package_id",
"package_name",
- "package_name_to_id_mapping",
"png_to_webp",
"r_java_root_package_name",
"resource_blacklist_exceptions",
@@ -2489,7 +2507,6 @@ if (enable_java_templates) {
if (defined(invoker.post_process_package_resources_script)) {
post_process_script = invoker.post_process_package_resources_script
}
- srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
r_text_out_path = _compile_resources_rtxt_out
emit_ids_out_path = _compile_resources_emit_ids_out
size_info_path = _res_size_info_path
@@ -2687,7 +2704,11 @@ if (enable_java_templates) {
if (_generate_buildconfig_java) {
generate_build_config_srcjar("${_template_name}__build_config_srcjar") {
- forward_variables_from(invoker, [ "min_sdk_version" ])
+ forward_variables_from(invoker,
+ [
+ "is_bundle_module",
+ "min_sdk_version",
+ ])
use_final_fields = true
enable_multidex = _enable_multidex
if (defined(invoker.product_version_resources_dep)) {
@@ -2761,7 +2782,6 @@ if (enable_java_templates) {
"base_module_target",
"chromium_code",
"classpath_deps",
- "enable_class_deps_output",
"jacoco_never_instrument",
"java_files",
"javac_args",
@@ -2794,7 +2814,6 @@ if (enable_java_templates) {
deps = _deps
srcjar_deps = _srcjar_deps
final_jar_path = _jar_path
- dex_path = _lib_dex_path
final_dex_path = _final_dex_path
if (_is_bundle_module) {
@@ -2900,12 +2919,10 @@ if (enable_java_templates) {
deps += _deps + [ ":$_compile_resources_target" ]
proguard_mapping_path = _proguard_mapping_path
} else {
- input_jars = [ _lib_dex_path ]
- input_dex_classpath =
- "${_rebased_build_config}:final_dex:dependency_dex_files"
+ input_dex_filearg =
+ "@FileArg(${_rebased_build_config}:final_dex:all_dex_files)"
if (_enable_main_dex_list) {
- input_jar_classpath =
- "${_rebased_build_config}:deps_info:java_runtime_classpath"
+ main_dex_list_input_classes_filearg = "@FileArg(${_rebased_build_config}:deps_info:java_runtime_classpath)"
}
}
@@ -3190,13 +3207,10 @@ 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_lib_dex_path = rebase_path(_lib_dex_path, 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)",
+ "--dex-file=@FileArg($_rebased_build_config:final_dex:all_dex_files)",
]
if (_proguard_enabled) {
args += [ "--show-proguard-warning" ]
@@ -3496,7 +3510,6 @@ if (enable_java_templates) {
"data_deps",
"deps",
"enable_chromium_linker_tests",
- "enable_class_deps_output",
"enable_multidex",
"generate_buildconfig_java",
"generate_final_jni",
@@ -3518,8 +3531,8 @@ if (enable_java_templates) {
"native_lib_version_rule",
"negative_main_dex_globs",
"no_xml_namespaces",
+ "package_id",
"package_name",
- "package_name_to_id_mapping",
"png_to_webp",
"product_version_resources_dep",
"proguard_configs",
@@ -3567,13 +3580,14 @@ if (enable_java_templates) {
# The following args are optional:
# apk_under_test: The target being tested.
# additional_apks: Additional targets to install on device.
- # command_line_args: Command line arguments to set for APK under test.
# data: List of runtime data file dependencies.
# data_deps: List of non-linked dependencies.
# deps: List of private dependencies.
+ # extra_args: Extra arguments set for test runner.
# ignore_all_data_deps: Don't build data_deps and additional_apks.
# modules: Extra dynamic feature modules to install for test target. Can
# only be used if |apk_under_test| is an Android app bundle.
+ # fake_modules: Similar to |modules| but fake installed instead.
# never_incremental: Disable incremental builds.
# proguard_enabled: Enable proguard
# public_deps: List of public dependencies
@@ -3613,10 +3627,11 @@ if (enable_java_templates) {
[
"additional_apks",
"apk_under_test",
- "command_line_args",
"data",
"data_deps",
"deps",
+ "extra_args",
+ "fake_modules",
"ignore_all_data_deps",
"modules",
"proguard_enabled",
@@ -3821,10 +3836,10 @@ if (enable_java_templates) {
[
"additional_apks",
"apk_under_test",
- "command_line_args",
"data",
"data_deps",
"deps",
+ "extra_args",
"ignore_all_data_deps",
"modules",
"never_incremental",
@@ -4100,6 +4115,7 @@ if (enable_java_templates) {
# any apk that depends on this library.
# ignore_aidl: Whether to ignore .aidl files found with the .aar.
# ignore_assets: Whether to ignore assets found in the .aar.
+ # ignore_manifest: Whether to ignore creating manifest.
# ignore_native_libraries: Whether to ignore .so files found in the .aar.
# See also extract_native_libraries.
# ignore_proguard_configs: Whether to ignore proguard configs.
@@ -4107,10 +4123,6 @@ if (enable_java_templates) {
# extract_native_libraries: Whether to extract .so files found in the .aar.
# If the file contains .so, either extract_native_libraries or
# ignore_native_libraries must be set.
- # split_compat_class_names: Names of the classes that will have their
- # bytecode rewritten to inject the call to SplitCompat.install().
- # Used to make dependencies compatible with SplitCompat to immediately
- # access resources brought in by the modules.
# create_srcjar: If false, does not create an R.java file.
# TODO(jbudorick@): remove this arguments after crbug.com/522043 is fixed.
# requires_android: Whether this target can only be used for compiling
@@ -4129,6 +4141,8 @@ if (enable_java_templates) {
_unpack_target_name = "${target_name}__unpack_aar"
_ignore_aidl = defined(invoker.ignore_aidl) && invoker.ignore_aidl
_ignore_assets = defined(invoker.ignore_assets) && invoker.ignore_assets
+ _ignore_manifest =
+ defined(invoker.ignore_manifest) && invoker.ignore_manifest
_ignore_native_libraries = defined(invoker.ignore_native_libraries) &&
invoker.ignore_native_libraries
_ignore_proguard_configs = defined(invoker.ignore_proguard_configs) &&
@@ -4193,10 +4207,10 @@ if (enable_java_templates) {
inputs = [
invoker.aar_path,
]
- outputs = [
- "${_output_path}/AndroidManifest.xml",
- ]
-
+ outputs = []
+ if (!_ignore_manifest) {
+ outputs += [ "${_output_path}/AndroidManifest.xml" ]
+ }
if (!_strip_resources && _scanned_files.has_r_text_file) {
# Certain packages, in particular Play Services have no R.txt even
# though its presence is mandated by AAR spec. Such packages cause
@@ -4231,7 +4245,8 @@ if (enable_java_templates) {
(_scanned_files.resources != [] || _scanned_files.has_r_text_file)
# Create the android_resources target for resources.
- if (_has_unignored_resources || !_scanned_files.is_manifest_empty) {
+ if (_has_unignored_resources ||
+ (!_scanned_files.is_manifest_empty && !_ignore_manifest)) {
_res_target_name = "${target_name}__res"
android_resources(_res_target_name) {
forward_variables_from(invoker,
@@ -4246,7 +4261,9 @@ if (enable_java_templates) {
}
deps += [ ":$_unpack_target_name" ]
android_manifest_dep = ":$_unpack_target_name"
- android_manifest = "${_output_path}/AndroidManifest.xml"
+ if (!_ignore_manifest) {
+ android_manifest = "${_output_path}/AndroidManifest.xml"
+ }
resource_dirs = []
generated_resource_dirs = []
if (!_strip_resources && _scanned_files.resources != []) {
@@ -4302,7 +4319,6 @@ if (enable_java_templates) {
"jar_included_patterns",
"proguard_configs",
"requires_android",
- "split_compat_class_names",
"testonly",
])
if (!defined(deps)) {
@@ -4372,13 +4388,6 @@ if (enable_java_templates) {
# module name (which cannot be 'base', since this is reserved for the
# base module), and an 'apk_target' field that specified the
# corresponding android_apk target name the module is modeled on.
- # A scope may have an additional field, 'proguard_async', that
- # specifies whether or not the module is asynchronous. This field should
- # be set to true if the module is asynchronous, and set to false or left
- # undefined otherwise.
- # Async modules are those that are proguarded in a separate build step.
- # This ensures that changes to these modules do not change the base
- # module.
#
# enable_language_splits: Optional. If true, enable APK splits based
# on languages.
@@ -4461,7 +4470,7 @@ if (enable_java_templates) {
_rebased_base_module_build_config =
rebase_path(_base_module_build_config, root_build_dir)
- _sync_modules = [
+ _modules = [
{
name = "base"
module_target = invoker.base_module_target
@@ -4470,8 +4479,6 @@ if (enable_java_templates) {
},
]
- _async_modules = []
-
_proguard_enabled =
defined(invoker.proguard_enabled) && invoker.proguard_enabled
_enable_multidex =
@@ -4492,10 +4499,7 @@ if (enable_java_templates) {
_sync_dex_target = "${target_name}__sync_dex"
_sync_dex_target_dep = ":$_sync_dex_target"
}
-
- # TODO(crbug.com/938635): Combine synchronous proguard run mapping file
- # and asynchronous proguard run mapping files into single .mapping.
- _sync_proguard_mapping_path = "${_bundle_path}.mapping"
+ _proguard_mapping_path = "${_bundle_path}.mapping"
}
assert(_proguard_enabled || !defined(invoker.enable_multidex),
@@ -4505,11 +4509,6 @@ if (enable_java_templates) {
_module_count = 0
not_needed([ "_module_count" ])
- # Define unique package for each async proguarding run.
- _async_package_number = 1
-
- not_needed([ "_async_package_number" ])
-
foreach(_module, invoker.extra_modules) {
_module_count += 1
assert(defined(_module.name),
@@ -4527,68 +4526,23 @@ if (enable_java_templates) {
"$_module_target_gen_dir/${_module_target_name}.build_config"
_module.build_config_target =
"$_module_target$build_config_target_suffix"
-
- if (defined(_module.proguard_async) && _module.proguard_async) {
- if (_proguard_enabled) {
- # Use asynchronous proguarding for async modules.
- _async_proguard_mapping_path =
- "${_bundle_path}_${_module.name}.mapping"
-
- _dex_zip = "${target_out_dir}/${target_name}/${target_name}_${_module.name}_dex.zip"
- _module.dex_path = _dex_zip
-
- # Give unique name to each async dex target using module name.
- _async_dex_target = "${target_name}_${_module.name}_dex"
-
- dex(_async_dex_target) {
- enable_multidex = _enable_multidex
- proguard_enabled = true
- proguard_mapping_path = _async_proguard_mapping_path
- forward_variables_from(invoker,
- [
- "proguard_jar_path",
- "min_sdk_version",
- ])
- build_config = _module.build_config
- repackage_classes = "ap${_async_package_number}"
-
- # TODO(https://crbug.com/952858): R8 currently doesn't handle
- # applying mapping files.
- # Pass mapping file of synchronous proguarding run to async
- # module proguarding runs to preserve compatibility.
- # apply_mapping = _sync_proguard_mapping_path
-
- deps = [
- _module.module_target,
- _sync_dex_target_dep,
- ]
-
- output = _dex_zip
- }
- _module.async_dex_target = _async_dex_target
- _async_package_number += 1
- }
-
- _async_modules += [ _module ]
- } else {
- _sync_modules += [ _module ]
- }
+ _modules += [ _module ]
}
}
# Make build config, which is required for synchronized proguarding.
- _sync_module_java_targets = []
- _sync_module_build_configs = []
- _sync_module_targets = []
- foreach(_module, _sync_modules) {
- _sync_module_targets += [ _module.module_target ]
- _sync_module_java_targets += [ "${_module.module_target}__java" ]
- _sync_module_build_configs += [ _module.build_config ]
+ _module_java_targets = []
+ _module_build_configs = []
+ _module_targets = []
+ foreach(_module, _modules) {
+ _module_targets += [ _module.module_target ]
+ _module_java_targets += [ "${_module.module_target}__java" ]
+ _module_build_configs += [ _module.build_config ]
}
# Used to expose the module Java targets of the bundle.
group("${target_name}__java") {
- deps = _sync_module_java_targets
+ deps = _module_java_targets
}
group("${target_name}__compile_resources") {
deps = [
@@ -4613,14 +4567,11 @@ if (enable_java_templates) {
"${target_gen_dir}/${target_name}/${target_name}__unsplit_dex.zip"
write_build_config(_build_config_target) {
- # We don't want async modules to be proguarded synchronously, so we leave
- # them out of possible_config_deps.
type = "android_app_bundle"
- possible_config_deps =
- _sync_module_targets + [ proguard_android_sdk_dep_ ]
+ possible_config_deps = _module_targets + [ proguard_android_sdk_dep_ ]
build_config = _build_config
proguard_enabled = _proguard_enabled
- module_build_configs = _sync_module_build_configs
+ module_build_configs = _module_build_configs
final_dex_path = _unsplit_dex_zip
if (_proguard_enabled) {
@@ -4661,7 +4612,7 @@ if (enable_java_templates) {
proguard_expectations_file = _proguard_expectations_file
}
- deps = _sync_module_java_targets + [ ":$_build_config_target" ]
+ deps = _module_java_targets + [ ":$_build_config_target" ]
output = _unsplit_dex_zip
}
}
@@ -4669,30 +4620,25 @@ if (enable_java_templates) {
_dexsplitter_target = "${target_name}__dexsplitter"
dexsplitter(_dexsplitter_target) {
input_dex_zip = _unsplit_dex_zip
- proguard_mapping = _sync_proguard_mapping_path
- all_modules = _sync_modules
+ proguard_mapping = _proguard_mapping_path
+ all_modules = _modules
deps = [
":$_build_config_target",
_sync_dex_target_dep,
- ] + _sync_module_java_targets
+ ] + _module_java_targets
}
}
- # Merge async and sync module scopes.
- _all_modules = _sync_modules + _async_modules
-
_all_create_module_targets = []
_all_module_zip_paths = []
_all_module_build_configs = []
- foreach(_module, _all_modules) {
+ foreach(_module, _modules) {
_module_target = _module.module_target
_module_build_config = _module.build_config
_module_build_config_target = _module.build_config_target
if (!_proguard_enabled) {
_dex_target_for_module = "${_module_target}__final_dex"
- } else if (defined(_module.dex_path)) {
- _dex_target_for_module = ":${_module.async_dex_target}"
} else {
_dex_target_for_module = ":$_dexsplitter_target"
}
@@ -4709,12 +4655,6 @@ if (enable_java_templates) {
build_config = _module_build_config
module_zip_path = _module_zip_path
- # If module is async, use defined dex_path directly rather than
- # build config FileArg.
- if (defined(_module.dex_path)) {
- dex_path = _module.dex_path
- }
-
deps = [
_dex_target_for_module,
_module_build_config_target,
@@ -4770,9 +4710,6 @@ if (enable_java_templates) {
outputs = [
_bundle_path,
]
- data = [
- _bundle_path,
- ]
deps = _all_create_module_targets + [ ":$_build_config_target" ]
args = [
"--out-bundle=$_rebased_bundle_path",
@@ -4806,7 +4743,7 @@ if (enable_java_templates) {
]
}
- foreach(_module, _all_modules) {
+ foreach(_module, _modules) {
_rebased_build_config =
rebase_path(_module.build_config, root_build_dir)
args += [
@@ -4825,10 +4762,7 @@ if (enable_java_templates) {
# (have proguard enabled).
if (_proguard_enabled) {
# Merge all module targets to obtain size info files for all targets.
- _all_module_targets = _sync_module_targets
- foreach(_async_module, _async_modules) {
- _all_module_targets += [ _async_module.module_target ]
- }
+ _all_module_targets = _module_targets
_size_info_target = "${target_name}__size_info"
create_size_info_files(_size_info_target) {
@@ -4859,6 +4793,7 @@ if (enable_java_templates) {
_bundle_wrapper_script_path,
_android_aapt2_path,
_keystore_path,
+ _bundle_path,
]
data_deps = [
"//build/android:bundle_wrapper_script_py",
@@ -4898,14 +4833,13 @@ if (enable_java_templates) {
]
}
- # TODO(crbug.com/938635): Combine async module mapping paths with the sync one.
if (_proguard_enabled) {
args += [
"--proguard-mapping-path",
- rebase_path(_sync_proguard_mapping_path, root_build_dir),
+ rebase_path(_proguard_mapping_path, root_build_dir),
]
data_deps += [ "//build/android/stacktrace:java_deobfuscate" ]
- data += [ _sync_proguard_mapping_path ]
+ data += [ _proguard_mapping_path ]
}
}
@@ -4928,6 +4862,9 @@ if (enable_java_templates) {
outputs = [
_apks_path,
]
+ data = [
+ _apks_path,
+ ]
args = [
"--bundle",
_rebased_bundle_path,
diff --git a/chromium/build/config/chromecast_build.gni b/chromium/build/config/chromecast_build.gni
index 3702acc7514..b2640f55878 100644
--- a/chromium/build/config/chromecast_build.gni
+++ b/chromium/build/config/chromecast_build.gni
@@ -41,9 +41,10 @@ declare_args() {
}
declare_args() {
- # True to enable the cast renderer. It is enabled by default for non-android
- # builds.
- enable_cast_renderer = is_chromecast && !is_android
+ # True to enable the cast renderer. It is enabled by default for linux and
+ # android audio only builds.
+ enable_cast_renderer =
+ is_chromecast && (is_linux || (is_cast_audio_only && is_android))
}
# Configures media options for cast. See media/media_options.gni
@@ -51,22 +52,30 @@ cast_mojo_media_services = []
cast_mojo_media_host = "none"
if (enable_cast_renderer) {
+ # In this path, mojo media services are hosted in two processes:
+ # 1. "renderer" and "cdm" run in browser process. This is hard coded in the
+ # code.
+ # 2. "video_decoder" runs in the process specified by "cast_mojo_media_host".
cast_mojo_media_services = [
"cdm",
"renderer",
]
- cast_mojo_media_host = "browser"
-} else if (is_android) {
+
+ if (!is_cast_audio_only) {
+ cast_mojo_media_services += [ "video_decoder" ]
+ }
+
+ cast_mojo_media_host = "gpu"
+} else if (is_android && !is_cast_audio_only) {
+ # On Android, all the enabled mojo media services run in the process specified
+ # by "cast_mojo_media_host".
cast_mojo_media_services = [
"cdm",
"audio_decoder",
+ "video_decoder",
]
- if (is_cast_audio_only) {
- cast_mojo_media_host = "browser"
- } else {
- cast_mojo_media_services += [ "video_decoder" ]
- cast_mojo_media_host = "gpu"
- }
+
+ cast_mojo_media_host = "gpu"
}
# Assert that Chromecast is being built for a supported platform.
diff --git a/chromium/build/config/chromeos/rules.gni b/chromium/build/config/chromeos/rules.gni
index d5b60909b8a..77777a6e424 100644
--- a/chromium/build/config/chromeos/rules.gni
+++ b/chromium/build/config/chromeos/rules.gni
@@ -13,7 +13,8 @@ declare_args() {
declare_args() {
# Determines if we're running tests on VMs or on devices.
# TODO(crbug.com/866062): Is there a better way to do this?
- cros_is_vm = cros_board == "amd64-generic" || cros_board == "betty"
+ cros_is_vm = cros_board == "amd64-generic" || cros_board == "betty" ||
+ cros_board == "betty-pi-arc"
}
# Ensure that if one is set, the other is as well.
@@ -209,7 +210,8 @@ template("tast_test") {
# The following expression filters out all non-critical tests. See the link
# below for more details:
# https://chromium.googlesource.com/chromiumos/platform/tast/+/master/docs/test_attributes.md
- tast_attr_expr = "!disabled && !\"group:*\" && \"dep:chrome\""
+ tast_attr_expr =
+ "!disabled && (\"group:mainline\" || !\"group:*\") && \"dep:chrome\""
if (defined(enable_tast_informational_tests) &&
enable_tast_informational_tests) {
diff --git a/chromium/build/config/compiler/BUILD.gn b/chromium/build/config/compiler/BUILD.gn
index 352cb646dd5..93ad68a613b 100644
--- a/chromium/build/config/compiler/BUILD.gn
+++ b/chromium/build/config/compiler/BUILD.gn
@@ -104,6 +104,15 @@ declare_args() {
clang_use_default_sample_profile = build_with_chromium && is_official_build &&
(is_android || is_desktop_linux)
+ # This configuration is used to select a default profile in Chrome OS based on
+ # the microarchitectures we are using. This is only used if
+ # clang_use_default_sample_profile is true and clang_sample_profile_path is
+ # empty.
+ chromeos_afdo_platform = "silvermont"
+
+ # Emit debug information for profiling wile building with clang.
+ clang_emit_debug_info_for_profiling = false
+
# Turn this on to have the compiler output extra timing information.
compiler_timing = false
@@ -128,6 +137,12 @@ declare_args() {
# By default only the binaries in official builds get build IDs.
force_local_build_id = false
+
+ # Initialize all local variables with a pattern. This flag will fill uninitialized
+ # floating-point types (and 32-bit pointers) with 0xFF and the rest with 0xAA.
+ # This allows to make behavior of uninitialized memory bugs consistent, easier to
+ # recognize when debugging and often just to crash immediately.
+ init_stack_vars = false
}
declare_args() {
@@ -591,7 +606,7 @@ config("compiler") {
# files on Windows (https://crbug.com/871962).
ldflags += [
"/opt:lldlto=" + lto_opt_level,
- "/opt:lldltojobs=8",
+ "/opt:lldltojobs=" + max_jobs_per_link,
# Experimentally determined to yield a reasonable trade-off between
# build time, run-time performance, and binary size.
@@ -604,7 +619,7 @@ config("compiler") {
# linker jobs. This is still suboptimal to a potential dynamic
# resource allocation scheme, but should be good enough.
if (use_lld) {
- ldflags += [ "-Wl,--thinlto-jobs=8" ]
+ ldflags += [ "-Wl,--thinlto-jobs=" + max_jobs_per_link ]
# Caching on Chrome OS materially slows the PFQ down; disable it until
# we can figure out why. (crbug.com/964328)
@@ -620,7 +635,7 @@ config("compiler") {
]
}
} else {
- ldflags += [ "-Wl,-plugin-opt,jobs=8" ]
+ ldflags += [ "-Wl,-plugin-opt,jobs=" + max_jobs_per_link ]
}
if (use_lld) {
@@ -1504,9 +1519,6 @@ config("default_warnings") {
# TODO(https://crbug.com/989932): Evaluate and possibly enable.
"-Wno-implicit-int-float-conversion",
- # TODO(https://crbug.com/995200): Clean up and enable.
- "-Wno-xor-used-as-pow",
-
# TODO(https://crbug.com/999871): Decide if we want to clean up the
# codebase or just disable this. Doesn't seem super useful, but
# also fires in only 4 files.
@@ -1517,7 +1529,11 @@ config("default_warnings") {
# TODO(https://crbug.com/999886): Clean up, enable.
"-Wno-final-dtor-non-final-class",
+
+ # TODO(https://crbug.com/1002945): Evaluate and possibly enable.
+ "-Wno-sizeof-array-div",
]
+
cflags_c += [
# TODO(https://crbug.com/995993): Clean up and enable.
"-Wno-implicit-fallthrough",
@@ -1879,11 +1895,7 @@ if (is_win) {
# TODO(thakis): Remove is_clang here, https://crbug.com/598772
if (!use_lld && !is_clang) {
- common_optimize_on_ldflags += [
- # Set the number of LTCG code-gen threads to eight. The default is four.
- # This gives a 5-10% link speedup.
- "/cgthreads:8",
- ]
+ common_optimize_on_ldflags += [ "/cgthreads:" + max_jobs_per_link ]
if (use_incremental_wpo) {
# Incremental Link-time code generation.
common_optimize_on_ldflags += [ "/LTCG:INCREMENTAL" ]
@@ -2027,6 +2039,12 @@ config("no_optimize") {
"/Ob0", # Disable all inlining (on by default).
"/GF", # Enable string pooling (off by default).
]
+
+ if (target_cpu == "arm64") {
+ # Disable omitting frame pointers for no_optimize build because stack
+ # trace on Windows ARM64 relies on it.
+ cflags += [ "/Oy-" ]
+ }
} else if (is_android && !android_full_debug) {
# On Android we kind of optimize some things that don't affect debugging
# much even when optimization is disabled to get the binary size down.
@@ -2153,9 +2171,19 @@ if (is_clang && is_a_target_toolchain) {
} else if (clang_use_default_sample_profile) {
assert(build_with_chromium,
"Our default profiles currently only apply to Chromium")
- assert(is_android || is_desktop_linux,
+ assert(is_android || is_desktop_linux || is_chromeos,
"The current platform has no default profile")
- _clang_sample_profile = "//chrome/android/profiles/afdo.prof"
+ if (is_android || is_desktop_linux) {
+ _clang_sample_profile = "//chrome/android/profiles/afdo.prof"
+ } else {
+ assert(
+ chromeos_afdo_platform == "silvermont" ||
+ chromeos_afdo_platform == "airmont" ||
+ chromeos_afdo_platform == "broadwell",
+ "Only silvermont, airmont and broadwell are valid Chrome OS profiles.")
+ _clang_sample_profile =
+ "//chromeos/profiles/${chromeos_afdo_platform}.afdo.prof"
+ }
}
}
@@ -2175,10 +2203,18 @@ config("afdo_optimize_size") {
# config to allow AFDO to be disabled per-target.
config("afdo") {
if (is_clang) {
+ cflags = []
+ if (clang_emit_debug_info_for_profiling) {
+ # Add the following flags to generate debug info for profiling.
+ cflags += [
+ "-fdebug-info-for-profiling",
+ "-gline-tables-only",
+ ]
+ }
if (_clang_sample_profile != "") {
rebased_clang_sample_profile =
rebase_path(_clang_sample_profile, root_build_dir)
- cflags = [ "-fprofile-sample-use=${rebased_clang_sample_profile}" ]
+ cflags += [ "-fprofile-sample-use=${rebased_clang_sample_profile}" ]
inputs = [
_clang_sample_profile,
]
@@ -2467,3 +2503,11 @@ if (is_win || is_android || is_chromeos) {
}
}
}
+
+# Initialize all variables on the stack if needed.
+config("default_init_stack_vars") {
+ cflags = []
+ if (init_stack_vars && is_clang && !is_nacl && !using_sanitizer) {
+ cflags += [ "-ftrivial-auto-var-init=pattern" ]
+ }
+}
diff --git a/chromium/build/config/compiler/compiler.gni b/chromium/build/config/compiler/compiler.gni
index f0b7e39dff7..09f4f8eaec6 100644
--- a/chromium/build/config/compiler/compiler.gni
+++ b/chromium/build/config/compiler/compiler.gni
@@ -63,6 +63,10 @@ declare_args() {
# also http://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html
use_thin_lto = is_cfi || (is_android && is_official_build)
+ # Limit the number of jobs (threads/processes) the linker is allowed
+ # to use (for linkers that support this).
+ max_jobs_per_link = 8
+
# Tell VS to create a PDB that references information in .obj files rather
# than copying it all. This should improve linker performance. mspdbcmf.exe
# can be used to convert a fastlink pdb to a normal one.
@@ -218,15 +222,6 @@ if (symbol_level == -1) {
# Reduce symbol level when it will cause invalid elf files to be created
# (due to file size). https://crbug.com/648948.
symbol_level = 1
- } else if (is_win && use_goma && !is_clang) {
- # goma doesn't support PDB files, so we disable symbols during goma
- # compilation because otherwise the redundant debug information generated
- # by visual studio (repeated in every .obj file) makes linker
- # memory consumption and link times unsustainable (crbug.com/630074).
- # Clang on windows does not have this issue.
- # If you use is_win_fastlink = true or lld or clang then you can set
- # symbol_level = 2 when using goma.
- symbol_level = 1
} else if (is_cros_chrome_sdk) {
# Use lower symbol level in Simple Chrome build for faster link time.
# For Simple Chrome, this should take precedence over is_official_build,
diff --git a/chromium/build/config/coverage/coverage.gni b/chromium/build/config/coverage/coverage.gni
index fe3af770f11..9586d8d980b 100644
--- a/chromium/build/config/coverage/coverage.gni
+++ b/chromium/build/config/coverage/coverage.gni
@@ -5,15 +5,20 @@
import("//build/toolchain/toolchain.gni")
# There are two ways to enable code coverage instrumentation:
-# 1. When |use_clang_coverage| is true and |coverage_instrumentation_input_file|
-# is empty, all source files are instrumented.
-# 2. When |use_clang_coverage| is true and |coverage_instrumentation_input_file|
-# is NOT empty and points to a text file on the file system, ONLY source
-# files specified in the input file are instrumented.
+# 1. When |use_clang_coverage| or |use_jacoco_coverage| is true and
+# |coverage_instrumentation_input_file| is empty, all source files or
+# Java class files are instrumented.
+# 2. When |use_clang_coverage| or |use_jacoco_coverage| is true and
+# |coverage_instrumentation_input_file| is NOT empty and points to
+# a text file on the file system, ONLY source files specified in the
+# input file or Java class files related to source files are instrumented.
declare_args() {
# Enable Clang's Source-based Code Coverage.
use_clang_coverage = false
+ # Enables JaCoCo Java code coverage.
+ use_jacoco_coverage = false
+
# The path to the coverage instrumentation input file should be a source root
# absolute path (e.g. //out/Release/coverage_instrumentation_input.txt), and
# the file consists of multiple lines where each line represents a path to a
diff --git a/chromium/build/config/fuchsia/BUILD.gn b/chromium/build/config/fuchsia/BUILD.gn
index 888be8c279d..9a0ca692f47 100644
--- a/chromium/build/config/fuchsia/BUILD.gn
+++ b/chromium/build/config/fuchsia/BUILD.gn
@@ -3,7 +3,7 @@
# found in the LICENSE file.
import("//build/config/fuchsia/config.gni")
-import("//build/config/fuchsia/rules.gni")
+import("//build/config/fuchsia/generate_runner_scripts.gni")
import("//build/config/sysroot.gni")
assert(is_fuchsia)
diff --git a/chromium/build/config/fuchsia/config.gni b/chromium/build/config/fuchsia/config.gni
index 4b88d70fd30..a061081922d 100644
--- a/chromium/build/config/fuchsia/config.gni
+++ b/chromium/build/config/fuchsia/config.gni
@@ -19,6 +19,7 @@ if (current_cpu == "arm64") {
}
# Compute the qemu path.
+aemu_root = "//third_party/aemu-${host_os}-${host_cpu}"
qemu_root = "//third_party/qemu-${host_os}-${host_cpu}"
# Compute the path to the arch-specific boot image directory.
diff --git a/chromium/build/config/fuchsia/generate_runner_scripts.gni b/chromium/build/config/fuchsia/generate_runner_scripts.gni
new file mode 100644
index 00000000000..bef39a5f0a9
--- /dev/null
+++ b/chromium/build/config/fuchsia/generate_runner_scripts.gni
@@ -0,0 +1,199 @@
+# 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.
+
+assert(is_fuchsia)
+
+import("//build/config/chromecast_build.gni")
+import("//build/config/fuchsia/config.gni")
+import("//build/config/fuchsia/package.gni")
+import("//build/config/sysroot.gni")
+import("//build/util/generate_wrapper.gni")
+
+declare_args() {
+ # Sets the Fuchsia Amber repository which will be used by default by the
+ # generated installation scripts. If not specified, then no default directory
+ # will be used.
+ default_fuchsia_build_dir_for_installation = ""
+}
+
+# Generates a script which deploys and optionally executes a package on a
+# device.
+#
+# Parameters:
+# package: The package() target which will be run.
+# package_name_override: Specifies the name of the generated package, if its
+# name is different than the |package| target name. This value must match
+# package_name_override in the |package| target.
+# package_deps: An array of [package, package_name_override] array pairs
+# which specify additional dependency packages to be installed
+# prior to execution.
+# runner_script: The runner script implementation to use, relative to
+# "build/fuchsia". Defaults to "test_runner.py".
+# install_only: If true, executing the script will only install the package
+# on the device, but not run it.
+template("fuchsia_package_runner") {
+ forward_variables_from(invoker, [ "runner_script" ])
+
+ if (defined(invoker.package_name_override)) {
+ _pkg_shortname = invoker.package_name_override
+ } else {
+ _pkg_shortname = get_label_info(invoker.package, "name")
+ }
+
+ _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") +
+ "/" + _pkg_shortname
+ _manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest"
+ _package_path = "$_pkg_dir/${_pkg_shortname}.far"
+
+ generated_run_pkg_script_path = "$root_build_dir/bin/run_${_pkg_shortname}"
+ generated_install_pkg_script_path =
+ "$root_build_dir/bin/install_$_pkg_shortname"
+
+ _generate_runner_target = "${target_name}__generate_runner"
+ _generate_installer_target = "${target_name}__generate_installer"
+
+ # Generates a script which installs and runs a test.
+ generate_wrapper(_generate_runner_target) {
+ forward_variables_from(invoker,
+ [
+ "target",
+ "testonly",
+ ])
+
+ if (defined(runner_script)) {
+ executable = rebase_path(runner_script)
+ } else {
+ executable = rebase_path("//build/fuchsia/test_runner.py")
+ }
+ wrapper_script = generated_run_pkg_script_path
+
+ deps = [
+ invoker.package,
+ ]
+ if (defined(invoker.deps)) {
+ deps += invoker.deps
+ }
+
+ data_deps = [
+ invoker.package,
+ ]
+
+ # Declares the files that are needed for test execution on the
+ # swarming test client.
+ data = [
+ _manifest_path,
+ "//build/fuchsia/",
+ "//build/util/lib/",
+ "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer",
+ "${qemu_root}/",
+ "${fuchsia_sdk}/tools/fvm",
+ "${fuchsia_sdk}/tools/pm",
+ "${fuchsia_sdk}/tools/symbolize",
+ "${fuchsia_sdk}/tools/zbi",
+ "${fuchsia_sdk}/.build-id/",
+ "${boot_image_root}/qemu/qemu-kernel.kernel",
+ "${boot_image_root}/qemu/storage-full.blk",
+ "${boot_image_root}/qemu/zircon-a.zbi",
+ ]
+
+ if (host_cpu == "x64" && target_cpu == "x64") {
+ data += [ "${aemu_root}/" ]
+ }
+
+ executable_args = []
+
+ package_paths = [ rebase_path(_package_path, root_build_dir) ]
+ if (defined(invoker.package_deps)) {
+ foreach(package_dep, invoker.package_deps) {
+ package_dep_target = package_dep[0]
+ package_dep_name = package_dep[1]
+
+ deps += [ package_dep_target ]
+ package_dep_path = rebase_path(
+ get_label_info(package_dep_target, "target_gen_dir") + "/" +
+ package_dep_name + "/" + package_dep_name + ".far",
+ root_build_dir)
+ package_paths += [ package_dep_path ]
+ }
+ }
+
+ foreach(package_path, package_paths) {
+ executable_args += [
+ "--package",
+ "@WrappedPath(${package_path})",
+ ]
+ }
+
+ executable_args += [
+ "--output-directory",
+ "@WrappedPath(.)",
+ "--target-cpu",
+ target_cpu,
+ "--package-name",
+ _pkg_shortname,
+ ]
+
+ if (defined(invoker.use_test_server) && invoker.use_test_server) {
+ executable_args += [ "--enable-test-server" ]
+ }
+ }
+
+ # Produces a script which installs a package and its dependencies into the
+ # Amber repository of a pre-existing Fuchsia build directory.
+ generate_wrapper(_generate_installer_target) {
+ forward_variables_from(invoker, [ "testonly" ])
+
+ executable = rebase_path("//build/fuchsia/deploy_to_amber_repo.py")
+ wrapper_script = generated_install_pkg_script_path
+
+ deps = [
+ invoker.package,
+ ]
+ if (defined(invoker.deps)) {
+ deps += invoker.deps
+ }
+
+ # Build a list of all packages to install, and pass the list to the runner
+ # script.
+ package_paths = [ rebase_path(_package_path, root_build_dir) ]
+ if (defined(invoker.package_deps)) {
+ foreach(package_dep, invoker.package_deps) {
+ package_dep_target = package_dep[0]
+ package_dep_name = package_dep[1]
+
+ deps += [ package_dep_target ]
+ package_dep_path = rebase_path(
+ get_label_info(package_dep_target, "target_gen_dir") + "/" +
+ package_dep_name + "/" + package_dep_name + ".far",
+ root_build_dir)
+ package_paths += [ package_dep_path ]
+ }
+ }
+ executable_args = []
+ foreach(package_path, package_paths) {
+ executable_args += [
+ "--package",
+ "@WrappedPath(${package_path})",
+ ]
+
+ if (default_fuchsia_build_dir_for_installation != "") {
+ executable_args += [
+ "--fuchsia-out-dir",
+ default_fuchsia_build_dir_for_installation,
+ ]
+ }
+ }
+ }
+
+ group(target_name) {
+ forward_variables_from(invoker, [ "testonly" ])
+ deps = [
+ ":${_generate_installer_target}",
+ ]
+
+ if (!defined(invoker.install_only) || invoker.install_only == false) {
+ deps += [ ":${_generate_runner_target}" ]
+ }
+ }
+}
diff --git a/chromium/build/config/fuchsia/rules.gni b/chromium/build/config/fuchsia/rules.gni
index f7edfdcba3a..689e130b651 100644
--- a/chromium/build/config/fuchsia/rules.gni
+++ b/chromium/build/config/fuchsia/rules.gni
@@ -1,163 +1,5 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
+# Copyright 2019 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.
-assert(is_fuchsia)
-
-import("//build/config/chromecast_build.gni")
-import("//build/config/fuchsia/config.gni")
-import("//build/config/fuchsia/package.gni")
-import("//build/config/sysroot.gni")
-import("//build/util/generate_wrapper.gni")
-
-# Generates a script which deploys and executes a package on a device.
-#
-# Parameters:
-# package: The package() target which will be run.
-# package_name_override: Specifies the name of the generated package, if its
-# name is different than the |package| target name. This value must match
-# package_name_override in the |package| target.
-# package_deps: An array of [package, package_name_override] array pairs
-# which specify additional dependency packages to be installed
-# prior to execution.
-# runner_script: The runner script implementation to use, relative to
-# "build/fuchsia". Defaults to "exe_runner.py".
-# install_only: If true, executing the script will only install the package
-# on the device, but not run it.
-template("fuchsia_package_runner") {
- forward_variables_from(invoker, [ "runner_script" ])
-
- if (defined(invoker.package_name_override)) {
- _pkg_shortname = invoker.package_name_override
- } else {
- _pkg_shortname = get_label_info(invoker.package, "name")
- }
-
- _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") +
- "/" + _pkg_shortname
- _manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest"
- _package_path = "$_pkg_dir/${_pkg_shortname}.far"
-
- if (!defined(runner_script)) {
- runner_script = "//build/fuchsia/exe_runner.py"
- }
-
- generated_run_pkg_script_path = "$root_build_dir/bin/run_${_pkg_shortname}"
- generated_install_pkg_script_path =
- "$root_build_dir/bin/install_$_pkg_shortname"
-
- _generate_runner_target = "${target_name}__generate_runner"
- _generate_installer_target = "${target_name}__generate_installer"
- _generate_template = "${target_name}__generate_template"
-
- # Generates a script to install and optionally run a package.
- #
- # Parameters:
- # |install_only|: If true, builds a script that only installs a package.
- # |script_path|: The path of the script to generate.
- template(_generate_template) {
- generate_wrapper(target_name) {
- forward_variables_from(invoker,
- [
- "install_only",
- "script_path",
- "target",
- "testonly",
- ])
-
- executable = runner_script
- wrapper_script = script_path
-
- deps = [
- invoker.package,
- ]
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
-
- # Declares the files that are needed for test execution on the
- # swarming test client.
- data = [
- _manifest_path,
- "//build/fuchsia/",
- "//build/util/lib/",
- "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer",
- "${qemu_root}/",
- "${fuchsia_sdk}/tools/fvm",
- "${fuchsia_sdk}/tools/pm",
- "${fuchsia_sdk}/tools/symbolize",
- "${fuchsia_sdk}/tools/zbi",
- "${fuchsia_sdk}/.build-id/",
- "${boot_image_root}/qemu/qemu-kernel.kernel",
- "${boot_image_root}/qemu/storage-full.blk",
- "${boot_image_root}/qemu/zircon-a.zbi",
- ]
-
- data_deps = [
- invoker.package,
- ]
-
- executable_args = []
-
- if (defined(invoker.package_deps)) {
- foreach(cur_package, invoker.package_deps) {
- deps += [ cur_package[0] ]
- dep_package_path =
- get_label_info(cur_package[0], "target_gen_dir") + "/" +
- cur_package[1] + "/" + cur_package[1] + ".far"
- _rebased_dep_package_path =
- rebase_path(dep_package_path, root_build_dir)
- executable_args += [
- "--package-dep",
- "@WrappedPath(${_rebased_dep_package_path})",
- ]
- }
- }
-
- _rebased_package_path = rebase_path(_package_path, root_build_dir)
- executable_args += [
- "--output-directory",
- "@WrappedPath(.)",
- "--target-cpu",
- target_cpu,
- "--package",
- "@WrappedPath(${_rebased_package_path})",
- "--package-name",
- _pkg_shortname,
- ]
-
- if (defined(invoker.use_test_server) && invoker.use_test_server) {
- executable_args += [ "--enable-test-server" ]
- }
-
- if (defined(install_only) && install_only) {
- executable_args += [ "--install-only" ]
- }
- }
- }
-
- target(_generate_template, _generate_runner_target) {
- forward_variables_from(invoker, "*")
- script_path = generated_run_pkg_script_path
- }
-
- target(_generate_template, _generate_installer_target) {
- forward_variables_from(invoker, "*")
- script_path = generated_install_pkg_script_path
- install_only = true
- }
-
- # Build the installer script, and the runner for non-|install_only| targets.
- group(target_name) {
- forward_variables_from(invoker, [ "testonly" ])
- deps = [
- ":${_generate_installer_target}",
- ]
-
- # Generate a runner script if the target is not install-only.
- if (!defined(invoker.install_only)) {
- deps += [ ":${_generate_runner_target}" ]
- }
- }
-}
+import("//build/config/fuchsia/generate_runner_scripts.gni")
diff --git a/chromium/build/config/ios/rules.gni b/chromium/build/config/ios/rules.gni
index d7a42cd71f2..14aae595016 100644
--- a/chromium/build/config/ios/rules.gni
+++ b/chromium/build/config/ios/rules.gni
@@ -1808,13 +1808,20 @@ template("ios_xctest_test") {
_host_target = _target_name
_host_output = _output_name
- _xctest_shell_source_target = _xctest_target + "shell_source"
- source_set(_xctest_shell_source_target) {
- sources = [
- "//build/config/ios/xctest_shell.mm",
- ]
+ # Allow invokers to specify their own target for the xctest module, but
+ # fall back to a default (empty) module otherwise.
+ if (defined(invoker.xctest_module_target)) {
+ _xctest_module_target = invoker.xctest_module_target
+ } else {
+ _xctest_module_target_name = _xctest_target + "shell_source"
+ _xctest_module_target = ":$_xctest_module_target_name"
+ source_set(_xctest_module_target_name) {
+ sources = [
+ "//build/config/ios/xctest_shell.mm",
+ ]
- configs += [ "//build/config/ios:xctest_config" ]
+ configs += [ "//build/config/ios:xctest_config" ]
+ }
}
ios_xctest_bundle(_xctest_target) {
@@ -1824,7 +1831,7 @@ template("ios_xctest_test") {
xcode_test_application_name = _host_output
deps = [
- ":$_xctest_shell_source_target",
+ _xctest_module_target,
]
}
diff --git a/chromium/build/config/jumbo.gni b/chromium/build/config/jumbo.gni
index c93d5db153e..9c168569120 100644
--- a/chromium/build/config/jumbo.gni
+++ b/chromium/build/config/jumbo.gni
@@ -3,7 +3,6 @@
# found in the LICENSE file.
import("//build/config/nacl/config.gni") # To see if jumbo should be turned off
-import("//build/split_static_library.gni") # When someone uses that target_type
import("//build/toolchain/goma.gni")
declare_args() {
@@ -49,9 +48,9 @@ jumbo_file_merge_default = 50
# Goma builds benefit from more parallelism
jumbo_file_merge_goma = 8
-# Use one of the targets jumbo_source_set, jumbo_static_library,
-# jumbo_split_static_library or jumbo_component to generate a target
-# which merges sources if possible to compile much faster.
+# Use one of the targets jumbo_source_set, jumbo_static_library, or
+# jumbo_component to generate a target which merges sources if possible to
+# compile much faster.
#
# Special values.
#
@@ -214,11 +213,6 @@ template("internal_jumbo_target") {
}
target_type = invoker.target_type
- if (use_jumbo_build_for_target && target_type == "split_static_library") {
- # Meaningless and also impossible if split_count > len(jumbo_files)
- target_type = "static_library"
- not_needed(invoker, [ "split_count" ])
- }
# Perform the actual operation, either on the original sources or
# the sources post-jumbo merging.
@@ -281,22 +275,6 @@ set_defaults("jumbo_static_library") {
}
# See documentation above by "internal_jumbo_target".
-template("jumbo_split_static_library") {
- internal_jumbo_target(target_name) {
- target_type = "split_static_library"
- forward_variables_from(invoker, "*")
- }
-}
-
-set_defaults("jumbo_split_static_library") {
- # This sets the default list of configs when the
- # jumbo_split_static_library target is defined. The
- # default_compiler_configs comes from BUILDCONFIG.gn and is the list
- # normally applied to static libraries and source sets.
- configs = default_compiler_configs
-}
-
-# See documentation above by "internal_jumbo_target".
template("jumbo_component") {
internal_jumbo_target(target_name) {
target_type = "component"
diff --git a/chromium/build/config/linux/pkg-config.py b/chromium/build/config/linux/pkg-config.py
index 930810b008a..5adf70cc3bb 100755
--- a/chromium/build/config/linux/pkg-config.py
+++ b/chromium/build/config/linux/pkg-config.py
@@ -79,7 +79,7 @@ def GetPkgConfigPrefixToStrip(options, args):
# To support this correctly, it's necessary to extract the prefix to strip
# from pkg-config's |prefix| variable.
prefix = subprocess.check_output([options.pkg_config,
- "--variable=prefix"] + args, env=os.environ)
+ "--variable=prefix"] + args, env=os.environ).decode('utf-8')
if prefix[-4] == '/usr':
return prefix[4:]
return prefix
@@ -158,7 +158,7 @@ def main():
if options.version_as_components:
cmd = [options.pkg_config, "--modversion"] + args
try:
- version_string = subprocess.check_output(cmd)
+ version_string = subprocess.check_output(cmd).decode('utf-8')
except:
sys.stderr.write('Error from pkg-config.\n')
return 1
@@ -171,7 +171,7 @@ def main():
if options.debug:
sys.stderr.write('Running: %s\n' % cmd)
try:
- libdir = subprocess.check_output(cmd)
+ libdir = subprocess.check_output(cmd).decode('utf-8')
except:
print("Error from pkg-config.")
return 1
@@ -183,7 +183,7 @@ def main():
if options.debug:
sys.stderr.write('Running: %s\n' % cmd)
try:
- dridriverdir = subprocess.check_output(cmd)
+ dridriverdir = subprocess.check_output(cmd).decode('utf-8')
except:
print("Error from pkg-config.")
return 1
@@ -195,7 +195,7 @@ def main():
sys.stderr.write('Running: %s\n' % ' '.join(cmd))
try:
- flag_string = subprocess.check_output(cmd)
+ flag_string = subprocess.check_output(cmd).decode('utf-8')
except:
sys.stderr.write('Could not run pkg-config.\n')
return 1
diff --git a/chromium/build/config/locales.gni b/chromium/build/config/locales.gni
index 5f70fb49645..1d0df553e82 100644
--- a/chromium/build/config/locales.gni
+++ b/chromium/build/config/locales.gni
@@ -37,12 +37,11 @@ ios_unsupported_locales = [
]
# These list are defined even when not building for Android or iOS for the
-# sake of build/locale_tool.py. These asserts ensure that GN doesn't complain
-# about them being unused.
-assert(android_chrome_omitted_locales != [])
-assert(ios_unsupported_locales != [])
+# sake of build/locale_tool.py. Ensure that GN doesn't complain about them
+# being unused.
+not_needed([ "android_chrome_omitted_locales" ])
+not_needed([ "ios_unsupported_locales" ])
-# Note: keep in sync with below.
locales = [
"am",
"ar",
diff --git a/chromium/build/config/mac/plist_util.py b/chromium/build/config/mac/plist_util.py
index bba0208a5bf..a7156a62bce 100644
--- a/chromium/build/config/mac/plist_util.py
+++ b/chromium/build/config/mac/plist_util.py
@@ -3,6 +3,7 @@
# found in the LICENSE file.
import argparse
+import codecs
import plistlib
import os
import re
@@ -212,6 +213,10 @@ class SubstituteAction(Action):
def Main():
+ # Cache this codec so that plistlib can find it. See
+ # https://crbug.com/1005190#c2 for more details.
+ codecs.lookup('utf-8')
+
parser = argparse.ArgumentParser(description='manipulate plist files')
subparsers = parser.add_subparsers()
diff --git a/chromium/build/config/mac/rules.gni b/chromium/build/config/mac/rules.gni
index 714bf700843..3c816242375 100644
--- a/chromium/build/config/mac/rules.gni
+++ b/chromium/build/config/mac/rules.gni
@@ -353,7 +353,8 @@ template("mac_framework_bundle") {
if (enable_dsyms) {
data = [
- "$root_out_dir/$_output_name.dSYM/",
+ "$root_out_dir/$_output_name.dSYM/Contents/Info.plist",
+ "$root_out_dir/$_output_name.dSYM/Contents/Resources/DWARF/$_output_name",
]
}
@@ -560,7 +561,8 @@ template("mac_app_bundle") {
if (enable_dsyms) {
data = [
- "$root_out_dir/$_output_name.dSYM/",
+ "$root_out_dir/$_output_name.dSYM/Contents/Info.plist",
+ "$root_out_dir/$_output_name.dSYM/Contents/Resources/DWARF/$_output_name",
]
}
@@ -606,7 +608,7 @@ template("mac_plugin_bundle") {
forward_variables_from(invoker, [ "testonly" ])
visibility = [ ":$_target_name" ]
sources = [
- "$target_out_dir/${_output_name}.so",
+ "$target_out_dir/$_output_name.so",
]
outputs = [
"{{bundle_executable_dir}}/$_output_name",
@@ -632,7 +634,8 @@ template("mac_plugin_bundle") {
if (enable_dsyms) {
data = [
- "$root_out_dir/$_output_name.so.dSYM/",
+ "$root_out_dir/$_output_name.so.dSYM/Contents/Info.plist",
+ "$root_out_dir/$_output_name.so.dSYM/Contents/Resources/DWARF/$_output_name.so",
]
}
diff --git a/chromium/build/config/posix/sysroot_ld_path.py b/chromium/build/config/posix/sysroot_ld_path.py
index 5fe5623711c..b45aa0de497 100644
--- a/chromium/build/config/posix/sysroot_ld_path.py
+++ b/chromium/build/config/posix/sysroot_ld_path.py
@@ -17,7 +17,8 @@ if len(sys.argv) != 3:
print("Need two arguments")
sys.exit(1)
-result = subprocess.check_output([sys.argv[1], sys.argv[2]]).strip()
+result = subprocess.check_output([sys.argv[1],
+ sys.argv[2]]).strip().decode("utf-8")
result = result.replace(" ", "\n")
if result != "":
print(result)
diff --git a/chromium/build/config/sanitizers/sanitizers.gni b/chromium/build/config/sanitizers/sanitizers.gni
index 2ac235b3bc6..d96cd308341 100644
--- a/chromium/build/config/sanitizers/sanitizers.gni
+++ b/chromium/build/config/sanitizers/sanitizers.gni
@@ -48,11 +48,6 @@ declare_args() {
msan_track_origins = 2
# Use dynamic libraries instrumented by one of the sanitizers instead of the
- # standard system libraries. Set this flag to download prebuilt binaries from
- # GCS.
- use_prebuilt_instrumented_libraries = false
-
- # Use dynamic libraries instrumented by one of the sanitizers instead of the
# standard system libraries. Set this flag to build the libraries from source.
use_locally_built_instrumented_libraries = false
@@ -142,11 +137,16 @@ if (current_toolchain != default_toolchain) {
use_cfi_diag = false
use_cfi_recover = false
use_libfuzzer = false
- use_prebuilt_instrumented_libraries = false
use_locally_built_instrumented_libraries = false
use_sanitizer_coverage = false
}
+# Use dynamic libraries instrumented by one of the sanitizers instead of the
+# standard system libraries. We have instrumented system libraries for msan,
+# which requires them to prevent false positives.
+# TODO(thakis): Maybe remove this variable.
+use_prebuilt_instrumented_libraries = is_msan
+
# Whether we are doing a fuzzer build. Normally this should be checked instead
# of checking "use_libfuzzer || use_afl" because often developers forget to
# check for "use_afl".
@@ -194,9 +194,6 @@ if (use_libfuzzer && is_linux) {
# relies on LEAK_SANITIZER define to avoid false positives.
is_lsan = true
}
- if (is_msan) {
- use_prebuilt_instrumented_libraries = true
- }
}
# MSan only links Chrome properly in release builds (brettw -- 9/1/2015). The
diff --git a/chromium/build/config/win/BUILD.gn b/chromium/build/config/win/BUILD.gn
index edb193a5f3a..95e32520781 100644
--- a/chromium/build/config/win/BUILD.gn
+++ b/chromium/build/config/win/BUILD.gn
@@ -61,9 +61,12 @@ config("compiler") {
"/FS", # Preserve previous PDB behavior.
"/bigobj", # Some of our files are bigger than the regular limits.
"/utf-8", # Assume UTF-8 by default to avoid code page dependencies.
- "/Zc:twoPhase",
]
+ if (is_clang) {
+ cflags += [ "/Zc:twoPhase" ]
+ }
+
# Force C/C++ mode for the given GN detected file type. This is necessary
# for precompiled headers where the same source file is compiled in both
# modes.
@@ -142,6 +145,9 @@ config("compiler") {
# (link.exe also writes the current time, but it doesn't have a flag to
# override that behavior.)
ldflags += [ "/TIMESTAMP:" + build_timestamp ]
+
+ # Don't look for libpaths in %LIB%, similar to /X in cflags above.
+ ldflags += [ "/lldignoreenv" ]
}
if (!is_debug && !is_component_build) {
diff --git a/chromium/build/copy_test_data_ios.py b/chromium/build/copy_test_data_ios.py
index 6a15ca2a7b3..cd23fb29bd5 100755
--- a/chromium/build/copy_test_data_ios.py
+++ b/chromium/build/copy_test_data_ios.py
@@ -96,7 +96,7 @@ def DoMain(argv):
def main(argv):
try:
result = DoMain(argv[1:])
- except WrongNumberOfArgumentsException, e:
+ except WrongNumberOfArgumentsException as e:
print(e, file=sys.stderr)
return 1
if result:
diff --git a/chromium/build/fuchsia/aemu_target.py b/chromium/build/fuchsia/aemu_target.py
new file mode 100644
index 00000000000..94c590bd78e
--- /dev/null
+++ b/chromium/build/fuchsia/aemu_target.py
@@ -0,0 +1,72 @@
+# Copyright 2019 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.
+
+"""Implements commands for running and interacting with Fuchsia on AEMU."""
+
+import os
+import platform
+import qemu_target
+import logging
+
+from common import GetEmuRootForPlatform
+
+class AemuTarget(qemu_target.QemuTarget):
+ def __init__(self, output_dir, target_cpu, system_log_file, emu_type,
+ cpu_cores, require_kvm, ram_size_mb):
+ super(AemuTarget, self).__init__(output_dir, target_cpu, system_log_file,
+ emu_type, cpu_cores, require_kvm,
+ ram_size_mb)
+
+ # TODO(crbug.com/1000907): Enable AEMU for arm64.
+ if platform.machine() == 'aarch64':
+ raise Exception('AEMU does not support arm64 hosts.')
+
+ # TODO(bugs.fuchsia.dev/p/fuchsia/issues/detail?id=37301): Remove
+ # once aemu is part of default fuchsia build
+ def _EnsureEmulatorExists(self, path):
+ assert os.path.exists(path), \
+ 'This checkout is missing %s. To check out the files, add this\n' \
+ 'entry to the "custon_vars" section of your .gclient file:\n\n' \
+ ' "checkout_aemu": True\n\n' % (self._emu_type)
+
+ def _BuildCommand(self):
+ aemu_exec = 'emulator-headless'
+
+ aemu_folder = GetEmuRootForPlatform(self._emu_type)
+
+ self._EnsureEmulatorExists(aemu_folder)
+ aemu_path = os.path.join(aemu_folder, aemu_exec)
+
+ # `VirtioInput` is needed for touch input device support on Fuchsia.
+ # `RefCountPipe` is needed for proper cleanup of resources when a process
+ # that uses Vulkan dies inside the guest
+ aemu_features = 'VirtioInput,RefCountPipe'
+
+ # Configure the CPU to emulate.
+ # On Linux, we can enable lightweight virtualization (KVM) if the host and
+ # guest architectures are the same.
+ if self._IsKvmEnabled():
+ aemu_features += ',KVM,GLDirectMem,Vulkan'
+ else:
+ if self._target_cpu != 'arm64':
+ aemu_features += ',-GLDirectMem'
+
+ # All args after -fuchsia flag gets passed to QEMU
+ aemu_command = [aemu_path,
+ '-feature', aemu_features,
+ '-window-size', '1024x600',
+ '-gpu', 'swiftshader_indirect',
+ '-fuchsia'
+ ]
+
+ aemu_command.extend(self._BuildQemuConfig())
+
+ aemu_command.extend([
+ '-vga', 'none',
+ '-device', 'isa-debug-exit,iobase=0xf4,iosize=0x04',
+ '-device', 'virtio-keyboard-pci',
+ '-device', 'virtio_input_multi_touch_pci_1',
+ '-device', 'ich9-ahci,id=ahci'])
+ logging.info(' '.join(aemu_command))
+ return aemu_command
diff --git a/chromium/build/fuchsia/common.py b/chromium/build/fuchsia/common.py
index 3ec1e67aa64..7dd3d52cac8 100644
--- a/chromium/build/fuchsia/common.py
+++ b/chromium/build/fuchsia/common.py
@@ -15,6 +15,8 @@ SDK_ROOT = os.path.join(DIR_SOURCE_ROOT, 'third_party', 'fuchsia-sdk', 'sdk')
IMAGES_ROOT = os.path.join(DIR_SOURCE_ROOT, 'third_party', 'fuchsia-sdk',
'images')
+_PM = os.path.join(SDK_ROOT, 'tools', 'pm')
+
def EnsurePathExists(path):
"""Checks that the file |path| exists on the filesystem and returns the path
if it does, raising an exception otherwise."""
@@ -40,9 +42,9 @@ def GetHostArchFromPlatform():
return 'arm64'
raise Exception('Unsupported host architecture: %s' % host_arch)
-def GetQemuRootForPlatform():
+def GetEmuRootForPlatform(emulator):
return os.path.join(DIR_SOURCE_ROOT, 'third_party',
- 'qemu-' + GetHostOsFromPlatform() + '-' +
+ emulator + '-' + GetHostOsFromPlatform() + '-' +
GetHostArchFromPlatform())
def ConnectPortForwardingTask(target, local_port, remote_port = 0):
@@ -86,3 +88,11 @@ def GetAvailableTcpPort():
port = sock.getsockname()[1]
sock.close()
return port
+
+
+def PublishPackage(package_path, tuf_root):
+ """Publishes a combined FAR package to a TUF repository root."""
+
+ subprocess.check_call(
+ [_PM, 'publish', '-a', '-f', package_path, '-r', tuf_root, '-vt', '-v'],
+ stderr=subprocess.STDOUT)
diff --git a/chromium/build/fuchsia/common_args.py b/chromium/build/fuchsia/common_args.py
index a897a3072d7..7716771009c 100644
--- a/chromium/build/fuchsia/common_args.py
+++ b/chromium/build/fuchsia/common_args.py
@@ -6,25 +6,21 @@ import logging
import os
import sys
+from aemu_target import AemuTarget
from device_target import DeviceTarget
from qemu_target import QemuTarget
-
def AddCommonArgs(arg_parser):
"""Adds command line arguments to |arg_parser| for options which are shared
across test and executable target types."""
common_args = arg_parser.add_argument_group('common', 'Common arguments')
- common_args.add_argument('--package',
- type=os.path.realpath, required=True,
- help='Path to the package to execute.')
+ common_args.add_argument('--package', action='append', required=True,
+ help='Paths of the packages to install, including '
+ 'all dependencies.')
common_args.add_argument('--package-name', required=True,
help='Name of the package to execute, defined in ' +
'package metadata.')
- common_args.add_argument('--package-dep', action='append', default=[],
- help='Path to an additional package to install.')
- common_args.add_argument('--install-only', action='store_true', default=False,
- help='Install the packages but do not run them.')
common_args.add_argument('--output-directory',
type=os.path.realpath, required=True,
help=('Path to the directory in which build files '
@@ -34,8 +30,13 @@ def AddCommonArgs(arg_parser):
common_args.add_argument('--target-staging-path',
help='target path under which to stage packages '
'during deployment.', default='/data')
- common_args.add_argument('--device', '-d', action='store_true', default=False,
- help='Run on hardware device instead of QEMU.')
+ common_args.add_argument('--device', default=None,
+ choices=['aemu','qemu','device'],
+ help='Choose to run on aemu|qemu|device. ' +
+ 'By default, Fuchsia will run in QEMU.')
+ common_args.add_argument('-d', action='store_const', dest='device',
+ const='device',
+ help='Run on device instead of emulator.')
common_args.add_argument('--host', help='The IP of the target device. ' +
'Optional.')
common_args.add_argument('--node-name',
@@ -64,7 +65,11 @@ def AddCommonArgs(arg_parser):
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.'),
+ 'launching in a VM.'),
+ common_args.add_argument('--memory', type=int, default=2048,
+ help='Sets the RAM size (MB) if launching in a VM'),
+ common_args.add_argument('--no-kvm', action='store_true', default=False,
+ help='Disable KVM virtualization'),
common_args.add_argument(
'--os_check', choices=['check', 'update', 'ignore'],
default='update',
@@ -94,7 +99,6 @@ def ConfigureLogging(args):
def GetDeploymentTargetForArgs(args, require_kvm=False):
"""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:
@@ -102,19 +106,27 @@ def GetDeploymentTargetForArgs(args, require_kvm=False):
else:
system_log_file = None
+ # Allow fuchsia to run on qemu if device not explicitly chosen.
if not args.device:
- return QemuTarget(output_dir=args.output_directory,
- target_cpu=args.target_cpu,
- cpu_cores=args.qemu_cpu_cores,
- system_log_file=system_log_file,
- require_kvm=require_kvm)
+ args.device = 'qemu'
+
+ target_args = { 'output_dir':args.output_directory,
+ 'target_cpu':args.target_cpu,
+ 'system_log_file':system_log_file }
+ if args.device == 'device':
+ target_args.update({ 'host':args.host,
+ 'node_name':args.node_name,
+ 'port':args.port,
+ 'ssh_config':args.ssh_config,
+ 'fuchsia_out_dir':args.fuchsia_out_dir,
+ 'os_check':args.os_check })
+ return DeviceTarget(**target_args)
else:
- return DeviceTarget(output_dir=args.output_directory,
- target_cpu=args.target_cpu,
- host=args.host,
- node_name=args.node_name,
- port=args.port,
- ssh_config=args.ssh_config,
- fuchsia_out_dir=args.fuchsia_out_dir,
- system_log_file=system_log_file,
- os_check=args.os_check)
+ target_args.update({ 'cpu_cores':args.qemu_cpu_cores,
+ 'require_kvm':not args.no_kvm,
+ 'emu_type':args.device,
+ 'ram_size_mb':args.memory })
+ if args.device == 'qemu':
+ return QemuTarget(**target_args)
+ else:
+ return AemuTarget(**target_args)
diff --git a/chromium/build/fuchsia/deploy_to_amber_repo.py b/chromium/build/fuchsia/deploy_to_amber_repo.py
new file mode 100755
index 00000000000..6f36e0a625c
--- /dev/null
+++ b/chromium/build/fuchsia/deploy_to_amber_repo.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#
+# Copyright 2019 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.
+
+"""Deploys Fuchsia packages to an Amber repository in a Fuchsia
+build output directory."""
+
+import argparse
+import os
+import sys
+
+from common import PublishPackage
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--package', action='append', required=True,
+ help='Paths to packages to install.')
+ parser.add_argument('--fuchsia-out-dir', nargs='+',
+ help='Path to a Fuchsia build output directory. '
+ 'If more than one outdir is supplied, the last one '
+ 'in the sequence will be used.')
+ args = parser.parse_args()
+ assert args.package
+
+ if not args.fuchsia_out_dir or len(args.fuchsia_out_dir) == 0:
+ sys.stderr.write('No Fuchsia build output directory was specified.\n' +
+ 'To resolve this, Use the commandline argument ' +
+ '--fuchsia-out-dir\nor set the GN arg ' +
+ '"default_fuchsia_build_dir_for_installation".\n')
+ return 1
+
+ fuchsia_out_dir = args.fuchsia_out_dir.pop()
+ tuf_root = os.path.join(fuchsia_out_dir, 'amber-files')
+ print('Installing packages in Amber repo %s...' % tuf_root)
+ for package in args.package:
+ PublishPackage(package, os.path.expanduser(tuf_root))
+
+ print('Installation success.')
+
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/chromium/build/fuchsia/emu_target.py b/chromium/build/fuchsia/emu_target.py
new file mode 100644
index 00000000000..1aa6e420d05
--- /dev/null
+++ b/chromium/build/fuchsia/emu_target.py
@@ -0,0 +1,92 @@
+# Copyright 2019 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.
+
+"""Implements commands for running/interacting with Fuchsia on an emulator."""
+
+import boot_data
+import logging
+import os
+import subprocess
+import sys
+import target
+import tempfile
+
+class EmuTarget(target.Target):
+ def __init__(self, output_dir, target_cpu, system_log_file):
+ """output_dir: The directory which will contain the files that are
+ generated to support the emulator deployment.
+ target_cpu: The emulated target CPU architecture.
+ Can be 'x64' or 'arm64'."""
+ super(EmuTarget, self).__init__(output_dir, target_cpu)
+ self._emu_process = None
+ self._system_log_file = system_log_file
+
+ def __enter__(self):
+ return self
+
+ def _GetEmulatorName(self):
+ pass
+
+ def _BuildCommand(self):
+ """Build the command that will be run to start Fuchsia in the emulator."""
+ pass
+
+ # Used by the context manager to ensure that the emulator is killed when
+ # the Python process exits.
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ self.Shutdown();
+
+ def Start(self):
+ emu_command = self._BuildCommand()
+
+ # We pass a separate stdin stream. Sharing stdin across processes
+ # leads to flakiness due to the OS prematurely killing the stream and the
+ # Python script panicking and aborting.
+ # The precise root cause is still nebulous, but this fix works.
+ # See crbug.com/741194.
+ logging.debug('Launching %s.' % (self._GetEmulatorName()))
+ logging.debug(' '.join(emu_command))
+
+ # Zircon sends debug logs to serial port (see kernel.serial=legacy flag
+ # above). Serial port is redirected to a file through emulator stdout.
+ # Unless a |_system_log_file| is explicitly set, we output the kernel serial
+ # log to a temporary file, and print that out if we are unable to connect to
+ # the emulator guest, to make it easier to diagnose connectivity issues.
+ temporary_system_log_file = None
+ if self._system_log_file:
+ stdout = self._system_log_file
+ stderr = subprocess.STDOUT
+ else:
+ temporary_system_log_file = tempfile.NamedTemporaryFile('w')
+ stdout = temporary_system_log_file
+ stderr = sys.stderr
+
+ self._emu_process = subprocess.Popen(emu_command, stdin=open(os.devnull),
+ stdout=stdout, stderr=stderr)
+
+ try:
+ self._WaitUntilReady();
+ except target.FuchsiaTargetException:
+ if temporary_system_log_file:
+ logging.info('Kernel logs:\n' +
+ open(temporary_system_log_file.name, 'r').read())
+ raise
+
+ def Shutdown(self):
+ if self._IsEmuStillRunning():
+ logging.info('Shutting down %s' % (self._GetEmulatorName()))
+ self._emu_process.kill()
+
+ def _IsEmuStillRunning(self):
+ if not self._emu_process:
+ return False
+ return os.waitpid(self._emu_process.pid, os.WNOHANG)[0] == 0
+
+ def _GetEndpoint(self):
+ if not self._IsEmuStillRunning():
+ raise Exception('%s quit unexpectedly.' % (self._GetEmulatorName()))
+ return ('localhost', self._host_ssh_port)
+
+ def _GetSshConfigPath(self):
+ return boot_data.GetSSHConfigPath(self._output_dir) \ No newline at end of file
diff --git a/chromium/build/fuchsia/fidlgen_js/fidl.py b/chromium/build/fuchsia/fidlgen_js/fidl.py
index d66ba033050..fb024642767 100644
--- a/chromium/build/fuchsia/fidlgen_js/fidl.py
+++ b/chromium/build/fuchsia/fidlgen_js/fidl.py
@@ -293,7 +293,7 @@ class InterfaceMethodParameter:
class InterfaceMethod:
- def __init__(self, has_request, has_response, maybe_attributes, maybe_request, maybe_request_alignment, maybe_request_size, maybe_response, maybe_response_alignment, maybe_response_size, name, ordinal, generated_ordinal):
+ def __init__(self, has_request, has_response, maybe_attributes, maybe_request, maybe_request_alignment, maybe_request_size, maybe_response, maybe_response_alignment, maybe_response_size, name, ordinal):
self.has_request = has_request
self.has_response = has_response
self.maybe_attributes = maybe_attributes
@@ -305,8 +305,6 @@ class InterfaceMethod:
self.maybe_response_size = maybe_response_size
self.name = name
self.ordinal = ordinal
- # TODO(https://crbug.com/991300): Remove once |ordinal| is 64-bit.
- self.generated_ordinal = generated_ordinal
@staticmethod
def from_dict(obj):
@@ -322,9 +320,7 @@ class InterfaceMethod:
maybe_response_size = from_union([from_int, from_none], obj.get(u"maybe_response_size"))
name = from_str(obj.get(u"name"))
ordinal = from_int(obj.get(u"ordinal"))
- # TODO(https://crbug.com/991300): Remove once |ordinal| is 64-bit.
- generated_ordinal = from_int(obj.get(u"generated_ordinal"))
- return InterfaceMethod(has_request, has_response, maybe_attributes, maybe_request, maybe_request_alignment, maybe_request_size, maybe_response, maybe_response_alignment, maybe_response_size, name, ordinal, generated_ordinal)
+ return InterfaceMethod(has_request, has_response, maybe_attributes, maybe_request, maybe_request_alignment, maybe_request_size, maybe_response, maybe_response_alignment, maybe_response_size, name, ordinal)
def to_dict(self):
result = {}
@@ -339,8 +335,6 @@ class InterfaceMethod:
result[u"maybe_response_size"] = from_union([from_int, from_none], self.maybe_response_size)
result[u"name"] = from_str(self.name)
result[u"ordinal"] = from_int(self.ordinal)
- # TODO(https://crbug.com/991300): Remove once |ordinal| is 64-bit.
- result[u"generated_ordinal"] = from_int(self.generated_ordinal)
return result
diff --git a/chromium/build/fuchsia/fidlgen_js/gen.py b/chromium/build/fuchsia/fidlgen_js/gen.py
index 005101988c2..9830fdbff51 100755
--- a/chromium/build/fuchsia/fidlgen_js/gen.py
+++ b/chromium/build/fuchsia/fidlgen_js/gen.py
@@ -525,8 +525,7 @@ function %(name)s() {}
'const _k%(name)s_%(method_name)s_Ordinal = %(ordinal)sn;\n' % {
'name': name,
'method_name': method_name,
- # TODO(https://crbug.com/991300): Use |ordinal| once it is 64-bit.
- 'ordinal': method.generated_ordinal
+ 'ordinal': method.ordinal
})
self.f.write('\n')
diff --git a/chromium/build/fuchsia/fidlgen_js/runtime/fidl.mjs b/chromium/build/fuchsia/fidlgen_js/runtime/fidl.mjs
index d7ce381f433..d611e61aa51 100644
--- a/chromium/build/fuchsia/fidlgen_js/runtime/fidl.mjs
+++ b/chromium/build/fuchsia/fidlgen_js/runtime/fidl.mjs
@@ -10,7 +10,7 @@ const $fidl_kInitialBufferSize = 1024;
const $fidl_kMessageHeaderSize = 16;
const $fidl_kMessageTxidOffset = 0;
-const $fidl_kMessageOrdinalOffset = 12;
+const $fidl_kMessageOrdinalOffset = 8;
const $fidl__kAlignment = 8;
const $fidl__kAlignmentMask = 0x7;
@@ -30,8 +30,8 @@ function $fidl__align(size) {
function $fidl__setUint64LE(dataView, offset, value) {
var high_bits = Number(BigInt.asUintN(32, value >> 32n))
var low_bits = Number(BigInt.asUintN(32, value))
- dataView.setUint32(offset+0, high_bits, $fidl__kLE);
- dataView.setUint32(offset+4, low_bits, $fidl__kLE);
+ dataView.setUint32(offset+4, high_bits, $fidl__kLE);
+ dataView.setUint32(offset+0, low_bits, $fidl__kLE);
}
diff --git a/chromium/build/fuchsia/linux.sdk.sha1 b/chromium/build/fuchsia/linux.sdk.sha1
index 9f0cf4b7493..6ea1b65663a 100644
--- a/chromium/build/fuchsia/linux.sdk.sha1
+++ b/chromium/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-8903197588632695296 \ No newline at end of file
+8899502756487089920 \ No newline at end of file
diff --git a/chromium/build/fuchsia/mac.sdk.sha1 b/chromium/build/fuchsia/mac.sdk.sha1
index 872fcea6a9d..f17fc2b983b 100644
--- a/chromium/build/fuchsia/mac.sdk.sha1
+++ b/chromium/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-8903199652766737008 \ No newline at end of file
+8899505638123521760 \ No newline at end of file
diff --git a/chromium/build/fuchsia/qemu_target.py b/chromium/build/fuchsia/qemu_target.py
index 4e6ff19b955..68c980a9664 100644
--- a/chromium/build/fuchsia/qemu_target.py
+++ b/chromium/build/fuchsia/qemu_target.py
@@ -6,19 +6,17 @@
import boot_data
import common
+import emu_target
import logging
import md5
import os
import platform
import shutil
-import socket
import subprocess
import sys
-import target
import tempfile
-import time
-from common import GetQemuRootForPlatform, EnsurePathExists
+from common import GetEmuRootForPlatform, EnsurePathExists
# Virtual networking configuration data for QEMU.
@@ -31,46 +29,33 @@ GUEST_MAC_ADDRESS = '52:54:00:63:5e:7b'
EXTENDED_BLOBSTORE_SIZE = 1073741824 # 1GB
-class QemuTarget(target.Target):
- def __init__(self, output_dir, target_cpu, cpu_cores, system_log_file,
- require_kvm, ram_size_mb=2048):
- """output_dir: The directory which will contain the files that are
- generated to support the QEMU deployment.
- target_cpu: The emulated target CPU architecture.
- Can be 'x64' or 'arm64'."""
- 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
- self._require_kvm = require_kvm
-
- def __enter__(self):
- return self
-
- # 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):
- self.Shutdown();
-
- def Start(self):
+class QemuTarget(emu_target.EmuTarget):
+ def __init__(self, output_dir, target_cpu, system_log_file,
+ emu_type, cpu_cores, require_kvm, ram_size_mb):
+ super(QemuTarget, self).__init__(output_dir, target_cpu,
+ system_log_file)
+ self._emu_type=emu_type
+ self._cpu_cores=cpu_cores
+ self._require_kvm=require_kvm
+ self._ram_size_mb=ram_size_mb
+
+ def _GetEmulatorName(self):
+ return self._emu_type
+
+ def _IsKvmEnabled(self):
+ if self._require_kvm:
+ if (sys.platform.startswith('linux') and
+ os.access('/dev/kvm', os.R_OK | os.W_OK)):
+ if self._target_cpu == 'arm64' and platform.machine() == 'aarch64':
+ return True
+ if self._target_cpu == 'x64' and platform.machine() == 'x86_64':
+ return True
+ return False
+
+ def _BuildQemuConfig(self):
boot_data.AssertBootImagesExist(self._GetTargetSdkArch(), 'qemu')
- 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',
+ emu_command = [
'-kernel', EnsurePathExists(
boot_data.GetTargetFile('qemu-kernel.kernel',
self._GetTargetSdkArch(),
@@ -78,6 +63,7 @@ class QemuTarget(target.Target):
'-initrd', EnsurePathExists(
boot_data.GetBootImage(self._output_dir, self._GetTargetSdkArch(),
boot_data.TARGET_TYPE_QEMU)),
+ '-m', str(self._ram_size_mb),
'-smp', str(self._cpu_cores),
# Attach the blobstore and data volumes. Use snapshot mode to discard
@@ -92,38 +78,20 @@ class QemuTarget(target.Target):
# monitor.
'-serial', 'stdio',
'-monitor', 'none',
-
- '-append', ' '.join(kernel_args)
]
# Configure the machine to emulate, based on the target architecture.
if self._target_cpu == 'arm64':
- qemu_command.extend([
+ emu_command.extend([
'-machine','virt',
])
netdev_type = 'virtio-net-pci'
else:
- qemu_command.extend([
+ emu_command.extend([
'-machine', 'q35',
])
netdev_type = 'e1000'
- # Configure the CPU to emulate.
- # On Linux, we can enable lightweight virtualization (KVM) if the host and
- # guest architectures are the same.
- enable_kvm = self._require_kvm or (sys.platform.startswith('linux') and (
- (self._target_cpu == 'arm64' and platform.machine() == 'aarch64') or
- (self._target_cpu == 'x64' and platform.machine() == 'x86_64')) and
- os.access('/dev/kvm', os.R_OK | os.W_OK))
- if enable_kvm:
- qemu_command.extend(['-enable-kvm', '-cpu', 'host,migratable=no'])
- else:
- logging.warning('Unable to launch QEMU with KVM acceleration.')
- if self._target_cpu == 'arm64':
- qemu_command.extend(['-cpu', 'cortex-a53'])
- else:
- qemu_command.extend(['-cpu', 'Haswell,+smap,-check,-fsgsbase'])
-
# Configure virtual network. It is used in the tests to connect to
# testserver running on the host.
netdev_config = 'user,id=net0,net=%s,dhcpstart=%s,host=%s' % \
@@ -131,61 +99,50 @@ class QemuTarget(target.Target):
self._host_ssh_port = common.GetAvailableTcpPort()
netdev_config += ",hostfwd=tcp::%s-:22" % self._host_ssh_port
- qemu_command.extend([
+ emu_command.extend([
'-netdev', netdev_config,
'-device', '%s,netdev=net0,mac=%s' % (netdev_type, GUEST_MAC_ADDRESS),
])
- # We pass a separate stdin stream to qemu. Sharing stdin across processes
- # leads to flakiness due to the OS prematurely killing the stream and the
- # Python script panicking and aborting.
- # The precise root cause is still nebulous, but this fix works.
- # See crbug.com/741194.
- logging.debug('Launching QEMU.')
- logging.debug(' '.join(qemu_command))
-
- # Zircon sends debug logs to serial port (see kernel.serial=legacy flag
- # above). Serial port is redirected to a file through QEMU stdout.
- # Unless a |_system_log_file| is explicitly set, we output the kernel serial
- # log to a temporary file, and print that out if we are unable to connect to
- # the QEMU guest, to make it easier to diagnose connectivity issues.
- temporary_system_log_file = None
- if self._system_log_file:
- stdout = self._system_log_file
- stderr = subprocess.STDOUT
+ # Configure the CPU to emulate.
+ # On Linux, we can enable lightweight virtualization (KVM) if the host and
+ # guest architectures are the same.
+ if self._IsKvmEnabled():
+ kvm_command = ['-enable-kvm', '-cpu', 'host,migratable=no']
else:
- temporary_system_log_file = tempfile.NamedTemporaryFile('w')
- stdout = temporary_system_log_file
- stderr = sys.stderr
-
- self._qemu_process = subprocess.Popen(qemu_command, stdin=open(os.devnull),
- stdout=stdout, stderr=stderr)
- try:
- self._WaitUntilReady();
- except target.FuchsiaTargetException:
- if temporary_system_log_file:
- logging.info("Kernel logs:\n" +
- open(temporary_system_log_file.name, 'r').read())
- raise
-
- def Shutdown(self):
- if self._IsQemuStillRunning():
- logging.info('Shutting down QEMU.')
- self._qemu_process.kill()
-
- def _IsQemuStillRunning(self):
- if not self._qemu_process:
- return False
- 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)
+ logging.warning('Unable to launch %s with KVM acceleration.'
+ % (self._emu_type) +
+ 'The guest VM will be slow.')
+ if self._target_cpu == 'arm64':
+ kvm_command = ['-cpu', 'cortex-a53']
+ else:
+ kvm_command = ['-cpu', 'Haswell,+smap,-check,-fsgsbase']
+
+ emu_command.extend(kvm_command)
+
+ 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')
+
+ # Construct kernel cmd line
+ kernel_args.append('kernel.serial=legacy')
+
+ # Don't 'reboot' the emulator if the kernel crashes
+ kernel_args.append('kernel.halt-on-panic=true')
+
+ emu_command.extend(['-append', ' '.join(kernel_args)])
+
+ return emu_command
+ def _BuildCommand(self):
+ qemu_exec = 'qemu-system-'+self._GetTargetSdkLegacyArch()
+ qemu_command = [os.path.join(GetEmuRootForPlatform(self._emu_type), 'bin',
+ qemu_exec)]
+ qemu_command.extend(self._BuildQemuConfig())
+ qemu_command.append('-nographic')
+ return qemu_command
def _ComputeFileHash(filename):
hasher = md5.new()
@@ -202,7 +159,8 @@ def _EnsureBlobstoreQcowAndReturnPath(output_dir, target_arch):
"""Returns a file containing the Fuchsia blobstore in a QCOW format,
with extra buffer space added for growth."""
- qimg_tool = os.path.join(common.GetQemuRootForPlatform(), 'bin', 'qemu-img')
+ qimg_tool = os.path.join(common.GetEmuRootForPlatform('qemu'),
+ 'bin', 'qemu-img')
fvm_tool = os.path.join(common.SDK_ROOT, 'tools', 'fvm')
blobstore_path = boot_data.GetTargetFile('storage-full.blk', target_arch,
'qemu')
diff --git a/chromium/build/fuchsia/run_package.py b/chromium/build/fuchsia/run_package.py
index 6e3a5d26364..2e0846da9cf 100644
--- a/chromium/build/fuchsia/run_package.py
+++ b/chromium/build/fuchsia/run_package.py
@@ -117,7 +117,6 @@ def _GetComponentUri(package_name):
class RunPackageArgs:
"""RunPackage() configuration arguments structure.
- install_only: If set, skips the package execution step.
symbolizer_config: A newline delimited list of source files contained
in the package. Omitting this parameter will disable symbolization.
system_logging: If set, connects a system log reader to the target.
@@ -125,7 +124,6 @@ class RunPackageArgs:
installation. Defaults to staging into '/data'.
"""
def __init__(self):
- self.install_only = False
self.symbolizer_config = None
self.system_logging = False
self.target_staging_path = '/data'
@@ -133,7 +131,6 @@ class RunPackageArgs:
@staticmethod
def FromCommonArgs(args):
run_package_args = RunPackageArgs()
- run_package_args.install_only = args.install_only
run_package_args.system_logging = args.include_system_logs
run_package_args.target_staging_path = args.target_staging_path
return run_package_args
@@ -151,15 +148,15 @@ def _DrainStreamToStdout(stream, quit_event):
print(line.rstrip())
-def RunPackage(output_dir, target, package_path, package_name,
- package_deps, package_args, args):
+def RunPackage(output_dir, target, package_paths, package_name,
+ package_args, args):
"""Installs the Fuchsia package at |package_path| on the target,
executes it with |package_args|, and symbolizes its output.
output_dir: The path containing the build output files.
target: The deployment Target object that will run the package.
- package_path: The path to the .far package file.
- package_name: The name of app specified by package metadata.
+ package_paths: The paths to the .far packages to be installed.
+ package_name: The name of the primary package to run.
package_args: The arguments which will be passed to the Fuchsia process.
args: Structure of arguments to configure how the package will be run.
@@ -178,16 +175,12 @@ def RunPackage(output_dir, target, package_path, package_name,
log_output_thread.daemon = True
log_output_thread.start()
- target.InstallPackage(package_path, package_name, package_deps)
+ target.InstallPackage(package_paths)
if system_logger:
log_output_quit_event.set()
log_output_thread.join(timeout=_JOIN_TIMEOUT_SECS)
- if args.install_only:
- logging.info('Installation complete.')
- return
-
logging.info('Running application.')
command = ['run', _GetComponentUri(package_name)] + package_args
process = target.RunCommandPiped(command,
@@ -205,7 +198,7 @@ def RunPackage(output_dir, target, package_path, package_name,
build_ids_paths = map(
lambda package_path: os.path.join(
os.path.dirname(package_path), 'ids.txt'),
- [package_path] + package_deps)
+ package_paths)
output_stream = SymbolizerFilter(output_stream, build_ids_paths)
for next_line in output_stream:
diff --git a/chromium/build/fuchsia/target.py b/chromium/build/fuchsia/target.py
index 0d29cd1b7aa..b2e1505a5d8 100644
--- a/chromium/build/fuchsia/target.py
+++ b/chromium/build/fuchsia/target.py
@@ -40,14 +40,6 @@ def _GetPackageInfo(package_path):
return (package_info['name'], package_info['version'])
-def _PublishPackage(tuf_root, package_path):
- """Publishes a combined FAR package to a TUF repository root."""
-
- subprocess.check_call(
- [_PM, 'publish', '-a', '-f', package_path, '-r', tuf_root, '-vt', '-v'],
- stderr=subprocess.STDOUT)
-
-
class _MapIsolatedPathsForPackage:
"""Callable object which remaps /data and /tmp paths to their package-specific
locations."""
@@ -266,15 +258,12 @@ class Target(object):
return 'x86_64'
raise Exception('Unknown target_cpu %s:' % self._target_cpu)
- def InstallPackage(self, package_path, package_name, package_deps):
+ def InstallPackage(self, package_paths):
"""Installs a package and it's dependencies on the device. If the package is
already installed then it will be updated to the new version.
- package_path: Path to the .far file to be installed.
- package_name: Package name.
- package_deps: List of .far files with the packages that the main package
- depends on. These packages are installed or updated as well.
- """
+ package_paths: Paths to the .far files to install."""
+
try:
tuf_root = tempfile.mkdtemp()
pm_serve_task = None
@@ -289,9 +278,8 @@ class Target(object):
':%d' % serve_port, '-q'])
# Publish all packages to the serving TUF repository under |tuf_root|.
- all_packages = [package_path] + package_deps
- for next_package_path in all_packages:
- _PublishPackage(tuf_root, next_package_path)
+ for next_package_path in package_paths:
+ common.PublishPackage(next_package_path, tuf_root)
_WaitForPmServeToBeReady(serve_port)
@@ -299,7 +287,7 @@ class Target(object):
self._RegisterAmberRepository(tuf_root, remote_port)
# Install all packages.
- for next_package_path in all_packages:
+ for next_package_path in package_paths:
install_package_name, package_version = \
_GetPackageInfo(next_package_path)
logging.info('Installing %s version %s.' %
diff --git a/chromium/build/fuchsia/test_runner.py b/chromium/build/fuchsia/test_runner.py
index 669de83a95a..6efa46f224c 100755
--- a/chromium/build/fuchsia/test_runner.py
+++ b/chromium/build/fuchsia/test_runner.py
@@ -123,7 +123,7 @@ def main():
run_package_args = RunPackageArgs.FromCommonArgs(args)
returncode = RunPackage(
args.output_directory, target, args.package, args.package_name,
- args.package_dep, child_args, run_package_args)
+ child_args, run_package_args)
if test_server:
test_server.Stop()
diff --git a/chromium/build/linux/sysroot_scripts/debian-archive-sid-stable.gpg b/chromium/build/linux/sysroot_scripts/debian_archive_unstable.gpg
index a282485bc69..388abb549ef 100644
--- a/chromium/build/linux/sysroot_scripts/debian-archive-sid-stable.gpg
+++ b/chromium/build/linux/sysroot_scripts/debian_archive_unstable.gpg
Binary files differ
diff --git a/chromium/build/linux/sysroot_scripts/generate_debian_archive_unstable_gpg.sh b/chromium/build/linux/sysroot_scripts/generate_debian_archive_unstable_gpg.sh
new file mode 100755
index 00000000000..27cc1005b25
--- /dev/null
+++ b/chromium/build/linux/sysroot_scripts/generate_debian_archive_unstable_gpg.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Copyright 2019 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.
+
+set -o nounset
+set -o errexit
+
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+KEYS=(
+ # Debian Archive Automatic Signing Key (10/buster)
+ "DC30D7C23CBBABEE"
+ # Debian Security Archive Automatic Signing Key (10/buster)
+ "4DFAB270CAA96DFA"
+ # Debian Archive Automatic Signing Key (10/buster)
+ "DC30D7C23CBBABEE"
+ # Jessie Stable Release Key
+ "CBF8D6FD518E17E1"
+ # Debian Archive Automatic Signing Key (7.0/wheezy)
+ "8B48AD6246925553"
+ # Debian Archive Automatic Signing Key (8/jessie)
+ "7638D0442B90D010"
+ # Debian Security Archive Automatic Signing Key (8/jessie)
+ "9D6D8F6BC857C906"
+ # Debian Archive Automatic Signing Key (9/stretch)
+ "E0B11894F66AEC98"
+ # Debian Security Archive Automatic Signing Key (9/stretch)
+ "EDA0D2388AE22BA9"
+ # Debian Stable Release Key (9/stretch)
+ "EF0F382A1A7B6500"
+)
+
+gpg --recv-keys ${KEYS[@]}
+gpg --output "${SCRIPT_DIR}/debian_archive_unstable.gpg" --export ${KEYS[@]}
diff --git a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.amd64 b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.amd64
index 91a8d94b2c1..9bdd555f90c 100644
--- a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.amd64
+++ b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.amd64
@@ -1,346 +1,337 @@
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/alsa-lib/libasound2_1.1.7-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/alsa-lib/libasound2-dev_1.1.7-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/atk1.0/libatk1.0-0_2.30.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/atk1.0/libatk1.0-dev_2.30.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.30.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.30.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.30.0-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.30.0-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/attr/libattr1_2.4.47-2+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/audit/libaudit1_2.8.4-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/b/bluez/libbluetooth3_5.50-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/b/bluez/libbluetooth-dev_5.50-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/b/brltty/libbrlapi0.6_5.6-7+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/b/brltty/libbrlapi-dev_5.6-7+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cairo/libcairo2_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cairo/libcairo2-dev_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/colord/libcolord2_1.4.3-3+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cups/libcups2_2.2.10-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cups/libcups2-dev_2.2.10-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cups/libcupsimage2_2.2.10-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/c/cups/libcupsimage2-dev_2.2.10-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/d/dbus/libdbus-1-3_1.12.12-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/d/dbus/libdbus-1-dev_1.12.12-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.4-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/e/e2fsprogs/libcom-err2_1.44.4-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/e/elfutils/libelf1_0.175-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/e/elfutils/libelf-dev_0.175-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/e/expat/libexpat1_2.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/e/expat/libexpat1-dev_2.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/flac/libflac8_1.3.2-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/flac/libflac-dev_1.3.2-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/freetype/libfreetype6_2.9.1-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/fribidi/libfribidi0_1.0.5-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/f/fribidi/libfribidi-dev_1.0.5-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-6/lib32asan3_6.5.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-6/lib32gcc-6-dev_6.5.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-6/lib32stdc++-6-dev_6.5.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-6/libasan3_6.5.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-6/libgcc-6-dev_6.5.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-6/libstdc++-6-dev_6.5.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-7/lib32cilkrts5_7.4.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-7/lib32ubsan0_7.4.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-7/libcilkrts5_7.4.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-7/libubsan0_7.4.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/lib32atomic1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/lib32gcc1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/lib32gomp1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/lib32itm1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/lib32mpx2_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/lib32quadmath0_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/lib32stdc++6_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libatomic1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libgcc1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libgomp1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libitm1_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/liblsan0_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libmpx2_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libquadmath0_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libstdc++6_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gcc-8/libtsan0_8.2.0-12_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.38.0+dfsg-6_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.38.0+dfsg-6_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/glib2.0/libglib2.0-0_2.58.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/glib2.0/libglib2.0-dev_2.58.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/glibc/libc6_2.28-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/glibc/libc6-dev_2.28-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/glibc/libc6-i386_2.28-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gnutls28/libgnutls28-dev_3.5.19-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gnutls28/libgnutls30_3.5.19-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/graphene/libgraphene-1.0-0_1.8.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/graphene/libgraphene-1.0-dev_1.8.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/graphite2/libgraphite2-3_1.3.12-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/graphite2/libgraphite2-dev_1.3.12-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.2-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.2-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gtk+4.0/libgtk-4-0_3.91.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.91.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/h/harfbuzz/libharfbuzz0b_2.1.1-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.1.1-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.1.1-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.1.1-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/i/icu/libicu57_57.1-9_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/i/icu/libicu60_60.2-6_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/i/icu/libicu63_63.1-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/keyutils/libkeyutils1_1.5.9-9.3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/krb5-multidev_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libgssapi-krb5-2_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libgssrpc4_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libk5crypto3_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libkadm5clnt-mit11_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libkadm5srv-mit11_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libkdb5-9_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libkrb5-3_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libkrb5-dev_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/k/krb5/libkrb5support0_1.16.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/liba/libasyncns/libasyncns0_0.8-6_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libb/libbsd/libbsd0_0.9.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libc/libcap2/libcap2_2.25-1.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libc/libcap2/libcap-dev_2.25-1.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdrm/libdrm2_2.4.95-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.95-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdrm/libdrm-dev_2.4.95-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdrm/libdrm-intel1_2.4.95-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.95-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.95-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libf/libffi/libffi6_3.2.1-9_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libf/libffi/libffi7_3.3~rc0-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.4-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.4-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libegl1_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libgl1_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libgles1_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libgles2_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libglx0_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libgpg-error/libgpg-error0_1.32-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.32-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libi/libice/libice6_1.0.9-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libi/libidn2/libidn2-0_2.0.5-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libi/libidn/libidn11_1.33-2.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b6_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libp/libpng1.6/libpng16-16_1.6.34-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libp/libpng1.6/libpng-dev_1.6.34-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libs/libselinux/libselinux1_2.8-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libs/libsm/libsm6_1.2.2-1+b3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.64.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.64.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libt/libthai/libthai0_0.1.28-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libt/libtool/libltdl7_2.4.6-6_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libu/libunistring/libunistring2_0.9.10-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libva/libva2_2.3.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libva/libva-dev_2.3.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libva/libva-drm2_2.3.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libva/libva-glx2_2.3.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libva/libva-wayland2_2.3.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libva/libva-x11-2_2.3.0-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libvpx/libvpx5_1.7.0-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libw/libwebp/libwebp6_0.6.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libx11/libx11-6_1.6.7-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libx11/libx11-dev_1.6.7-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libx11/libx11-xcb1_1.6.7-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.7-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcursor/libxcursor1_1.1.15-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxi/libxi6_1.7.9-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxss/libxss1_1.2.3-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxt/libxt6_1.1.5-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxt/libxt-dev_1.1.5-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/libz/libzstd/libzstd1_1.3.5+dfsg-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/l/lcms2/liblcms2-2_2.9-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/l/linux/linux-libc-dev_4.18.20-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/l/lz4/liblz4-1_1.8.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libegl1-mesa_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libegl1-mesa-dev_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libgbm1_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libgbm-dev_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libgl1-mesa-dev_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libgl1-mesa-glx_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libglapi-mesa_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/libwayland-egl1-mesa_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/mesa/mesa-common-dev_18.2.6-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/minizip/libminizip1_1.1-8+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/n/nettle/libhogweed4_3.4.1~rc1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/n/nettle/libnettle6_3.4.1~rc1-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/n/nspr/libnspr4_4.20-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/n/nspr/libnspr4-dev_4.20-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/n/nss/libnss3_3.41-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/n/nss/libnss3-dev_3.41-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/o/openssl1.0/libssl1.0.2_1.0.2q-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/o/openssl/libssl1.1_1.1.1a-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/o/openssl/libssl-dev_1.1.1a-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/o/opus/libopus0_1.3~beta+20180518-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/o/opus/libopus-dev_1.3~beta+20180518-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/o/orbit2/liborbit2_2.14.19-4_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/p11-kit/libp11-kit0_0.23.14-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pam/libpam0g_1.1.8-3.8_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pam/libpam0g-dev_1.1.8-3.8_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-5_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pciutils/libpci3_3.5.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pciutils/libpci-dev_3.5.2-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pcre3/libpcre16-3_8.39-11_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pcre3/libpcre32-3_8.39-11_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pcre3/libpcre3_8.39-11_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pcre3/libpcre3-dev_8.39-11_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-11_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.3-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.3-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.3-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pulseaudio/libpulse0_12.2-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pulseaudio/libpulse-dev_12.2-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.2-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/r/re2/libre2-4_20180901+dfsg-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/r/re2/libre2-dev_20180901+dfsg-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-7_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/sqlite3/libsqlite3-0_3.26.0-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/systemd/libsystemd0_239-15_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/systemd/libudev1_239-15_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/s/systemd/libudev-dev_239-15_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/t/tiff/libtiff5_4.0.10-3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/u/unbound/libunbound8_1.8.1-1+b1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/u/util-linux/libblkid1_2.33-0.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/u/util-linux/libmount1_2.33-0.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/u/util-linux/libuuid1_2.33-0.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/u/util-linux/uuid-dev_2.33-0.2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/v/vulkan/libvulkan1_1.1.73+dfsg-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/w/wayland/libwayland-client0_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/w/wayland/libwayland-cursor0_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/w/wayland/libwayland-dev_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/w/wayland/libwayland-egl1_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/w/wayland/libwayland-server0_1.16.0-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/w/wayland-protocols/wayland-protocols_1.16-1_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xft/libxft2_2.3.2-2_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/z/zlib/lib32z1_1.2.11.dfsg-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/z/zlib/lib32z1-dev_1.2.11.dfsg-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_amd64.deb
-https://snapshot.debian.org/archive/debian/20181214T150526Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2_1.1.8-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2-dev_1.1.8-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-0_2.34.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-dev_2.34.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.34.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.34.0-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.34.0-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/attr/libattr1_2.4.48-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/audit/libaudit1_2.8.5-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth3_5.50-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth-dev_5.50-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi0.7_6.0+dfsg-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi-dev_6.0+dfsg-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brotli/libbrotli1_1.0.7-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2_1.16.0-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2-dev_1.16.0-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/colord/libcolord2_1.4.4-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2_2.3.0-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2-dev_2.3.0-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2_2.3.0-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2-dev_2.3.0-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-3_1.12.16-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-dev_1.12.16-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.45.4-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/libcom-err2_1.45.4-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf1_0.176-1.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf-dev_0.176-1.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1_2.2.9-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1-dev_2.2.9-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac8_1.3.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac-dev_1.3.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6_2.9.1-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi0_1.0.7-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi-dev_1.0.7-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libasan4_7.4.0-14_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libcilkrts5_7.4.0-14_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libgcc-7-dev_7.4.0-14_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libstdc++-7-dev_7.4.0-14_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libubsan0_7.4.0-14_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-8/libmpx2_8.3.0-23_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libatomic1_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgcc1_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgomp1_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libitm1_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/liblsan0_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libquadmath0_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libstdc++6_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libtsan0_9.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.40.0+dfsg-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.40.0+dfsg-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-0_2.62.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-dev_2.62.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6_2.29-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6-dev_2.29-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls28-dev_3.6.9-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls30_3.6.9-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-dane0_3.6.9-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-openssl27_3.6.9-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutlsxx28_3.6.9-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-3_1.3.13-8_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-dev_1.3.13-8_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.12-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.12-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-0_3.96.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.96.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz0b_2.6.2-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.6.2-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.6.2-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.6.2-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu/libicu63_63.2-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/keyutils/libkeyutils1_1.6-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/krb5-multidev_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssrpc4_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libk5crypto3_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5clnt-mit11_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5srv-mit11_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkdb5-9_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-3_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-dev_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5support0_1.17-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap2_2.25-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap-dev_2.25-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm2_2.4.99-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.99-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-dev_2.4.99-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-intel1_2.4.99-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.99-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.99-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi6_3.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi7_3.3~rc0-8_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.5-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libegl1_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgl1_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles1_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles2_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglx0_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error0_1.36-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.36-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libice/libice6_1.0.9-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn/libidn11_1.33-2.2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b8_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1_2.9-2+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1-dev_2.9-2+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1_2.9-2+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1-dev_2.9-2+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsm/libsm6_1.2.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-6_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.68.2-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.68.2-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtasn1-6/libtasn1-6_4.14-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtool/libltdl7_2.4.6-11_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva2_2.5.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-dev_2.5.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-drm2_2.5.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-glx2_2.5.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-wayland2_2.5.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-x11-2_2.5.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx6_1.8.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx-dev_1.8.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp6_0.6.1-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-6_1.6.8-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-dev_1.6.8-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb1_1.6.8-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.8-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi6_1.7.9-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.4-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.4-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss1_1.2.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt6_1.1.5-1+b3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt-dev_1.1.5-1+b3_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libz/libzstd/libzstd1_1.4.3+dfsg-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lcms2/liblcms2-2_2.9-4_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/linux/linux-libc-dev_5.2.17-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lz4/liblz4-1_1.9.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa-dev_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm1_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm-dev_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-dev_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-glx_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libglapi-mesa_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libwayland-egl1-mesa_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/mesa-common-dev_19.2.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip1_1.1-8+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libhogweed4_3.5.1+really3.4.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libnettle6_3.5.1+really3.4.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4_4.21-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4-dev_4.21-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3_3.45-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3-dev_3.45-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl1.1_1.1.1d-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl-dev_1.1.1d-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus0_1.3-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus-dev_1.3-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/p11-kit/libp11-kit0_0.23.17-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g_1.3.1-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g-dev_1.3.1-5_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci3_3.6.2-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci-dev_3.6.2-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-16-0_10.32-5+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-32-0_10.32-5+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-8-0_10.32-5+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-dev_10.32-5+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-posix0_10.32-5+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre16-3_8.39-12+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre32-3_8.39-12+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3_8.39-12+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3-dev_8.39-12+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-12+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.5-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.5-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.5-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse0_13.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-dev_13.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_13.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-5_20190901+dfsg-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-dev_20190901+dfsg-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd2_0.9.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.9.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.9.1-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/sqlite3/libsqlite3-0_3.30.1-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libsystemd0_242-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev1_242-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev-dev_242-7_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-28_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tiff/libtiff5_4.0.10+git191003-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/unbound/libunbound8_1.9.4-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid1_2.34-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid-dev_2.34-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount1_2.34-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount-dev_2.34-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libuuid1_2.34-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/uuid-dev_2.34-0.1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/v/vulkan-loader/libvulkan1_1.1.121.0-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-client0_1.17.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-cursor0_1.17.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-dev_1.17.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-egl1_1.17.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-server0_1.17.0-1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland-protocols/wayland-protocols_1.18-1_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xft/libxft2_2.3.2-2_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xz-utils/liblzma5_5.2.4-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+b1_amd64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1+b1_amd64.deb
diff --git a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm
index c6c86be2f27..f11fd4de1ab 100644
--- a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm
+++ b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm
@@ -1,327 +1,336 @@
-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.30.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.30.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.30.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.30.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.30.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.30.0-2_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.4-2_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.12-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.12-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.12-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.12-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.4.3-3_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.2_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-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-2_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.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-1_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_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-22_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-22_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-22_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-29_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.38.0+dfsg-6_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.38.0+dfsg-6_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.58.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.58.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-6_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-6_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.19-1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1+b1_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.12-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.12-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.24.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.1-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.9.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.9.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.9.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.9.0-1_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-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.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_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.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.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_18.10.20180917~bzr490+repack1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-exynos1_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-omap1_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.94-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.5.2-0.3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.5.2-0.3_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-7_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.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.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.5-1_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-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-4_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_armhf.deb
-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-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.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.64.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.64.0-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-4_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.3.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.3.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.3.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.3.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.3.0-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.3.0-2_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
-http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.6-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.6-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.6-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.6-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-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0-dev_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-3_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
-http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_armhf.deb
-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.4-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.2-1_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.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.3-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.3-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_armhf.deb
-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/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.18.6-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.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.8-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.8-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.20-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.20-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.39-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.39-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.1-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.1-1_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.14-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-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-3_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-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/pipewire/libpipewire-0.2-1_0.2.3-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.3-3_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.3-3_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_12.2-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.2-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.2-2_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180901+dfsg-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180901+dfsg-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/shared-mime-info/shared-mime-info_1.10-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-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.25.2-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-10_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-10_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-10_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-6_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound8_1.8.0-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.16.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.16.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.16.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.16.0-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.16.0-1_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
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
-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.11.dfsg-1_armhf.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2_1.1.8-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2-dev_1.1.8-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-0_2.34.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-dev_2.34.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.34.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.34.0-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.34.0-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/attr/libattr1_2.4.48-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/audit/libaudit1_2.8.5-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth3_5.50-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth-dev_5.50-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi0.7_6.0+dfsg-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi-dev_6.0+dfsg-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brotli/libbrotli1_1.0.7-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2_1.16.0-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2-dev_1.16.0-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/colord/libcolord2_1.4.4-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2_2.3.0-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2-dev_2.3.0-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2_2.3.0-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2-dev_2.3.0-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-3_1.12.16-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-dev_1.12.16-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.45.4-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/libcom-err2_1.45.4-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf1_0.176-1.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf-dev_0.176-1.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1_2.2.9-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1-dev_2.2.9-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac8_1.3.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac-dev_1.3.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6_2.9.1-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi0_1.0.7-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi-dev_1.0.7-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libasan4_7.4.0-14_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libcilkrts5_7.4.0-14_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libgcc-7-dev_7.4.0-14_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libstdc++-7-dev_7.4.0-14_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libubsan0_7.4.0-14_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libatomic1_9.2.1-9_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgcc1_9.2.1-9_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgomp1_9.2.1-9_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libstdc++6_9.2.1-9_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.40.0+dfsg-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.40.0+dfsg-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-0_2.62.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-dev_2.62.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6_2.29-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6-dev_2.29-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls28-dev_3.6.9-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls30_3.6.9-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-dane0_3.6.9-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-openssl27_3.6.9-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutlsxx28_3.6.9-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-3_1.3.13-8_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-dev_1.3.13-8_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.12-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.12-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-0_3.96.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.96.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz0b_2.6.2-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.6.2-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.6.2-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.6.2-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu/libicu63_63.2-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/keyutils/libkeyutils1_1.6-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/krb5-multidev_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssrpc4_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libk5crypto3_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5clnt-mit11_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5srv-mit11_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkdb5-9_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-3_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-dev_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5support0_1.17-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap2_2.25-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap-dev_2.25-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm2_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-dev_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-omap1_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.99-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi6_3.2.1-9_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi7_3.3~rc0-8_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.5-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libegl1_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgl1_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles1_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles2_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglx0_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error0_1.36-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.36-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libice/libice6_1.0.9-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn/libidn11_1.33-2.2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b8_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1_2.9-2+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1-dev_2.9-2+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1_2.9-2+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1-dev_2.9-2+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsm/libsm6_1.2.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-6_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.68.2-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.68.2-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtasn1-6/libtasn1-6_4.14-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtool/libltdl7_2.4.6-11_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva2_2.5.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-dev_2.5.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-drm2_2.5.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-glx2_2.5.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-wayland2_2.5.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-x11-2_2.5.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx6_1.8.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx-dev_1.8.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp6_0.6.1-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-6_1.6.8-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-dev_1.6.8-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb1_1.6.8-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.8-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi6_1.7.9-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.4-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.4-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss1_1.2.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt6_1.1.5-1+b3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt-dev_1.1.5-1+b3_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libz/libzstd/libzstd1_1.4.3+dfsg-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lcms2/liblcms2-2_2.9-4_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/linux/linux-libc-dev_5.2.17-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lz4/liblz4-1_1.9.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa-dev_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm1_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm-dev_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-dev_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-glx_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libglapi-mesa_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libwayland-egl1-mesa_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/mesa-common-dev_19.2.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libhogweed4_3.5.1+really3.4.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libnettle6_3.5.1+really3.4.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4_4.21-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4-dev_4.21-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3_3.45-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3-dev_3.45-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl1.1_1.1.1d-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl-dev_1.1.1d-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus0_1.3-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus-dev_1.3-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/p11-kit/libp11-kit0_0.23.17-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g_1.3.1-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g-dev_1.3.1-5_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci3_3.6.2-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci-dev_3.6.2-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-16-0_10.32-5+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-32-0_10.32-5+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-8-0_10.32-5+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-dev_10.32-5+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-posix0_10.32-5+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre16-3_8.39-12+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre32-3_8.39-12+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3_8.39-12+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3-dev_8.39-12+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-12+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.5-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.5-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.5-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse0_13.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-dev_13.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_13.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-5_20190901+dfsg-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-dev_20190901+dfsg-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd2_0.9.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.9.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.9.1-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/sqlite3/libsqlite3-0_3.30.1-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libsystemd0_242-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev1_242-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev-dev_242-7_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-28_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tiff/libtiff5_4.0.10+git191003-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/unbound/libunbound8_1.9.4-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid1_2.34-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid-dev_2.34-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount1_2.34-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount-dev_2.34-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libuuid1_2.34-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/uuid-dev_2.34-0.1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/v/vulkan-loader/libvulkan1_1.1.121.0-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-client0_1.17.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-cursor0_1.17.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-dev_1.17.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-egl1_1.17.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-server0_1.17.0-1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland-protocols/wayland-protocols_1.18-1_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xft/libxft2_2.3.2-2_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xz-utils/liblzma5_5.2.4-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+b1_armhf.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1+b1_armhf.deb
diff --git a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm64 b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm64
index 2ad21f52ea4..d6fc9b96743 100644
--- a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm64
+++ b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.arm64
@@ -1,328 +1,338 @@
-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.30.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.30.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.30.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.30.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.30.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.30.0-2_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.4-2_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.12-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.12-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.12-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.12-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.4.3-3_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.2_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-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-2_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.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-1_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_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-22_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-22_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-22_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-29_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8.2.0-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.38.0+dfsg-6_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.38.0+dfsg-6_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.58.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.58.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-6_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-6_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.19-1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1+b1_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.12-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.12-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.24.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.1-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.9.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.9.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.9.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.9.0-1_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-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.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_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.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.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_18.10.20180917~bzr490+repack1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.94-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.5.2-0.3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.5.2-0.3_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-7_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.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.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.5-1_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-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-4_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_arm64.deb
-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-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.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.64.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.64.1-1_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-4_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.3.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.3.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.3.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.3.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.3.0-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.3.0-2_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
-http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.6-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.6-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.6-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.6-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-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0-dev_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-3_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
-http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_arm64.deb
-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.4-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.2-1_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.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.3-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.3-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_arm64.deb
-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/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.18.6-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.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.8-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.8-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.20-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.20-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.39-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.39-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.1-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.1-1_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.14-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-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-3_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-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/pipewire/libpipewire-0.2-1_0.2.3-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.3-3_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.3-3_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_12.2-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.2-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.2-2_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180901+dfsg-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180901+dfsg-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/shared-mime-info/shared-mime-info_1.10-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-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.25.2-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-10_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-10_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-10_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-6_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound8_1.8.0-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.16.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.16.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.16.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.16.0-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.16.0-1_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
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
-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.11.dfsg-1_arm64.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2_1.1.8-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2-dev_1.1.8-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-0_2.34.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-dev_2.34.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.34.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.34.0-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.34.0-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/attr/libattr1_2.4.48-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/audit/libaudit1_2.8.5-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth3_5.50-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth-dev_5.50-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi0.7_6.0+dfsg-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi-dev_6.0+dfsg-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brotli/libbrotli1_1.0.7-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2_1.16.0-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2-dev_1.16.0-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/colord/libcolord2_1.4.4-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2_2.3.0-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2-dev_2.3.0-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2_2.3.0-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2-dev_2.3.0-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-3_1.12.16-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-dev_1.12.16-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.45.4-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/libcom-err2_1.45.4-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf1_0.176-1.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf-dev_0.176-1.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1_2.2.9-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1-dev_2.2.9-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac8_1.3.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac-dev_1.3.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6_2.9.1-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi0_1.0.7-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi-dev_1.0.7-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libasan4_7.4.0-14_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libgcc-7-dev_7.4.0-14_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libstdc++-7-dev_7.4.0-14_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libubsan0_7.4.0-14_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libatomic1_9.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgcc1_9.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgomp1_9.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libitm1_9.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/liblsan0_9.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libstdc++6_9.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libtsan0_9.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.40.0+dfsg-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.40.0+dfsg-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-0_2.62.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-dev_2.62.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6_2.29-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6-dev_2.29-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls28-dev_3.6.9-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls30_3.6.9-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-dane0_3.6.9-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-openssl27_3.6.9-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutlsxx28_3.6.9-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-3_1.3.13-8_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-dev_1.3.13-8_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.12-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.12-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-0_3.96.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.96.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz0b_2.6.2-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.6.2-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.6.2-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.6.2-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu/libicu63_63.2-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/keyutils/libkeyutils1_1.6-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/krb5-multidev_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssrpc4_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libk5crypto3_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5clnt-mit11_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5srv-mit11_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkdb5-9_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-3_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-dev_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5support0_1.17-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap2_2.25-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap-dev_2.25-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm2_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-dev_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.99-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi6_3.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi7_3.3~rc0-8_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.5-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libegl1_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgl1_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles1_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles2_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglx0_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error0_1.36-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.36-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libice/libice6_1.0.9-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn/libidn11_1.33-2.2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b8_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1_2.9-2+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1-dev_2.9-2+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1_2.9-2+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1-dev_2.9-2+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsm/libsm6_1.2.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-6_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.68.2-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.68.2-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtasn1-6/libtasn1-6_4.14-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtool/libltdl7_2.4.6-11_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva2_2.5.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-dev_2.5.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-drm2_2.5.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-glx2_2.5.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-wayland2_2.5.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-x11-2_2.5.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx6_1.8.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx-dev_1.8.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp6_0.6.1-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-6_1.6.8-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-dev_1.6.8-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb1_1.6.8-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.8-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi6_1.7.9-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.4-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.4-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss1_1.2.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt6_1.1.5-1+b3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt-dev_1.1.5-1+b3_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libz/libzstd/libzstd1_1.4.3+dfsg-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lcms2/liblcms2-2_2.9-4_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/linux/linux-libc-dev_5.2.17-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lz4/liblz4-1_1.9.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa-dev_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm1_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm-dev_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-dev_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-glx_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libglapi-mesa_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libwayland-egl1-mesa_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/mesa-common-dev_19.2.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip1_1.1-8+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libhogweed4_3.5.1+really3.4.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libnettle6_3.5.1+really3.4.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4_4.21-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4-dev_4.21-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3_3.45-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3-dev_3.45-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl1.1_1.1.1d-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl-dev_1.1.1d-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus0_1.3-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus-dev_1.3-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/p11-kit/libp11-kit0_0.23.17-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g_1.3.1-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g-dev_1.3.1-5_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci3_3.6.2-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci-dev_3.6.2-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-16-0_10.32-5+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-32-0_10.32-5+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-8-0_10.32-5+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-dev_10.32-5+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-posix0_10.32-5+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre16-3_8.39-12+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre32-3_8.39-12+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3_8.39-12+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3-dev_8.39-12+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-12+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.5-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.5-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.5-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse0_13.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-dev_13.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_13.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-5_20190901+dfsg-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-dev_20190901+dfsg-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd2_0.9.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.9.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.9.1-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/sqlite3/libsqlite3-0_3.30.1-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libsystemd0_242-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev1_242-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev-dev_242-7_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-28_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tiff/libtiff5_4.0.10+git191003-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/unbound/libunbound8_1.9.4-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid1_2.34-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid-dev_2.34-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount1_2.34-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount-dev_2.34-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libuuid1_2.34-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/uuid-dev_2.34-0.1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/v/vulkan-loader/libvulkan1_1.1.121.0-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-client0_1.17.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-cursor0_1.17.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-dev_1.17.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-egl1_1.17.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-server0_1.17.0-1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland-protocols/wayland-protocols_1.18-1_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xft/libxft2_2.3.2-2_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xz-utils/liblzma5_5.2.4-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+b1_arm64.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1+b1_arm64.deb
diff --git a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.armel b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.armel
new file mode 100644
index 00000000000..b25614ce781
--- /dev/null
+++ b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.armel
@@ -0,0 +1,335 @@
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2_1.1.8-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2-dev_1.1.8-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-0_2.34.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-dev_2.34.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.34.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.34.0-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.34.0-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/attr/libattr1_2.4.48-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/audit/libaudit1_2.8.5-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth3_5.50-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth-dev_5.50-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi0.7_6.0+dfsg-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi-dev_6.0+dfsg-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brotli/libbrotli1_1.0.7-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2_1.16.0-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2-dev_1.16.0-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/colord/libcolord2_1.4.4-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2_2.3.0-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2-dev_2.3.0-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2_2.3.0-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2-dev_2.3.0-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-3_1.12.16-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-dev_1.12.16-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.45.4-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/libcom-err2_1.45.4-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf1_0.176-1.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf-dev_0.176-1.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1_2.2.9-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1-dev_2.2.9-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac8_1.3.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac-dev_1.3.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6_2.9.1-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi0_1.0.7-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi-dev_1.0.7-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libasan4_7.4.0-14_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libcilkrts5_7.4.0-14_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libgcc-7-dev_7.4.0-14_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libstdc++-7-dev_7.4.0-14_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libubsan0_7.4.0-14_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libatomic1_9.2.1-9_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgcc1_9.2.1-9_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgomp1_9.2.1-9_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libstdc++6_9.2.1-9_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.40.0+dfsg-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.40.0+dfsg-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-0_2.62.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-dev_2.62.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6_2.29-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6-dev_2.29-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls28-dev_3.6.9-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls30_3.6.9-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-dane0_3.6.9-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-openssl27_3.6.9-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutlsxx28_3.6.9-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-3_1.3.13-8_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-dev_1.3.13-8_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.12-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.12-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-0_3.96.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.96.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz0b_2.6.2-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.6.2-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.6.2-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.6.2-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu/libicu63_63.2-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/keyutils/libkeyutils1_1.6-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/krb5-multidev_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssrpc4_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libk5crypto3_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5clnt-mit11_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5srv-mit11_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkdb5-9_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-3_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-dev_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5support0_1.17-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap2_2.25-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap-dev_2.25-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm2_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-dev_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-omap1_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.99-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi6_3.2.1-9_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi7_3.3~rc0-8_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.5-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libegl1_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgl1_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles1_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles2_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglx0_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error0_1.36-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.36-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libice/libice6_1.0.9-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn/libidn11_1.33-2.2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b8_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1_2.9-2+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1-dev_2.9-2+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1_2.9-2+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1-dev_2.9-2+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsm/libsm6_1.2.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-6_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.68.2-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.68.2-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtasn1-6/libtasn1-6_4.14-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtool/libltdl7_2.4.6-11_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva2_2.5.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-dev_2.5.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-drm2_2.5.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-glx2_2.5.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-wayland2_2.5.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-x11-2_2.5.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx6_1.8.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx-dev_1.8.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp6_0.6.1-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-6_1.6.8-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-dev_1.6.8-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb1_1.6.8-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.8-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi6_1.7.9-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.4-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.4-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss1_1.2.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt6_1.1.5-1+b3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt-dev_1.1.5-1+b3_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libz/libzstd/libzstd1_1.4.3+dfsg-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lcms2/liblcms2-2_2.9-4_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/linux/linux-libc-dev_5.2.17-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lz4/liblz4-1_1.9.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa-dev_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm1_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm-dev_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-dev_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-glx_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libglapi-mesa_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libwayland-egl1-mesa_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/mesa-common-dev_19.2.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libhogweed4_3.5.1+really3.4.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libnettle6_3.5.1+really3.4.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4_4.21-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4-dev_4.21-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3_3.45-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3-dev_3.45-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl1.1_1.1.1d-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl-dev_1.1.1d-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus0_1.3-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus-dev_1.3-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/p11-kit/libp11-kit0_0.23.17-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g_1.3.1-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g-dev_1.3.1-5_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci3_3.6.2-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci-dev_3.6.2-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-16-0_10.32-5+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-32-0_10.32-5+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-8-0_10.32-5+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-dev_10.32-5+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-posix0_10.32-5+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre16-3_8.39-12+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre32-3_8.39-12+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3_8.39-12+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3-dev_8.39-12+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-12+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.5-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.5-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.5-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse0_13.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-dev_13.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_13.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-5_20190901+dfsg-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-dev_20190901+dfsg-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd2_0.9.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.9.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.9.1-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/sqlite3/libsqlite3-0_3.30.1-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libsystemd0_242-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev1_242-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev-dev_242-7_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-28_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tiff/libtiff5_4.0.10+git191003-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/unbound/libunbound8_1.9.4-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid1_2.34-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid-dev_2.34-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount1_2.34-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount-dev_2.34-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libuuid1_2.34-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/uuid-dev_2.34-0.1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/v/vulkan-loader/libvulkan1_1.1.121.0-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-client0_1.17.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-cursor0_1.17.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-dev_1.17.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-egl1_1.17.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-server0_1.17.0-1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland-protocols/wayland-protocols_1.18-1_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xft/libxft2_2.3.2-2_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xz-utils/liblzma5_5.2.4-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+b1_armel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1+b1_armel.deb
diff --git a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.i386 b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.i386
index dee9a8415b1..6df787b7ae0 100644
--- a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.i386
+++ b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.i386
@@ -1,327 +1,335 @@
-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.30.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.30.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.30.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.30.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.30.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.30.0-2_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.4-2_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.12-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.12-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.12-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.12-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.4.3-3_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.2_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-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-2_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.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-1_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_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-22_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-22_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-22_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libcilkrts5_7.3.0-29_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-29_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8.2.0-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libmpx2_8.2.0-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libquadmath0_8.2.0-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.38.0+dfsg-6_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.38.0+dfsg-6_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.58.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.58.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-6_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-6_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.19-1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1+b1_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.12-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.12-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.24.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.1-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.9.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.9.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.9.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.9.0-1_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-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.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_i386.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_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.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.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_18.10.20180917~bzr490+repack1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.94-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.94-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.94-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-intel1_2.4.94-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.94-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.94-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.5.2-0.3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.5.2-0.3_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-7_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.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.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.5-1_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-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-4_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_i386.deb
-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-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.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.64.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.64.1-1_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-4_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.3.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.3.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.3.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.3.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.3.0-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.3.0-2_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
-http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.6-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.6-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.6-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.6-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-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0-dev_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-3_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
-http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_i386.deb
-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.4-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.2-1_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.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.3-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.3-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_i386.deb
-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/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.18.10-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.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.8-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.8-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.20-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.20-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.39-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.39-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.1-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.1-1_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.14-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-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-3_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-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/pipewire/libpipewire-0.2-1_0.2.3-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.3-3_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.3-3_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_12.2-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.2-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.2-2_i386.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180901+dfsg-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180901+dfsg-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/shared-mime-info/shared-mime-info_1.10-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-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.25.2-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-10_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-10_i386.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-10_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-6_i386.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound8_1.8.0-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.16.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.16.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.16.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.16.0-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.16.0-1_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
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
-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.11.dfsg-1_i386.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2_1.1.8-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2-dev_1.1.8-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-0_2.34.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-dev_2.34.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.34.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.34.0-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.34.0-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/attr/libattr1_2.4.48-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/audit/libaudit1_2.8.5-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth3_5.50-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth-dev_5.50-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi0.7_6.0+dfsg-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi-dev_6.0+dfsg-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brotli/libbrotli1_1.0.7-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2_1.16.0-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2-dev_1.16.0-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/colord/libcolord2_1.4.4-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2_2.3.0-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2-dev_2.3.0-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2_2.3.0-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2-dev_2.3.0-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-3_1.12.16-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-dev_1.12.16-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.45.4-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/libcom-err2_1.45.4-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf1_0.176-1.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf-dev_0.176-1.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1_2.2.9-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1-dev_2.2.9-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac8_1.3.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac-dev_1.3.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6_2.9.1-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi0_1.0.7-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi-dev_1.0.7-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libasan4_7.4.0-14_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libcilkrts5_7.4.0-14_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libgcc-7-dev_7.4.0-14_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libstdc++-7-dev_7.4.0-14_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libubsan0_7.4.0-14_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-8/libmpx2_8.3.0-23_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libatomic1_9.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgcc1_9.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgomp1_9.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libitm1_9.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libquadmath0_9.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libstdc++6_9.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.40.0+dfsg-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.40.0+dfsg-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-0_2.62.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-dev_2.62.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6_2.29-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6-dev_2.29-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls28-dev_3.6.9-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls30_3.6.9-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-dane0_3.6.9-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-openssl27_3.6.9-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutlsxx28_3.6.9-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-3_1.3.13-8_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-dev_1.3.13-8_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.12-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.12-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-0_3.96.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.96.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz0b_2.6.2-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.6.2-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.6.2-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.6.2-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu/libicu63_63.2-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/keyutils/libkeyutils1_1.6-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/krb5-multidev_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssrpc4_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libk5crypto3_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5clnt-mit11_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5srv-mit11_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkdb5-9_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-3_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-dev_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5support0_1.17-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap2_2.25-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap-dev_2.25-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm2_2.4.99-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.99-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-dev_2.4.99-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-intel1_2.4.99-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.99-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.99-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi6_3.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi7_3.3~rc0-8_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.5-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libegl1_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgl1_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles1_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles2_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglx0_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error0_1.36-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.36-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libice/libice6_1.0.9-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn/libidn11_1.33-2.2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b8_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1_2.9-2+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1-dev_2.9-2+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1_2.9-2+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1-dev_2.9-2+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsm/libsm6_1.2.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-6_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.68.2-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.68.2-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtasn1-6/libtasn1-6_4.14-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtool/libltdl7_2.4.6-11_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva2_2.5.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-dev_2.5.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-drm2_2.5.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-glx2_2.5.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-wayland2_2.5.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-x11-2_2.5.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx6_1.8.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx-dev_1.8.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp6_0.6.1-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-6_1.6.8-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-dev_1.6.8-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb1_1.6.8-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.8-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi6_1.7.9-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.4-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.4-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss1_1.2.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt6_1.1.5-1+b3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt-dev_1.1.5-1+b3_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libz/libzstd/libzstd1_1.4.3+dfsg-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lcms2/liblcms2-2_2.9-4_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/linux/linux-libc-dev_5.2.17-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lz4/liblz4-1_1.9.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa-dev_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm1_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm-dev_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-dev_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-glx_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libglapi-mesa_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libwayland-egl1-mesa_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/mesa-common-dev_19.2.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip1_1.1-8+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libhogweed4_3.5.1+really3.4.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libnettle6_3.5.1+really3.4.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4_4.21-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4-dev_4.21-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3_3.45-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3-dev_3.45-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl1.1_1.1.1d-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl-dev_1.1.1d-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus0_1.3-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus-dev_1.3-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/p11-kit/libp11-kit0_0.23.17-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g_1.3.1-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g-dev_1.3.1-5_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci3_3.6.2-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci-dev_3.6.2-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-16-0_10.32-5+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-32-0_10.32-5+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-8-0_10.32-5+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-dev_10.32-5+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-posix0_10.32-5+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre16-3_8.39-12+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre32-3_8.39-12+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3_8.39-12+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3-dev_8.39-12+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-12+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.5-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.5-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.5-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse0_13.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-dev_13.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_13.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-5_20190901+dfsg-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-dev_20190901+dfsg-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd2_0.9.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.9.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.9.1-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/sqlite3/libsqlite3-0_3.30.1-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libsystemd0_242-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev1_242-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev-dev_242-7_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-28_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tiff/libtiff5_4.0.10+git191003-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/unbound/libunbound8_1.9.4-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid1_2.34-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid-dev_2.34-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount1_2.34-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount-dev_2.34-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libuuid1_2.34-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/uuid-dev_2.34-0.1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/v/vulkan-loader/libvulkan1_1.1.121.0-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-client0_1.17.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-cursor0_1.17.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-dev_1.17.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-egl1_1.17.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-server0_1.17.0-1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland-protocols/wayland-protocols_1.18-1_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xft/libxft2_2.3.2-2_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xz-utils/liblzma5_5.2.4-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+b1_i386.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1+b1_i386.deb
diff --git a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el
index 825d387336a..c90f3189767 100644
--- a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el
+++ b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el
@@ -1,320 +1,328 @@
-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.30.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.30.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.30.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.30.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.30.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.30.0-2_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.4-2_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.12-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.12-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.12-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.12-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.4.3-3_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.2_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-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-2_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.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-1_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_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-22_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-22_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.38.0+dfsg-6_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.38.0+dfsg-6_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.58.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.58.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-6_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-6_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.19-1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1+b1_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.12-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.12-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.24.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.1-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.9.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.9.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.9.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.9.0-1_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-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.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_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.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.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_18.10.20180917~bzr490+repack1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.94-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.94-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.94-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.94-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.94-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.5.2-0.3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.5.2-0.3_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-7_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.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.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.5-1_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-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-4_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_mips64el.deb
-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-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.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.64.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.64.1-1_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-4_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.3.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.3.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.3.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.3.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.3.0-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.3.0-2_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
-http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.6-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.6-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.6-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.6-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-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0-dev_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-3_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
-http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3+b1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_mips64el.deb
-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.4-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.2-1_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.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.3-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.3-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_mips64el.deb
-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/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.18.8-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.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.8-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.8-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.20-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.20-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.39-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.39-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.1-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.1-1_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.14-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-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-3_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-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/pipewire/libpipewire-0.2-1_0.2.3-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.3-3_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.3-3_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_12.2-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.2-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.2-2_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180901+dfsg-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180901+dfsg-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/shared-mime-info/shared-mime-info_1.10-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-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.25.2-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-10_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-10_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-10_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-6_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound8_1.8.0-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.16.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.16.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.16.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.16.0-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.16.0-1_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
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
-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.11.dfsg-1_mips64el.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2_1.1.8-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2-dev_1.1.8-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-0_2.34.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-dev_2.34.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.34.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.34.0-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.34.0-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/attr/libattr1_2.4.48-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/audit/libaudit1_2.8.5-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth3_5.50-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth-dev_5.50-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi0.7_6.0+dfsg-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi-dev_6.0+dfsg-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brotli/libbrotli1_1.0.7-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2_1.16.0-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2-dev_1.16.0-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/colord/libcolord2_1.4.4-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2_2.3.0-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2-dev_2.3.0-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2_2.3.0-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2-dev_2.3.0-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-3_1.12.16-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-dev_1.12.16-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.45.4-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/libcom-err2_1.45.4-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf1_0.176-1.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf-dev_0.176-1.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1_2.2.9-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1-dev_2.2.9-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac8_1.3.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac-dev_1.3.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6_2.9.1-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi0_1.0.7-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi-dev_1.0.7-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libgcc-7-dev_7.4.0-14_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libstdc++-7-dev_7.4.0-14_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libatomic1_9.2.1-9_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgcc1_9.2.1-9_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgomp1_9.2.1-9_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libstdc++6_9.2.1-9_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.40.0+dfsg-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.40.0+dfsg-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-0_2.62.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-dev_2.62.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6_2.29-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6-dev_2.29-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls28-dev_3.6.9-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls30_3.6.9-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-dane0_3.6.9-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-openssl27_3.6.9-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutlsxx28_3.6.9-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-3_1.3.13-8_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-dev_1.3.13-8_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.12-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.12-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-0_3.96.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.96.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz0b_2.6.2-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.6.2-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.6.2-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.6.2-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu/libicu63_63.2-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/keyutils/libkeyutils1_1.6-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/krb5-multidev_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssrpc4_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libk5crypto3_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5clnt-mit11_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5srv-mit11_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkdb5-9_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-3_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-dev_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5support0_1.17-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap2_2.25-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap-dev_2.25-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm2_2.4.99-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.99-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-dev_2.4.99-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.99-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.99-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi6_3.2.1-9_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi7_3.3~rc0-8_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.5-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libegl1_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgl1_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles1_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles2_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglx0_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error0_1.36-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.36-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libice/libice6_1.0.9-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn/libidn11_1.33-2.2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b8_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1_2.9-2+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1-dev_2.9-2+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1_2.9-2+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1-dev_2.9-2+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsm/libsm6_1.2.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-6_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.68.2-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.68.2-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtasn1-6/libtasn1-6_4.14-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtool/libltdl7_2.4.6-11_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva2_2.5.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-dev_2.5.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-drm2_2.5.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-glx2_2.5.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-wayland2_2.5.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-x11-2_2.5.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx6_1.8.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx-dev_1.8.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp6_0.6.1-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-6_1.6.8-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-dev_1.6.8-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb1_1.6.8-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.8-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi6_1.7.9-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.4-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.4-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss1_1.2.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt6_1.1.5-1+b3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt-dev_1.1.5-1+b3_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libz/libzstd/libzstd1_1.4.3+dfsg-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lcms2/liblcms2-2_2.9-4_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/linux/linux-libc-dev_5.2.17-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lz4/liblz4-1_1.9.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa-dev_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm1_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm-dev_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-dev_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-glx_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libglapi-mesa_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libwayland-egl1-mesa_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/mesa-common-dev_19.2.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libhogweed4_3.5.1+really3.4.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libnettle6_3.5.1+really3.4.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4_4.21-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4-dev_4.21-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3_3.45-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3-dev_3.45-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl1.1_1.1.1d-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl-dev_1.1.1d-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus0_1.3-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus-dev_1.3-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/p11-kit/libp11-kit0_0.23.17-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g_1.3.1-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g-dev_1.3.1-5_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci3_3.6.2-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci-dev_3.6.2-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-16-0_10.32-5+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-32-0_10.32-5+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-8-0_10.32-5+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-dev_10.32-5+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-posix0_10.32-5+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre16-3_8.39-12+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre32-3_8.39-12+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3_8.39-12+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3-dev_8.39-12+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-12+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.5-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.5-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.5-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse0_13.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-dev_13.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_13.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-5_20190901+dfsg-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-dev_20190901+dfsg-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd2_0.9.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.9.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.9.1-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/sqlite3/libsqlite3-0_3.30.1-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libsystemd0_242-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev1_242-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev-dev_242-7_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-28_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tiff/libtiff5_4.0.10+git191003-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/unbound/libunbound8_1.9.4-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid1_2.34-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid-dev_2.34-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount1_2.34-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount-dev_2.34-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libuuid1_2.34-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/uuid-dev_2.34-0.1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/v/vulkan-loader/libvulkan1_1.1.121.0-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-client0_1.17.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-cursor0_1.17.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-dev_1.17.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-egl1_1.17.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-server0_1.17.0-1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland-protocols/wayland-protocols_1.18-1_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xft/libxft2_2.3.2-2_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xz-utils/liblzma5_5.2.4-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+b1_mips64el.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1+b1_mips64el.deb
diff --git a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel
index 8317793d764..729494548bb 100644
--- a/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel
+++ b/chromium/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel
@@ -1,320 +1,328 @@
-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.30.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.30.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.30.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.30.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.30.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.30.0-2_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.4-2_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.12-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.12-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.12-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.12-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.4.3-3_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.2_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-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.4-2_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.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-1_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_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-22_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-22_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8.2.0-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8.2.0-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8.2.0-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.2.0-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.38.0+dfsg-6_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.38.0+dfsg-6_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.58.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.58.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-6_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-6_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.19-1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.19-1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.19-1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.19-1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.19-1+b1_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.12-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.12-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.24.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.1-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.9.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.9.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.9.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.9.0-1_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-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.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_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.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.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_18.10.20180917~bzr490+repack1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.94-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.94-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.94-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.94-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.94-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.5.2-0.3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.5.2-0.3_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-7_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.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.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.5-1_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-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-4_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_mipsel.deb
-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-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.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.64.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.64.0-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-4_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.3.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.3.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.3.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.3.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.3.0-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.3.0-2_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
-http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.6-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.6-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.6-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.6-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-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0-dev_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-3_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
-http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_mipsel.deb
-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.4-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.2-1_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.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.3-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.3-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1+b1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1+b1_mipsel.deb
-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/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.18.8-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.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_18.1.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_18.1.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_18.1.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_18.1.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_18.1.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_18.1.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_18.1.8-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_18.1.8-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.20-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.20-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.39-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.39-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.1-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.1-1_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.14-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-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-3_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-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/pipewire/libpipewire-0.2-1_0.2.3-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.3-3_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.3-3_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_12.2-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_12.2-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_12.2-2_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180901+dfsg-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180901+dfsg-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/shared-mime-info/shared-mime-info_1.10-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-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.25.2-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_239-10_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_239-10_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_239-10_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-6_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound8_1.8.0-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.16.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.16.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.16.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-egl1_1.16.0-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.16.0-1_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
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
-http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
-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.11.dfsg-1_mipsel.deb
-http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2_1.1.8-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/alsa-lib/libasound2-dev_1.1.8-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-0_2.34.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/atk1.0/libatk1.0-dev_2.34.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.34.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.34.0-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.34.0-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/attr/libattr1_2.4.48-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/audit/libaudit1_2.8.5-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-client3_0.7-4+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/a/avahi/libavahi-common3_0.7-4+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth3_5.50-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/bluez/libbluetooth-dev_5.50-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi0.7_6.0+dfsg-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brltty/libbrlapi-dev_6.0+dfsg-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/b/brotli/libbrotli1_1.0.7-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2_1.16.0-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo2-dev_1.16.0-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/colord/libcolord2_1.4.4-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2_2.3.0-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcups2-dev_2.3.0-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2_2.3.0-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/c/cups/libcupsimage2-dev_2.3.0-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-3_1.12.16-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/d/dbus/libdbus-1-dev_1.12.16-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.45.4-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/e2fsprogs/libcom-err2_1.45.4-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf1_0.176-1.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/elfutils/libelf-dev_0.176-1.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1_2.2.9-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/e/expat/libexpat1-dev_2.2.9-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac8_1.3.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/flac/libflac-dev_1.3.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fontconfig/libfontconfig1-dev_2.13.1-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6_2.9.1-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/freetype/libfreetype6-dev_2.9.1-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi0_1.0.7-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/f/fribidi/libfribidi-dev_1.0.7-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libgcc-7-dev_7.4.0-14_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-7/libstdc++-7-dev_7.4.0-14_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libatomic1_9.2.1-9_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgcc1_9.2.1-9_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libgomp1_9.2.1-9_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gcc-9/libstdc++6_9.2.1-9_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.40.0+dfsg-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.40.0+dfsg-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-0_2.62.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glib2.0/libglib2.0-dev_2.62.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6_2.29-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/glibc/libc6-dev_2.29-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls28-dev_3.6.9-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls30_3.6.9-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-dane0_3.6.9-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutls-openssl27_3.6.9-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gnutls28/libgnutlsxx28_3.6.9-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-3_1.3.13-8_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/graphite2/libgraphite2-dev_1.3.13-8_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.12-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.12-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-0_3.96.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/g/gtk+4.0/libgtk-4-dev_3.96.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz0b_2.6.2-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.6.2-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.6.2-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.6.2-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/i/icu/libicu63_63.2-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.4-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/keyutils/libkeyutils1_1.6-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/krb5-multidev_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libgssrpc4_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libk5crypto3_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5clnt-mit11_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkadm5srv-mit11_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkdb5-9_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-3_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5-dev_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/k/krb5/libkrb5support0_1.17-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap2_2.25-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap2/libcap-dev_2.25-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr490+repack1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr490+repack1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr490+repack1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr490+repack1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm2_2.4.99-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.99-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-dev_2.4.99-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.99-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.99-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy0_1.5.3-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.3-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi6_3.2.1-9_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi7_3.3~rc0-8_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libf/libffi/libffi-dev_3.2.1-9_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.5-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libegl1_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgl1_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles1_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libgles2_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd0_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglvnd-dev_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libglx0_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libglvnd/libopengl0_1.1.0-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error0_1.36-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.36-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libice/libice6_1.0.9-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libidn/libidn11_1.33-2.2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b8_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg0_1.3.2-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpsl/libpsl5_0.20.2-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1_2.9-2+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libselinux/libselinux1-dev_2.9-2+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1_2.9-2+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsepol/libsepol1-dev_2.9-2+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsm/libsm6_1.2.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsndfile/libsndfile1_1.0.28-6_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.68.2-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.68.2-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtasn1-6/libtasn1-6_4.14-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libthai/libthai0_0.1.28-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libt/libtool/libltdl7_2.4.6-11_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva2_2.5.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-dev_2.5.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-drm2_2.5.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-glx2_2.5.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-wayland2_2.5.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libva/libva-x11-2_2.5.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbis0a_1.3.6-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx6_1.8.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libv/libvpx/libvpx-dev_1.8.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp6_0.6.1-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-6_1.6.8-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-dev_1.6.8-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb1_1.6.8-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libx11/libx11-xcb-dev_1.6.8-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau6_1.0.8-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb1-dev_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-dri3-0_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-present0_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-render0-dev_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-sync1_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcb/libxcb-xfixes0_1.13.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext6_1.3.3-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi6_1.7.9-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxi/libxi-dev_1.7.9-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.4-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.4-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-7+b3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-7+b3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxslt/libxslt1-dev_1.1.32-2.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss1_1.2.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt6_1.1.5-1+b3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxt/libxt-dev_1.1.5-1+b3_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/libz/libzstd/libzstd1_1.4.3+dfsg-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lcms2/liblcms2-2_2.9-4_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/linux/linux-libc-dev_5.2.17-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lz4/liblz4-1_1.9.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/l/lzo2/liblzo2-2_2.10-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libegl1-mesa-dev_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm1_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgbm-dev_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-dev_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libgl1-mesa-glx_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libglapi-mesa_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/libwayland-egl1-mesa_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/mesa/mesa-common-dev_19.2.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libhogweed4_3.5.1+really3.4.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nettle/libnettle6_3.5.1+really3.4.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4_4.21-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nspr/libnspr4-dev_4.21-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3_3.45-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/n/nss/libnss3-dev_3.45-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl1.1_1.1.1d-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/openssl/libssl-dev_1.1.1d-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus0_1.3-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/o/opus/libopus-dev_1.3-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/p11-kit/libp11-kit0_0.23.17-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g_1.3.1-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pam/libpam0g-dev_1.3.1-5_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango-1.0-0_1.42.4-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpango1.0-dev_1.42.4-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.4-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.4-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.4-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci3_3.6.2-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pciutils/libpci-dev_3.6.2-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-16-0_10.32-5+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-32-0_10.32-5+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-8-0_10.32-5+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-dev_10.32-5+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre2/libpcre2-posix0_10.32-5+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre16-3_8.39-12+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre32-3_8.39-12+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3_8.39-12+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcre3-dev_8.39-12+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-12+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-1_0.2.5-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libpipewire-0.2-dev_0.2.5-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pipewire/libspa-lib-0.1-dev_0.2.5-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-0_0.36.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pixman/libpixman-1-dev_0.36.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse0_13.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-dev_13.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_13.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-5_20190901+dfsg-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/r/re2/libre2-dev_20190901+dfsg-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/shared-mime-info/shared-mime-info_1.10-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy1v5_1.1.7-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/snappy/libsnappy-dev_1.1.7-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd2_0.9.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.9.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/speech-dispatcher/speech-dispatcher_0.9.1-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/sqlite3/libsqlite3-0_3.30.1-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libsystemd0_242-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev1_242-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/s/systemd/libudev-dev_242-7_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-28_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/t/tiff/libtiff5_4.0.10+git191003-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/unbound/libunbound8_1.9.4-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid1_2.34-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libblkid-dev_2.34-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount1_2.34-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libmount-dev_2.34-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/libuuid1_2.34-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/u/util-linux/uuid-dev_2.34-0.1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/v/vulkan-loader/libvulkan1_1.1.121.0-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-client0_1.17.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-cursor0_1.17.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-dev_1.17.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-egl1_1.17.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland/libwayland-server0_1.17.0-1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/w/wayland-protocols/wayland-protocols_1.18-1_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xft/libxft2_2.3.2-2_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/x/xz-utils/liblzma5_5.2.4-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+b1_mipsel.deb
+https://snapshot.debian.org/archive/debian/20191015T084824Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1+b1_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 f3bf1de2580..95531e22672 100755
--- a/chromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh
+++ b/chromium/build/linux/sysroot_scripts/sysroot-creator-sid.sh
@@ -14,21 +14,24 @@ DIST=sid
# 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.
+# Also keep "stretch" before "sid" and "experimental". For now, it's needed to
+# bring back libgnome-keyring-dev which has since been deprecated and removed
+# from sid. It will be needed until gnome keyring is removed
+# (http://crbug.com/466975 and http://crbug.com/355223).
ARCHIVE_URL="https://snapshot.debian.org/archive/debian"
-ARCHIVE_TIMESTAMP=20181214T150526Z
-APT_SOURCES_LIST="${ARCHIVE_URL}/${ARCHIVE_TIMESTAMP}/ experimental main
+ARCHIVE_TIMESTAMP=20191015T084824Z
+APT_SOURCES_LIST="${ARCHIVE_URL}/${ARCHIVE_TIMESTAMP}/ stretch main
+${ARCHIVE_URL}/${ARCHIVE_TIMESTAMP}/ experimental main
${ARCHIVE_URL}/${ARCHIVE_TIMESTAMP}/ sid main"
-# gpg keyring file generated using:
-# export KEYS="518E17E1 46925553 2B90D010 C857C906 F66AEC98 8AE22BA9 1A7B6500"
-# gpg --recv-keys $KEYS
-# gpg --output ./debian-archive-sid-stable.gpg --export $KEYS
-KEYRING_FILE="${SCRIPT_DIR}/debian-archive-sid-stable.gpg"
+# gpg keyring file generated using generate_debian_archive_unstable.sh
+KEYRING_FILE="${SCRIPT_DIR}/debian_archive_unstable.gpg"
HAS_ARCH_AMD64=1
HAS_ARCH_I386=1
HAS_ARCH_ARM=1
HAS_ARCH_ARM64=1
+HAS_ARCH_ARMEL=1
HAS_ARCH_MIPS=1
HAS_ARCH_MIPS64EL=1
@@ -56,11 +59,13 @@ DEBIAN_PACKAGES="\
libaudit1
libavahi-client3
libavahi-common3
+ libblkid-dev
libblkid1
libbluetooth-dev
libbluetooth3
libbrlapi-dev
- libbrlapi0.6
+ libbrlapi0.7
+ libbrotli1
libbsd0
libc6
libc6-dev
@@ -114,7 +119,7 @@ DEBIAN_PACKAGES="\
libfribidi0
libgbm-dev
libgbm1
- libgcc-6-dev
+ libgcc-7-dev
libgcc1
libgcrypt20
libgcrypt20-dev
@@ -161,7 +166,6 @@ DEBIAN_PACKAGES="\
libice6
libicu-le-hb0
libicu63
- libicu60
libidl-2-0
libidn11
libidn2-0
@@ -188,6 +192,7 @@ DEBIAN_PACKAGES="\
liblzo2-2
libminizip-dev
libminizip1
+ libmount-dev
libmount1
libnettle6
libnspr4
@@ -200,8 +205,6 @@ DEBIAN_PACKAGES="\
libopengl0
libopus-dev
libopus0
- liborbit-2-0
- liborbit2
libp11-kit0
libpam0g
libpam0g-dev
@@ -215,6 +218,11 @@ DEBIAN_PACKAGES="\
libpci3
libpciaccess0
libpcre16-3
+ libpcre2-16-0
+ libpcre2-32-0
+ libpcre2-8-0
+ libpcre2-dev
+ libpcre2-posix0
libpcre3
libpcre3-dev
libpcre32-3
@@ -230,10 +238,13 @@ DEBIAN_PACKAGES="\
libpulse-dev
libpulse-mainloop-glib0
libpulse0
- libre2-4
+ libre2-5
libre2-dev
librest-0.7-0
+ libselinux1-dev
libselinux1
+ libsepol1-dev
+ libsepol1
libsm6
libsnappy-dev
libsnappy1v5
@@ -245,9 +256,8 @@ DEBIAN_PACKAGES="\
libspeechd2
libsqlite3-0
libssl-dev
- libssl1.0.2
libssl1.1
- libstdc++-6-dev
+ libstdc++-7-dev
libstdc++6
libsystemd0
libtasn1-6
@@ -267,7 +277,7 @@ DEBIAN_PACKAGES="\
libvorbis0a
libvorbisenc2
libvpx-dev
- libvpx5
+ libvpx6
libvulkan1
libwayland-client0
libwayland-cursor0
@@ -365,7 +375,7 @@ DEBIAN_PACKAGES_AMD64="
"
DEBIAN_PACKAGES_X86="
- libasan3
+ libasan4
libcilkrts5
libdrm-intel1
libitm1
@@ -375,7 +385,8 @@ DEBIAN_PACKAGES_X86="
"
DEBIAN_PACKAGES_ARM="
- libasan3
+ libasan4
+ libcilkrts5
libdrm-etnaviv1
libdrm-exynos1
libdrm-freedreno1
@@ -385,14 +396,29 @@ DEBIAN_PACKAGES_ARM="
"
DEBIAN_PACKAGES_ARM64="
- libasan3
+ libasan4
libdrm-etnaviv1
libdrm-freedreno1
libdrm-tegra0
libgmp10
libitm1
+ liblsan0
libthai0
+ libtsan0
libubsan0
"
+DEBIAN_PACKAGES_ARMEL="
+ libasan4
+ libcilkrts5
+ libdrm-exynos1
+ libdrm-freedreno1
+ libdrm-omap1
+ libdrm-tegra0
+ libubsan0
+"
+
+DEBIAN_PACKAGES_MIPS64EL="
+"
+
. "${SCRIPT_DIR}/sysroot-creator.sh"
diff --git a/chromium/build/linux/sysroot_scripts/sysroot-creator.sh b/chromium/build/linux/sysroot_scripts/sysroot-creator.sh
index 88645dad348..9d47ddbd763 100644
--- a/chromium/build/linux/sysroot_scripts/sysroot-creator.sh
+++ b/chromium/build/linux/sysroot_scripts/sysroot-creator.sh
@@ -48,6 +48,7 @@ readonly HAS_ARCH_AMD64=${HAS_ARCH_AMD64:=0}
readonly HAS_ARCH_I386=${HAS_ARCH_I386:=0}
readonly HAS_ARCH_ARM=${HAS_ARCH_ARM:=0}
readonly HAS_ARCH_ARM64=${HAS_ARCH_ARM64:=0}
+readonly HAS_ARCH_ARMEL=${HAS_ARCH_ARMEL:=0}
readonly HAS_ARCH_MIPS=${HAS_ARCH_MIPS:=0}
readonly HAS_ARCH_MIPS64EL=${HAS_ARCH_MIPS64EL:=0}
@@ -65,6 +66,7 @@ readonly DEBIAN_DEP_LIST_AMD64="generated_package_lists/${DIST}.amd64"
readonly DEBIAN_DEP_LIST_I386="generated_package_lists/${DIST}.i386"
readonly DEBIAN_DEP_LIST_ARM="generated_package_lists/${DIST}.arm"
readonly DEBIAN_DEP_LIST_ARM64="generated_package_lists/${DIST}.arm64"
+readonly DEBIAN_DEP_LIST_ARMEL="generated_package_lists/${DIST}.armel"
readonly DEBIAN_DEP_LIST_MIPS="generated_package_lists/${DIST}.mipsel"
readonly DEBIAN_DEP_LIST_MIPS64EL="generated_package_lists/${DIST}.mips64el"
@@ -102,7 +104,10 @@ DownloadOrCopyNonUniqueFilename() {
local hash="$(echo "$url" | sha256sum | cut -d' ' -f1)"
DownloadOrCopy "${url}" "${dest}.${hash}"
- cp "${dest}.${hash}" "$dest"
+ # cp the file to prevent having to redownload it, but mv it to the
+ # final location so that it's atomic.
+ cp "${dest}.${hash}" "${dest}.$$"
+ mv "${dest}.$$" "${dest}"
}
DownloadOrCopy() {
@@ -117,10 +122,25 @@ DownloadOrCopy() {
SubBanner "downloading from $1 -> $2"
# Appending the "$$" shell pid is necessary here to prevent concurrent
# instances of sysroot-creator.sh from trying to write to the same file.
- # --create-dirs is added in case there are slashes in the filename, as can
- # happen with the "debian/security" release class.
- curl -L "$1" --create-dirs -o "${2}.partial.$$"
- mv "${2}.partial.$$" $2
+ local temp_file="${2}.partial.$$"
+ # curl --retry doesn't retry when the page gives a 4XX error, so we need to
+ # manually rerun.
+ for i in {1..10}; do
+ # --create-dirs is added in case there are slashes in the filename, as can
+ # happen with the "debian/security" release class.
+ local http_code=$(curl -L "$1" --create-dirs -o "${temp_file}" \
+ -w "%{http_code}")
+ if [ ${http_code} -eq 200 ]; then
+ break
+ fi
+ echo "Bad HTTP code ${http_code} when downloading $1"
+ rm -f "${temp_file}"
+ sleep $i
+ done
+ if [ ! -f "${temp_file}" ]; then
+ exit 1
+ fi
+ mv "${temp_file}" $2
else
SubBanner "copying from $1"
cp "$1" "$2"
@@ -148,6 +168,9 @@ SetEnvironmentVariables() {
*ARM64)
ARCH=ARM64
;;
+ *ARMEL)
+ ARCH=ARMEL
+ ;;
*)
echo "ERROR: Unable to determine architecture based on: $1"
exit 1
@@ -235,7 +258,6 @@ GeneratePackageListCommon() {
local packages="$3"
local dists="${DIST} ${DIST_UPDATES:-}"
- local repos="main ${REPO_EXTRA:-}"
local list_base="${BUILD_DIR}/Packages.${DIST}_${arch}"
> "${list_base}" # Create (or truncate) a zero-length file.
@@ -267,6 +289,11 @@ GeneratePackageListARM64() {
${DEBIAN_PACKAGES_ARM64:=}"
}
+GeneratePackageListARMEL() {
+ GeneratePackageListCommon "$1" armel "${DEBIAN_PACKAGES}
+ ${DEBIAN_PACKAGES_ARMEL:=}"
+}
+
GeneratePackageListMips() {
GeneratePackageListCommon "$1" mipsel "${DEBIAN_PACKAGES}"
}
@@ -327,12 +354,27 @@ HacksAndPatchesCommon() {
nm -D --defined-only --with-symbol-versions "${libc_so}" | \
"${SCRIPT_DIR}/find_incompatible_glibc_symbols.py" >> "${glob_h}"
+ # fcntl64() was introduced in glibc 2.28. Make sure to use fcntl() instead.
+ local fcntl_h="${INSTALL_ROOT}/usr/include/fcntl.h"
+ sed -i '{N; s/#ifndef \(__USE_FILE_OFFSET64\nextern int fcntl\)/#ifdef \1/}' \
+ "${fcntl_h}"
+ # On i386, fcntl() was updated in glibc 2.28.
+ nm -D --defined-only --with-symbol-versions "${libc_so}" | \
+ "${SCRIPT_DIR}/find_incompatible_glibc_symbols.py" >> "${fcntl_h}"
+
# This is for chrome's ./build/linux/pkg-config-wrapper
# which overwrites PKG_CONFIG_LIBDIR internally
SubBanner "Move pkgconfig scripts"
mkdir -p ${INSTALL_ROOT}/usr/lib/pkgconfig
mv ${INSTALL_ROOT}/usr/lib/${arch}-${os}/pkgconfig/* \
${INSTALL_ROOT}/usr/lib/pkgconfig
+
+ # Temporary workaround for invalid implicit conversion from void* in pipewire.
+ # This is already fixed upstream in [1], so this can be removed once it rolls
+ # into Debian.
+ # [1] https://github.com/PipeWire/pipewire/commit/371da358d1580dc06218d18a12a99611cac39e4e
+ local pipewire_utils_h="${INSTALL_ROOT}/usr/include/pipewire/utils.h"
+ sed -i 's/malloc/(struct spa_pod*)malloc/' "${pipewire_utils_h}"
}
@@ -350,13 +392,15 @@ HacksAndPatchesARM() {
HacksAndPatchesCommon arm linux-gnueabihf arm-linux-gnueabihf-strip
}
-
HacksAndPatchesARM64() {
# Use the unstripped libdbus for arm64 to prevent linker errors.
# https://bugs.chromium.org/p/webrtc/issues/detail?id=8535
HacksAndPatchesCommon aarch64 linux-gnu true
}
+HacksAndPatchesARMEL() {
+ HacksAndPatchesCommon arm linux-gnueabi arm-linux-gnueabi-strip
+}
HacksAndPatchesMips() {
HacksAndPatchesCommon mipsel linux-gnu mipsel-linux-gnu-strip
@@ -423,6 +467,7 @@ CleanupJailSymlinks() {
if [ "${ARCH}" != "MIPS" ]; then
libdirs="${libdirs} lib64"
fi
+
find $libdirs -type l -printf '%p %l\n' | while read link target; do
# skip links with non-absolute paths
echo "${target}" | grep -qs ^/ || continue
@@ -485,6 +530,9 @@ VerifyLibraryDepsARM64() {
VerifyLibraryDepsCommon aarch64 linux-gnu
}
+VerifyLibraryDepsARMEL() {
+ VerifyLibraryDepsCommon arm linux-gnueabi
+}
VerifyLibraryDepsMips() {
VerifyLibraryDepsCommon mipsel linux-gnu
@@ -577,6 +625,26 @@ BuildSysrootARM64() {
}
#@
+#@ BuildSysrootARMEL
+#@
+#@ Build everything and package it
+BuildSysrootARMEL() {
+ if [ "$HAS_ARCH_ARMEL" = "0" ]; then
+ return
+ fi
+ ClearInstallDir
+ local package_file="${DEBIAN_DEP_LIST_ARMEL}"
+ GeneratePackageListARMEL "$package_file"
+ local files_and_sha256sums="$(cat ${package_file})"
+ StripChecksumsFromPackageList "$package_file"
+ InstallIntoSysroot ${files_and_sha256sums}
+ CleanupJailSymlinks
+ HacksAndPatchesARMEL
+ VerifyLibraryDepsARMEL
+ CreateTarBall
+}
+
+#@
#@ BuildSysrootMips
#@
#@ Build everything and package it
@@ -625,6 +693,7 @@ BuildSysrootAll() {
RunCommand BuildSysrootI386
RunCommand BuildSysrootARM
RunCommand BuildSysrootARM64
+ RunCommand BuildSysrootARMEL
RunCommand BuildSysrootMips
RunCommand BuildSysrootMips64el
}
@@ -678,6 +747,16 @@ UploadSysrootARM64() {
}
#@
+#@ UploadSysrootARMEL
+#@
+UploadSysrootARMEL() {
+ if [ "$HAS_ARCH_ARMEL" = "0" ]; then
+ return
+ fi
+ UploadSysroot "$@"
+}
+
+#@
#@ UploadSysrootMips
#@
UploadSysrootMips() {
@@ -706,6 +785,7 @@ UploadSysrootAll() {
RunCommand UploadSysrootI386 "$@"
RunCommand UploadSysrootARM "$@"
RunCommand UploadSysrootARM64 "$@"
+ RunCommand UploadSysrootARMEL "$@"
RunCommand UploadSysrootMips "$@"
RunCommand UploadSysrootMips64el "$@"
@@ -812,6 +892,9 @@ PrintArchitectures() {
if [ "$HAS_ARCH_ARM64" = "1" ]; then
echo ARM64
fi
+ if [ "$HAS_ARCH_ARMEL" = "1" ]; then
+ echo ARMEL
+ fi
if [ "$HAS_ARCH_MIPS" = "1" ]; then
echo Mips
fi
diff --git a/chromium/build/linux/sysroot_scripts/sysroots.json b/chromium/build/linux/sysroot_scripts/sysroots.json
index d49621ce045..a24042de351 100644
--- a/chromium/build/linux/sysroot_scripts/sysroots.json
+++ b/chromium/build/linux/sysroot_scripts/sysroots.json
@@ -1,31 +1,36 @@
{
"sid_amd64": {
- "Sha1Sum": "e7c53f04bd88d29d075bfd1f62b073aeb69cbe09",
+ "Sha1Sum": "bcc994cc6e5d4d6f0eec8b44e7f0a65f5a1a7b90",
"SysrootDir": "debian_sid_amd64-sysroot",
"Tarball": "debian_sid_amd64_sysroot.tar.xz"
},
"sid_arm": {
- "Sha1Sum": "ef5c4f84bcafb7a3796d36bb1db7826317dde51c",
+ "Sha1Sum": "76e6068f9f6954e2ab1ff98ce5fa236d3d85bcbd",
"SysrootDir": "debian_sid_arm-sysroot",
"Tarball": "debian_sid_arm_sysroot.tar.xz"
},
"sid_arm64": {
- "Sha1Sum": "953c2471bc7e71a788309f6c2d2003e8b703305d",
+ "Sha1Sum": "1b47b4930e197ab92d67c5fad1246cf27fa3b0ab",
"SysrootDir": "debian_sid_arm64-sysroot",
"Tarball": "debian_sid_arm64_sysroot.tar.xz"
},
+ "sid_armel": {
+ "Sha1Sum": "6f2b39bdf73db9d378c5309f4a7ec050b97e771e",
+ "SysrootDir": "debian_sid_armel-sysroot",
+ "Tarball": "debian_sid_armel_sysroot.tar.xz"
+ },
"sid_i386": {
- "Sha1Sum": "9e6279438ece6fb42b5333ca90d5e9d0c188a403",
+ "Sha1Sum": "632bb77cc527cc90b94a302f550d99e99baaab87",
"SysrootDir": "debian_sid_i386-sysroot",
"Tarball": "debian_sid_i386_sysroot.tar.xz"
},
"sid_mips": {
- "Sha1Sum": "958731a68a169631c0450efb15410ccc4135ef2a",
+ "Sha1Sum": "8d58231734ef581d33e3ff620cfa3d6ff7a7d964",
"SysrootDir": "debian_sid_mips-sysroot",
"Tarball": "debian_sid_mips_sysroot.tar.xz"
},
"sid_mips64el": {
- "Sha1Sum": "51ca1f4092ac76ad1a1da953f0f3ce1aea947a42",
+ "Sha1Sum": "2a44ca6e7e1f442ed2f29c84805637c278cbe2a2",
"SysrootDir": "debian_sid_mips64el-sysroot",
"Tarball": "debian_sid_mips64el_sysroot.tar.xz"
}
diff --git a/chromium/build/sanitizers/tsan_suppressions.cc b/chromium/build/sanitizers/tsan_suppressions.cc
index 52fa68d2e83..36f213bcffa 100644
--- a/chromium/build/sanitizers/tsan_suppressions.cc
+++ b/chromium/build/sanitizers/tsan_suppressions.cc
@@ -47,11 +47,7 @@ char kTSanDefaultSuppressions[] =
// http://crbug.com/246968
"race:webrtc::VideoCodingModuleImpl::RegisterPacketRequestCallback\n"
- // http://crbug.com/257396
- "race:base::trace_event::"
-
// http://crbug.com/258479
- "race:SamplingStateScope\n"
"race:g_trace_state\n"
// http://crbug.com/268924
diff --git a/chromium/build/symlink.py b/chromium/build/symlink.py
index 12942aa1706..6c0586b9f8a 100755
--- a/chromium/build/symlink.py
+++ b/chromium/build/symlink.py
@@ -60,7 +60,7 @@ def Main(argv):
stderr=subprocess.STDOUT)
else:
os.symlink(s, t)
- except OSError, e:
+ except OSError as e:
if e.errno == errno.EEXIST and options.force:
if os.path.isdir(t):
shutil.rmtree(t, ignore_errors=True)
@@ -69,7 +69,7 @@ def Main(argv):
os.symlink(s, t)
else:
raise
- except subprocess.CalledProcessError, e:
+ except subprocess.CalledProcessError as e:
# Since subprocess.check_output does not return an easily checked error
# number, in the 'force' case always assume it is 'file already exists'
# and retry.
diff --git a/chromium/build/toolchain/clang_code_coverage_wrapper.py b/chromium/build/toolchain/clang_code_coverage_wrapper.py
index 7d5daa409ab..36a5e9aa775 100755
--- a/chromium/build/toolchain/clang_code_coverage_wrapper.py
+++ b/chromium/build/toolchain/clang_code_coverage_wrapper.py
@@ -58,21 +58,21 @@ _COVERAGE_FLAGS = [
'-mllvm', '-limited-coverage-experimental=true'
]
+# Files that should not be built with coverage flags by default.
+_DEFAULT_COVERAGE_EXCLUSION_LIST = []
+
# Map of exclusion lists indexed by target OS.
# If no target OS is defined, or one is defined that doesn't have a specific
-# entry, use the 'default' exclusion_list. Anything added to 'default' will
-# apply to all platforms that don't have their own specific list.
+# entry, use _DEFAULT_COVERAGE_EXCLUSION_LIST.
_COVERAGE_EXCLUSION_LIST_MAP = {
- 'default': [],
'linux': [
# These files caused a static initializer to be generated, which
# shouldn't.
# TODO(crbug.com/990948): Remove when the bug is fixed.
- '../../chrome/browser/media/router/providers/cast/cast_internal_message_util.cc', #pylint: disable=line-too-long
+ '../../chrome/browser/media/router/providers/cast/cast_internal_message_util.cc', #pylint: disable=line-too-long
'../../chrome/common/media_router/providers/cast/cast_media_source.cc',
'../../components/cast_channel/cast_channel_enum.cc',
- '../../components/cast_channel/cast_message_util.cc'
-
+ '../../components/cast_channel/cast_message_util.cc',
],
'chromeos': [
# These files caused clang to crash while compiling them. They are
@@ -81,10 +81,12 @@ _COVERAGE_EXCLUSION_LIST_MAP = {
'../../third_party/icu/source/common/uts46.cpp',
'../../third_party/icu/source/common/ucnvmbcs.cpp',
'../../base/android/android_image_reader_compat.cc',
- ]
+ ],
+ 'win': [],
}
+
def _remove_flags_from_command(command):
# We need to remove the coverage flags for this file, but we only want to
# remove them if we see the exact sequence defined in _COVERAGE_FLAGS.
@@ -128,25 +130,27 @@ def main():
if not any('clang' in s for s in compile_command):
return subprocess.call(compile_command)
+ target_os = parsed_args.target_os
+
try:
# The command is assumed to use Clang as the compiler, and the path to the
# source file is behind the -c argument, and the path to the source path is
# relative to the root build directory. For example:
# clang++ -fvisibility=hidden -c ../../base/files/file_path.cc -o \
# obj/base/base/file_path.o
- index_dash_c = compile_command.index('-c')
+ # On Windows, clang-cl.exe uses /c instead of -c.
+ source_flag = '/c' if target_os == 'win' else '-c'
+ source_flag_index = compile_command.index(source_flag)
except ValueError:
- print('-c argument is not found in the compile command.')
+ print('%s argument is not found in the compile command.' % source_flag)
raise
- if index_dash_c + 1 >= len(compile_command):
+ if source_flag_index + 1 >= len(compile_command):
raise Exception('Source file to be compiled is missing from the command.')
- compile_source_file = compile_command[index_dash_c + 1]
- target_os = parsed_args.target_os
- if target_os not in _COVERAGE_EXCLUSION_LIST_MAP:
- target_os = 'default'
- exclusion_list = _COVERAGE_EXCLUSION_LIST_MAP[target_os]
+ compile_source_file = compile_command[source_flag_index + 1]
+ exclusion_list = _COVERAGE_EXCLUSION_LIST_MAP.get(
+ target_os, _DEFAULT_COVERAGE_EXCLUSION_LIST)
if compile_source_file in exclusion_list:
_remove_flags_from_command(compile_command)
diff --git a/chromium/build/toolchain/cros/BUILD.gn b/chromium/build/toolchain/cros/BUILD.gn
index 5a9561f2320..0740fa23f29 100644
--- a/chromium/build/toolchain/cros/BUILD.gn
+++ b/chromium/build/toolchain/cros/BUILD.gn
@@ -125,7 +125,7 @@ gcc_toolchain("host") {
is_clang = cros_host_is_clang
current_cpu = host_cpu
current_os = "linux"
- use_sysroot = false
+ use_sysroot = use_sysroot
}
}
@@ -168,6 +168,6 @@ gcc_toolchain("v8_snapshot") {
}
v8_current_cpu = v8_target_cpu
current_os = "linux"
- use_sysroot = false
+ use_sysroot = use_sysroot
}
}
diff --git a/chromium/build/toolchain/goma.gni b/chromium/build/toolchain/goma.gni
index 2fbf5723897..ba54c4e80d8 100644
--- a/chromium/build/toolchain/goma.gni
+++ b/chromium/build/toolchain/goma.gni
@@ -27,3 +27,6 @@ declare_args() {
}
}
}
+
+assert(!is_win || !use_goma || is_clang,
+ "cl.exe does not work on goma, use clang")
diff --git a/chromium/build/toolchain/mac/BUILD.gn b/chromium/build/toolchain/mac/BUILD.gn
index c58a13cb10a..7acb24b6afe 100644
--- a/chromium/build/toolchain/mac/BUILD.gn
+++ b/chromium/build/toolchain/mac/BUILD.gn
@@ -153,7 +153,7 @@ template("mac_toolchain") {
rebase_path("//build/toolchain/mac/linker_driver.py", root_build_dir)
# Specify an explicit path for the strip binary.
- _strippath = "$mac_bin_path" + "strip"
+ _strippath = mac_bin_path + "strip"
linker_driver += " -Wcrl,strippath," + _strippath
if (mac_deterministic_build) {
@@ -192,7 +192,6 @@ template("mac_toolchain") {
dsym_output_dir =
"{{root_out_dir}}/{{target_output_name}}{{output_extension}}.dSYM"
dsym_output = [
- "$dsym_output_dir/",
"$dsym_output_dir/Contents/Info.plist",
"$dsym_output_dir/Contents/Resources/DWARF/" +
"{{target_output_name}}{{output_extension}}",
@@ -276,7 +275,7 @@ template("mac_toolchain") {
rspfile_content = "{{inputs_newline}}"
# Specify explicit path for libtool.
- libtool = "$mac_bin_path" + "libtool"
+ libtool = mac_bin_path + "libtool"
command = "rm -f {{output}} && TOOL_VERSION=${tool_versions.filter_libtool} python $script $libtool -static {{arflags}} -o {{output}} -filelist $rspfile"
description = "LIBTOOL-STATIC {{output}}"
outputs = [
@@ -307,8 +306,8 @@ template("mac_toolchain") {
# search path in /usr/bin are thin wrappers around xcrun, which requires a
# full CommandLineTools or Xcode install, and still may not choose the
# appropriate binary if there are multiple installs.
- otool = "$mac_bin_path" + "otool"
- nm = "$mac_bin_path" + "nm"
+ otool = mac_bin_path + "otool"
+ nm = mac_bin_path + "nm"
does_reexport_command = "[ ! -e \"$dylib\" -o ! -e \"$tocname\" ] || $otool -l \"$dylib\" | grep -q LC_REEXPORT_DYLIB"
diff --git a/chromium/build/toolchain/win/BUILD.gn b/chromium/build/toolchain/win/BUILD.gn
index de31ceb25cb..25e95f164a5 100644
--- a/chromium/build/toolchain/win/BUILD.gn
+++ b/chromium/build/toolchain/win/BUILD.gn
@@ -130,23 +130,55 @@ template("msvc_toolchain") {
# ninja does not have -t msvc other than windows, and lld doesn't depend on
# mt.exe in PATH on non-Windows, so it's not needed there anyways.
- if (defined(invoker.sys_lib_flags)) {
+ if (host_os != "win") {
linker_wrapper = ""
sys_lib_flags = "${invoker.sys_lib_flags} " # Note trailing space
- } else if (use_lld) {
+ } else if (defined(invoker.sys_lib_flags)) {
# Invoke ninja as wrapper instead of tool wrapper, because python
# 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, https://crbug.com/872740
linker_wrapper = "ninja -t msvc -e $env -- " # Note trailing space.
- sys_lib_flags = ""
+ sys_lib_flags = "${invoker.sys_lib_flags} " # Note trailing space
} else {
linker_wrapper =
"$python_path $tool_wrapper_path link-wrapper $env False " # Note trailing space.
sys_lib_flags = ""
}
+ if (defined(toolchain_args.use_clang_coverage)) {
+ toolchain_use_clang_coverage = toolchain_args.use_clang_coverage
+ } else {
+ toolchain_use_clang_coverage = use_clang_coverage
+ }
+
+ if (toolchain_use_clang_coverage) {
+ assert(toolchain_args.is_clang,
+ "use_clang_coverage should only be used with Clang")
+ if (defined(toolchain_args.coverage_instrumentation_input_file)) {
+ toolchain_coverage_instrumentation_input_file =
+ toolchain_args.coverage_instrumentation_input_file
+ } else {
+ toolchain_coverage_instrumentation_input_file =
+ coverage_instrumentation_input_file
+ }
+
+ coverage_wrapper =
+ rebase_path("//build/toolchain/clang_code_coverage_wrapper.py",
+ root_build_dir)
+ coverage_wrapper = coverage_wrapper + " --target-os=" + target_os
+ if (toolchain_coverage_instrumentation_input_file != "") {
+ coverage_wrapper =
+ coverage_wrapper + " --files-to-instrument=" +
+ rebase_path(toolchain_coverage_instrumentation_input_file,
+ root_build_dir)
+ }
+ coverage_wrapper = "$python_path " + coverage_wrapper + " "
+ } else {
+ coverage_wrapper = ""
+ }
+
tool("cc") {
precompiled_header_type = "msvc"
pdbname = "{{target_out_dir}}/{{label_name}}_c.pdb"
@@ -160,7 +192,7 @@ template("msvc_toolchain") {
"$object_subdir/{{source_name_part}}.obj",
]
- command = "$env_wrapper$cl /nologo /showIncludes $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\""
+ command = "$coverage_wrapper$env_wrapper$cl /nologo /showIncludes $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\""
}
tool("cxx") {
@@ -176,7 +208,7 @@ template("msvc_toolchain") {
"$object_subdir/{{source_name_part}}.obj",
]
- command = "$env_wrapper$cl /nologo /showIncludes $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\""
+ command = "$coverage_wrapper$env_wrapper$cl /nologo /showIncludes $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\""
}
tool("rc") {
@@ -356,21 +388,23 @@ template("win_toolchains") {
],
"scope")
- msvc_toolchain(target_name) {
- environment = "environment." + toolchain_arch
- cl = "${goma_prefix}\"${win_toolchain_data.vc_bin_dir}/cl.exe\""
- if (host_os != "win") {
- # For win cross build
- sys_lib_flags = "${win_toolchain_data.libpath_flags}"
- }
+ # The toolchain using MSVC only makes sense when not doing cross builds.
+ # Chromium exclusively uses the win_clang_ toolchain below, but V8 and
+ # WebRTC still use this MSVC toolchain in some cases.
+ if (host_os == "win") {
+ msvc_toolchain(target_name) {
+ environment = "environment." + toolchain_arch
+ cl = "${goma_prefix}\"${win_toolchain_data.vc_bin_dir}/cl.exe\""
- toolchain_args = {
- if (defined(invoker.toolchain_args)) {
- forward_variables_from(invoker.toolchain_args, "*")
+ toolchain_args = {
+ if (defined(invoker.toolchain_args)) {
+ forward_variables_from(invoker.toolchain_args, "*")
+ }
+ is_clang = false
+ use_clang_coverage = false
+ current_os = "win"
+ current_cpu = toolchain_arch
}
- is_clang = false
- current_os = "win"
- current_cpu = toolchain_arch
}
}
@@ -383,10 +417,7 @@ template("win_toolchains") {
cl = string_replace(cl, "/", "\\")
}
sys_include_flags = "${win_toolchain_data.include_flags_imsvc}"
- if (host_os != "win") {
- # For win cross build
- sys_lib_flags = "${win_toolchain_data.libpath_flags}"
- }
+ sys_lib_flags = "${win_toolchain_data.libpath_flags}"
toolchain_args = {
if (defined(invoker.toolchain_args)) {
diff --git a/chromium/build/toolchain/win/midl.py b/chromium/build/toolchain/win/midl.py
index ab04546aaec..6d6fab05a50 100644
--- a/chromium/build/toolchain/win/midl.py
+++ b/chromium/build/toolchain/win/midl.py
@@ -2,12 +2,14 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+from __future__ import division
from __future__ import print_function
import array
import difflib
import distutils.dir_util
import filecmp
+import io
import operator
import os
import re
@@ -18,6 +20,8 @@ import sys
import tempfile
import uuid
+from functools import reduce
+
def ZapTimestamp(filename):
contents = open(filename, 'rb').read()
@@ -45,66 +49,75 @@ def ZapTimestamp(filename):
# There might be more custom data after that, but these 3 blocks are always
# there for file-level metadata.
# All data is little-endian in the file.
- assert contents[0:8] == 'MSFT\x02\x00\x01\x00'
+ assert contents[0:8] == b'MSFT\x02\x00\x01\x00'
ntypes, = struct.unpack_from('<I', contents, 0x20)
custom_off, custom_len = struct.unpack_from(
'<II', contents, 0x54 + 4*ntypes + 11*16)
assert custom_len >= 0x54
# First: Type string (0x8), followed by 0x3e characters.
- assert contents[custom_off:custom_off+6] == '\x08\x00\x3e\x00\x00\x00'
+ assert contents[custom_off:custom_off + 6] == b'\x08\x00\x3e\x00\x00\x00'
assert re.match(
- 'Created by MIDL version 8\.\d\d\.\d{4} at ... Jan 1. ..:..:.. 2038\n',
- contents[custom_off+6:custom_off+6+0x3e])
+ br'Created by MIDL version 8\.\d\d\.\d{4} at ... Jan 1. ..:..:.. 2038\n',
+ contents[custom_off + 6:custom_off + 6 + 0x3e])
# Second: Type uint32 (0x13) storing 0x7fffffff (followed by WW / 0x57 pad)
assert contents[custom_off+6+0x3e:custom_off+6+0x3e+8] == \
- '\x13\x00\xff\xff\xff\x7f\x57\x57'
+ b'\x13\x00\xff\xff\xff\x7f\x57\x57'
# Third: Type uint32 (0x13) storing MIDL compiler version.
- assert contents[custom_off+6+0x3e+8:custom_off+6+0x3e+8+2] == '\x13\x00'
+ assert contents[custom_off + 6 + 0x3e + 8:custom_off + 6 + 0x3e + 8 +
+ 2] == b'\x13\x00'
# Replace "Created by" string with fixed string, and fixed MIDL version with
# 8.1.622 always.
- contents = (contents[0:custom_off+6] +
- 'Created by MIDL version 8.xx.xxxx at a redacted point in time\n' +
+ contents = (
+ contents[0:custom_off + 6] +
+ b'Created by MIDL version 8.xx.xxxx at a redacted point in time\n' +
# uint32 (0x13) val 0x7fffffff, WW, uint32 (0x13), val 0x0801026e, WW
- '\x13\x00\xff\xff\xff\x7f\x57\x57\x13\x00\x6e\x02\x01\x08\x57\x57' +
+ b'\x13\x00\xff\xff\xff\x7f\x57\x57\x13\x00\x6e\x02\x01\x08\x57\x57' +
contents[custom_off + 0x54:])
else:
contents = re.sub(
- 'File created by MIDL compiler version 8\.\d\d\.\d{4} \*/\r\n'
- '/\* at ... Jan 1. ..:..:.. 2038',
- 'File created by MIDL compiler version 8.xx.xxxx */\r\n'
- '/* at a redacted point in time',
- contents)
+ br'File created by MIDL compiler version 8\.\d\d\.\d{4} \*/\r\n'
+ br'/\* at ... Jan 1. ..:..:.. 2038',
+ br'File created by MIDL compiler version 8.xx.xxxx */\r\n'
+ br'/* at a redacted point in time', contents)
contents = re.sub(
- ' Oicf, W1, Zp8, env=(.....) \(32b run\), '
- 'target_arch=(AMD64|X86) 8\.\d\d\.\d{4}',
- ' Oicf, W1, Zp8, env=\\1 (32b run), target_arch=\\2 8.xx.xxxx',
+ br' Oicf, W1, Zp8, env=(.....) \(32b run\), '
+ br'target_arch=(AMD64|X86) 8\.\d\d\.\d{4}',
+ br' Oicf, W1, Zp8, env=\1 (32b run), target_arch=\2 8.xx.xxxx',
contents)
# TODO(thakis): If we need more hacks than these, try to verify checked-in
# outputs when we're using the hermetic toolchain.
# midl.exe older than 8.1.622 omit '//' after #endif, fix that:
- contents = contents.replace('#endif !_MIDL_USE_GUIDDEF_',
- '#endif // !_MIDL_USE_GUIDDEF_')
+ contents = contents.replace(b'#endif !_MIDL_USE_GUIDDEF_',
+ b'#endif // !_MIDL_USE_GUIDDEF_')
# midl.exe puts the midl version into code in one place. To have
# predictable output, lie about the midl version if it's not 8.1.622.
# This is unfortunate, but remember that there's beauty too in imperfection.
- contents = contents.replace('0x801026c, /* MIDL Version 8.1.620 */',
- '0x801026e, /* MIDL Version 8.1.622 */')
+ contents = contents.replace(b'0x801026c, /* MIDL Version 8.1.620 */',
+ b'0x801026e, /* MIDL Version 8.1.622 */')
open(filename, 'wb').write(contents)
def overwrite_cls_guid_h(h_file, dynamic_guid):
contents = open(h_file, 'rb').read()
- contents = re.sub('class DECLSPEC_UUID\("[^"]*"\)',
- 'class DECLSPEC_UUID("%s")' % str(dynamic_guid), contents)
+ contents = re.sub(br'class DECLSPEC_UUID\("[^"]*"\)',
+ br'class DECLSPEC_UUID("%s")' % str(dynamic_guid).encode(),
+ contents)
open(h_file, 'wb').write(contents)
def overwrite_cls_guid_iid(iid_file, dynamic_guid):
contents = open(iid_file, 'rb').read()
hexuuid = '0x%08x,0x%04x,0x%04x,' % dynamic_guid.fields[0:3]
- hexuuid += ','.join('0x%02x' % ord(b) for b in dynamic_guid.bytes[8:])
- contents = re.sub(r'MIDL_DEFINE_GUID\(CLSID, ([^,]*),[^)]*\)',
- r'MIDL_DEFINE_GUID(CLSID, \1,%s)' % hexuuid, contents)
+
+ # dynamic_guid.bytes is a bytestring in Py3, but a normal string in Py2.
+ if sys.version_info.major == 2:
+ hexuuid += ','.join('0x%02x' % ord(b) for b in dynamic_guid.bytes[8:])
+ else:
+ hexuuid += ','.join('0x%02x' % b for b in dynamic_guid.bytes[8:])
+
+ contents = re.sub(br'MIDL_DEFINE_GUID\(CLSID, ([^,]*),[^)]*\)',
+ br'MIDL_DEFINE_GUID(CLSID, \1,%s)' % hexuuid.encode(),
+ contents)
open(iid_file, 'wb').write(contents)
@@ -113,27 +126,34 @@ def overwrite_cls_guid_tlb(tlb_file, dynamic_guid):
# section contains type descriptions, and the first type should be our
# coclass. It points to the type's GUID in section 6, the GUID section.
contents = open(tlb_file, 'rb').read()
- assert contents[0:8] == 'MSFT\x02\x00\x01\x00'
+ assert contents[0:8] == b'MSFT\x02\x00\x01\x00'
ntypes, = struct.unpack_from('<I', contents, 0x20)
type_off, type_len = struct.unpack_from('<II', contents, 0x54 + 4*ntypes)
- assert ord(contents[type_off]) == 0x25, "expected coclass"
+
+ # contents is a bytestring in Python 3, but a normal string in Py2.
+ if sys.version_info.major == 2:
+ coclass = ord(contents[type_off])
+ else:
+ coclass = contents[type_off]
+ assert coclass == 0x25, "expected coclass"
+
guidind = struct.unpack_from('<I', contents, type_off + 0x2c)[0]
guid_off, guid_len = struct.unpack_from(
'<II', contents, 0x54 + 4*ntypes + 5*16)
assert guidind + 14 <= guid_len
- contents = array.array('c', contents)
+ contents = array.array('B', contents)
struct.pack_into('<IHH8s', contents, guid_off + guidind,
*(dynamic_guid.fields[0:3] + (dynamic_guid.bytes[8:],)))
# The GUID is correct now, but there's also a GUID hashtable in section 5.
# Need to recreate that too. Since the hash table uses chaining, it's
# easiest to recompute it from scratch rather than trying to patch it up.
- hashtab = [0xffffffff] * (0x80 / 4)
+ hashtab = [0xffffffff] * (0x80 // 4)
for guidind in range(guid_off, guid_off + guid_len, 24):
guidbytes, typeoff, nextguid = struct.unpack_from(
'<16sII', contents, guidind)
words = struct.unpack('<8H', guidbytes)
# midl seems to use the following simple hash function for GUIDs:
- guidhash = reduce(operator.xor, [w for w in words]) % (0x80 / 4)
+ guidhash = reduce(operator.xor, [w for w in words]) % (0x80 // 4)
nextguid = hashtab[guidhash]
struct.pack_into('<I', contents, guidind + 0x14, nextguid)
hashtab[guidhash] = guidind - guid_off
@@ -200,7 +220,7 @@ def main(arch, gendir, outdir, dynamic_guid, tlb, h, dlldata, iid, proxy, idl,
# to filter is pairs of lines that look like this:
# Processing C:\Program Files (x86)\Microsoft SDKs\...\include\objidl.idl
# objidl.idl
- lines = out.splitlines()
+ lines = out.decode('utf-8').splitlines()
prefixes = ('Processing ', '64 bit Processing ')
processing = set(os.path.basename(x)
for x in lines if x.startswith(prefixes))
@@ -224,11 +244,11 @@ def main(arch, gendir, outdir, dynamic_guid, tlb, h, dlldata, iid, proxy, idl,
tofile = os.path.join(tmp_dir, f)
print(''.join(
difflib.unified_diff(
- open(fromfile, 'U').readlines(),
- open(tofile, 'U').readlines(), fromfile, tofile)))
+ io.open(fromfile).readlines(),
+ io.open(tofile).readlines(), fromfile, tofile)))
delete_tmp_dir = False
print('To rebaseline:')
- print(' copy /y %s\* %s' % (tmp_dir, source))
+ print(r' copy /y %s\* %s' % (tmp_dir, source))
sys.exit(1)
return 0
finally:
diff --git a/chromium/build/toolchain/win/rc/rc.py b/chromium/build/toolchain/win/rc/rc.py
index 2eff7d2fa30..a01a5ab6c3f 100755
--- a/chromium/build/toolchain/win/rc/rc.py
+++ b/chromium/build/toolchain/win/rc/rc.py
@@ -162,7 +162,7 @@ def RunRc(preprocessed_output, is_utf8, flags):
rc_cmd.append('/fo' + flags.output)
if is_utf8:
rc_cmd.append('/utf-8')
- # TODO(thakis): rc currently always prints full paths for /showIncludes,
+ # TODO(thakis): cl currently always prints full paths for /showIncludes,
# but clang-cl /P doesn't. Which one is right?
if flags.show_includes:
rc_cmd.append('/showIncludes')
@@ -172,9 +172,65 @@ def RunRc(preprocessed_output, is_utf8, flags):
rc_cmd += flags.includes
p = subprocess.Popen(rc_cmd, stdin=subprocess.PIPE)
p.communicate(input=preprocessed_output)
+
+ if flags.show_includes and p.returncode == 0:
+ # Since tool("rc") can't have deps, add deps on this script and on rc.py
+ # and its deps here, so that rc edges become dirty if rc.py changes.
+ print('Note: including file: ../../build/toolchain/win/tool_wrapper.py')
+ print('Note: including file: ../../build/toolchain/win/rc/rc.py')
+ print(
+ 'Note: including file: ../../build/toolchain/win/rc/linux64/rc.sha1')
+ print('Note: including file: ../../build/toolchain/win/rc/mac/rc.sha1')
+ print(
+ 'Note: including file: ../../build/toolchain/win/rc/win/rc.exe.sha1')
+
return p.returncode
+def CompareToMsRcOutput(preprocessed_output, is_utf8, flags):
+ msrc_in = flags.output + '.preprocessed.rc'
+
+ # Strip preprocessor line markers.
+ preprocessed_output = re.sub(r'^#.*$', '', preprocessed_output, flags=re.M)
+ if is_utf8:
+ preprocessed_output = preprocessed_output.decode('utf-8').encode('utf-16le')
+ with open(msrc_in, 'wb') as f:
+ f.write(preprocessed_output)
+
+ msrc_out = flags.output + '_ms_rc'
+ msrc_cmd = ['rc', '/nologo', '/fo' + msrc_out]
+
+ # Make sure rc-relative resources can be found. rc.exe looks for external
+ # resource files next to the file, but the preprocessed file isn't where the
+ # input was.
+ # Note that rc searches external resource files in the order of
+ # 1. next to the input file
+ # 2. relative to cwd
+ # 3. next to -I directories
+ # Changing the cwd means we'd have to rewrite all -I flags, so just add
+ # the input file dir as -I flag. That technically gets the order of 1 and 2
+ # wrong, but in Chromium's build the cwd is the gn out dir, and generated
+ # files there are in obj/ and gen/, so this difference doesn't matter in
+ # practice.
+ if os.path.dirname(flags.input):
+ msrc_cmd += [ '-I' + os.path.dirname(flags.input) ]
+
+ # Microsoft rc.exe searches for referenced files relative to -I flags in
+ # addition to the pwd, so -I flags need to be passed both to both
+ # the preprocessor and rc.
+ msrc_cmd += flags.includes
+
+ # Input must come last.
+ msrc_cmd += [ msrc_in ]
+
+ rc_exe_exit_code = subprocess.call(msrc_cmd)
+ # Assert Microsoft rc.exe and rc.py produced identical .res files.
+ if rc_exe_exit_code == 0:
+ import filecmp
+ assert filecmp.cmp(msrc_out, flags.output)
+ return rc_exe_exit_code
+
+
def main():
# This driver has to do these things:
# 1. Parse flags.
@@ -185,7 +241,17 @@ def main():
flags = ParseFlags()
rc_file_data, is_utf8 = ReadInput(flags.input)
preprocessed_output = Preprocess(rc_file_data, flags)
- return RunRc(preprocessed_output, is_utf8, flags)
+ rc_exe_exit_code = RunRc(preprocessed_output, is_utf8, flags)
+
+ # 5. On Windows, we also call Microsoft's rc.exe and check that we produced
+ # the same output.
+ # Since Microsoft's rc has a preprocessor that only accepts 32 characters
+ # for macro names, feed the clang-preprocessed source into it instead
+ # of using ms rc's preprocessor.
+ if sys.platform == 'win32' and rc_exe_exit_code == 0:
+ rc_exe_exit_code = CompareToMsRcOutput(preprocessed_output, is_utf8, flags)
+
+ return rc_exe_exit_code
if __name__ == '__main__':
diff --git a/chromium/build/toolchain/win/tool_wrapper.py b/chromium/build/toolchain/win/tool_wrapper.py
index 3834cf2c01a..e5cc81b1fde 100644
--- a/chromium/build/toolchain/win/tool_wrapper.py
+++ b/chromium/build/toolchain/win/tool_wrapper.py
@@ -212,46 +212,11 @@ class WinTool(object):
def ExecRcWrapper(self, arch, *args):
"""Converts .rc files to .res files."""
env = self._GetEnv(arch)
-
- # We run two resource compilers:
- # 1. A custom one at build/toolchain/win/rc/rc.py which can run on
- # non-Windows, and which has /showIncludes support so we can track
- # dependencies (e.g. on .ico files) of .rc files.
- # 2. On Windows, regular Microsoft rc.exe, to make sure rc.py produces
- # bitwise identical output.
-
- # 1. Run our rc.py.
- # Also pass /showIncludes to track dependencies of .rc files.
args = list(args)
rcpy_args = args[:]
rcpy_args[0:1] = [sys.executable, os.path.join(BASE_DIR, 'rc', 'rc.py')]
- rcpy_res_output = rcpy_args[-2]
- assert rcpy_res_output.startswith('/fo')
- assert rcpy_res_output.endswith('.res')
- rc_res_output = rcpy_res_output + '_ms_rc'
- args[-2] = rc_res_output
rcpy_args.append('/showIncludes')
- rc_exe_exit_code = subprocess.call(rcpy_args, env=env)
- if rc_exe_exit_code == 0:
- # Since tool("rc") can't have deps, add deps on this script and on rc.py
- # and its deps here, so that rc edges become dirty if rc.py changes.
- print('Note: including file: ../../build/toolchain/win/tool_wrapper.py')
- print('Note: including file: ../../build/toolchain/win/rc/rc.py')
- print(
- 'Note: including file: ../../build/toolchain/win/rc/linux64/rc.sha1')
- print('Note: including file: ../../build/toolchain/win/rc/mac/rc.sha1')
- print(
- 'Note: including file: ../../build/toolchain/win/rc/win/rc.exe.sha1')
-
- # 2. Run Microsoft rc.exe.
- if sys.platform == 'win32' and rc_exe_exit_code == 0:
- rc_exe_exit_code = subprocess.call(args, shell=True, env=env)
- # Assert Microsoft rc.exe and rc.py produced identical .res files.
- if rc_exe_exit_code == 0:
- import filecmp
- # Strip "/fo" prefix.
- assert filecmp.cmp(rc_res_output[3:], rcpy_res_output[3:])
- return rc_exe_exit_code
+ return subprocess.call(rcpy_args, env=env)
def ExecActionWrapper(self, arch, rspfile, *dirname):
"""Runs an action command line from a response file using the environment
diff --git a/chromium/build/util/LASTCHANGE b/chromium/build/util/LASTCHANGE
index 8bd8d107246..6b8bbfa8331 100644
--- a/chromium/build/util/LASTCHANGE
+++ b/chromium/build/util/LASTCHANGE
@@ -1 +1 @@
-LASTCHANGE=c1109b707b1eda5d98eb2ed6bd74083bc352f482-refs/branch-heads/3904@{#917}
+LASTCHANGE=cd3a886c28f57603dea2a9050d2aadef3e8c30a4-refs/branch-heads/3945@{#1070}
diff --git a/chromium/build/util/LASTCHANGE.committime b/chromium/build/util/LASTCHANGE.committime
index 72cea2a3f00..c7b8003e8df 100644
--- a/chromium/build/util/LASTCHANGE.committime
+++ b/chromium/build/util/LASTCHANGE.committime
@@ -1 +1 @@
-1575594590 \ No newline at end of file
+1579744552 \ No newline at end of file
diff --git a/chromium/build/util/generate_wrapper.py b/chromium/build/util/generate_wrapper.py
index 339e15ec2bb..5a7d1ee8a2f 100755
--- a/chromium/build/util/generate_wrapper.py
+++ b/chromium/build/util/generate_wrapper.py
@@ -101,7 +101,7 @@ def Wrap(args):
template = SCRIPT_TEMPLATES[args.script_language]
wrapper_script.write(template.format(
script=py_contents))
- os.chmod(args.wrapper_script, 0750)
+ os.chmod(args.wrapper_script, 0o750)
return 0
diff --git a/chromium/build/util/lib/common/chrome_test_server_spawner.py b/chromium/build/util/lib/common/chrome_test_server_spawner.py
index 93ecb7127df..b556650e4c1 100644
--- a/chromium/build/util/lib/common/chrome_test_server_spawner.py
+++ b/chromium/build/util/lib/common/chrome_test_server_spawner.py
@@ -355,7 +355,7 @@ class SpawningServerRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
_logger.info('Test server is running on port %d forwarded to %d.' %
(new_server.forwarder_device_port, new_server.host_port))
port = new_server.forwarder_device_port
- assert not self.server.test_servers.has_key(port)
+ assert port not in self.server.test_servers
self.server.test_servers[port] = new_server
else:
new_server.Stop()
@@ -366,13 +366,13 @@ class SpawningServerRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
"""Stops the test server instance."""
try:
port = int(params['port'][0])
- except ValueError, KeyError:
+ except ValueError:
port = None
if port == None or port <= 0:
self._SendResponse(400, 'Invalid request.', {}, 'port must be specified')
return
- if not self.server.test_servers.has_key(port):
+ if port not in self.server.test_servers:
self._SendResponse(400, 'Invalid request.', {},
"testserver isn't running on port %d" % port)
return
diff --git a/chromium/build/util/version.gni b/chromium/build/util/version.gni
index ef52bf6ce64..81beb82481c 100644
--- a/chromium/build/util/version.gni
+++ b/chromium/build/util/version.gni
@@ -26,7 +26,7 @@ chrome_version_file = "//chrome/VERSION"
_script_arguments = []
-if (target_os == "mac") {
+if (is_mac) {
_version_dictionary_template += "patch_hi = @PATCH_HI@ patch_lo = @PATCH_LO@ "
_script_arguments += [
@@ -89,7 +89,7 @@ chrome_version_minor = _result.minor
chrome_version_build = _result.build
chrome_version_patch = _result.patch
-if (target_os == "mac") {
+if (is_mac) {
chrome_version_patch_hi = _result.patch_hi
chrome_version_patch_lo = _result.patch_lo
diff --git a/chromium/build/vs_toolchain.py b/chromium/build/vs_toolchain.py
index 3f250612864..c3503cc4763 100755
--- a/chromium/build/vs_toolchain.py
+++ b/chromium/build/vs_toolchain.py
@@ -25,10 +25,15 @@ json_data_file = os.path.join(script_dir, 'win_toolchain.json')
# VS versions are listed in descending order of priority (highest first).
MSVS_VERSIONS = collections.OrderedDict([
- ('2017', '15.0'),
('2019', '16.0'),
+ ('2017', '15.0'),
])
+# List of preferred VC toolset version based on MSVS
+MSVC_TOOLSET_VERSION = {
+ '2019' : 'VC142',
+ '2017' : 'VC141',
+}
def SetEnvironmentAndGetRuntimeDllDirs():
"""Sets up os.environ to use the depot_tools VS toolchain with gyp, and
@@ -241,14 +246,19 @@ def _CopyUCRTRuntime(target_dir, source_dir, target_cpu, dll_pattern, suffix):
exist, but the target directory does exist."""
if target_cpu == 'arm64':
# Windows ARM64 VCRuntime is located at {toolchain_root}/VC/Redist/MSVC/
- # {x.y.z}/[debug_nonredist/]arm64/Microsoft.VC141.CRT/.
+ # {x.y.z}/[debug_nonredist/]arm64/Microsoft.VC14x.CRT/.
+ # Select VC toolset directory based on Visual Studio version
vc_redist_root = FindVCRedistRoot()
if suffix.startswith('.'):
+ vc_toolset_dir = 'Microsoft.{}.CRT' \
+ .format(MSVC_TOOLSET_VERSION[GetVisualStudioVersion()])
source_dir = os.path.join(vc_redist_root,
- 'arm64', 'Microsoft.VC141.CRT')
+ 'arm64', vc_toolset_dir)
else:
+ vc_toolset_dir = 'Microsoft.{}.DebugCRT' \
+ .format(MSVC_TOOLSET_VERSION[GetVisualStudioVersion()])
source_dir = os.path.join(vc_redist_root, 'debug_nonredist',
- 'arm64', 'Microsoft.VC141.DebugCRT')
+ 'arm64', vc_toolset_dir)
for file_part in ('msvcp', 'vccorlib', 'vcruntime'):
dll = dll_pattern % file_part
target = os.path.join(target_dir, dll)
@@ -417,17 +427,14 @@ def _GetDesiredVsToolchainHashes():
* //docs/windows_build_instructions.md mentions of VS or Windows SDK.
Keeps the document consistent with the toolchain version.
"""
- env_version = GetVisualStudioVersion()
- if env_version == '2017':
- # VS 2017 Update 9 (15.9.12) with 10.0.18362 SDK, 10.0.17763 version of
- # Debuggers, and 10.0.17134 version of d3dcompiler_47.dll, with ARM64
- # libraries.
- toolchain_hash = '418b3076791776573a815eb298c8aa590307af63'
- # Third parties that do not have access to the canonical toolchain can map
- # canonical toolchain version to their own toolchain versions.
- toolchain_hash_mapping_key = 'GYP_MSVS_HASH_%s' % toolchain_hash
- return [os.environ.get(toolchain_hash_mapping_key, toolchain_hash)]
- raise Exception('Unsupported VS version %s' % env_version)
+ # VS 2019 Update 9 (16.3.29324.140) with 10.0.18362 SDK, 10.0.17763 version of
+ # Debuggers, and 10.0.17134 version of d3dcompiler_47.dll, with ARM64
+ # libraries.
+ toolchain_hash = '8f58c55897a3282ed617055775a77ec3db771b88'
+ # Third parties that do not have access to the canonical toolchain can map
+ # canonical toolchain version to their own toolchain versions.
+ toolchain_hash_mapping_key = 'GYP_MSVS_HASH_%s' % toolchain_hash
+ return [os.environ.get(toolchain_hash_mapping_key, toolchain_hash)]
def ShouldUpdateToolchain():
diff --git a/chromium/build/win/BUILD.gn b/chromium/build/win/BUILD.gn
index bd6224f245c..9be769fd075 100644
--- a/chromium/build/win/BUILD.gn
+++ b/chromium/build/win/BUILD.gn
@@ -17,6 +17,9 @@ windows_manifest("default_exe_manifest") {
}
if (is_win) {
+ assert(host_os != "mac" || target_cpu != "x86",
+ "Windows cross-builds from Mac must be 64-bit.")
+
action("copy_cdb_to_output") {
script = "//build/win/copy_cdb_to_output.py"
inputs = [
diff --git a/chromium/build/win/gn_meta_sln.py b/chromium/build/win/gn_meta_sln.py
index f97f47bde3c..862d278248f 100644
--- a/chromium/build/win/gn_meta_sln.py
+++ b/chromium/build/win/gn_meta_sln.py
@@ -90,7 +90,7 @@ for config in configs:
match_obj = re.match(project_pattern, sln_line)
if match_obj:
proj_name = match_obj.group(1)
- if not all_projects.has_key(proj_name):
+ if proj_name not in all_projects:
all_projects[proj_name] = []
all_projects[proj_name].append((config[0], match_obj.group(2),
match_obj.group(3)))